---
title: GoHighLevel SMS Form Migration — Replace Gravity Forms
type: article
created: '2026-04-05'
updated: '2026-04-05'
source_docs:
- raw/2025-12-19-weekly-call-w-110176541.md
tags:
- crazy-lennys
- gohighlevel
- sms-marketing
- gravity-forms
- zapier
- forms
- implementation
layer: 2
client_source: Crazy Lenny's E-Bikes
industry_context: ecommerce
transferable: false
---

# GoHighLevel SMS Form Migration — Replace Gravity Forms

## Overview

Crazy Lenny's is launching an SMS marketing program requiring a fresh opt-in list. The existing opt-in form was built in Gravity Forms by Jeff (the client's web contact), but Gravity Forms does not natively sync contacts into GoHighLevel (GHL) — where SMS campaigns will be managed. This article documents the decision to replace the Gravity Form with a native GHL form and the steps to implement it.

**Related client:** [[wiki/clients/current/crazy-lennys/_index]]

---

## Problem

- Jeff built an SMS opt-in form in Gravity Forms on the Crazy Lenny's website
- A QR code on printed flyers links to the page hosting this form
- Contacts who fill out the form **do not automatically sync into GoHighLevel**, where SMS campaigns will be executed
- The workaround (Zapier: Gravity Forms → GHL) adds unnecessary complexity and a dependency on a paid integration

---

## Decision

**Replace the Gravity Form with a native GoHighLevel form.**

A native GHL form auto-syncs submissions directly into GHL as contacts — no Zapier required. The existing page URL and QR code remain unchanged; only the embedded form code is swapped.

> "It might be easier than trying to use Zapier and stuff — just create the forms [in GHL]." — Mark Hope

---

## Implementation Steps

### 1. Create the SMS Opt-In Form in GoHighLevel
- Build a new form inside the Crazy Lenny's GHL sub-account
- Include the required SMS consent checkbox (explicit opt-in language, "Subscribe to SMS: Yes / No")
- Name the form something identifiable, e.g., **"SMS Opt-In Form"**

### 2. Add a Hidden Field for Source Tagging
- Add a hidden field named `source` (or similar)
- Set the default value to `SMS Form` (or the form name)
- This allows filtering/segmenting contacts in GHL by their opt-in origin

### 3. Map the SMS Consent Field
- In GHL, ensure a custom contact field exists: **SMS Approved** (Yes/No)
- When building the form, map the consent checkbox to this field
- GHL will populate `SMS Approved = Yes` on the contact record when the form is submitted

### 4. Generate and Deploy the Embed Code
- In GHL, retrieve the embed code for the new form
- Send the embed code to **Jeff** (Crazy Lenny's web contact)
- Jeff replaces the existing Gravity Form embed on the opt-in page with the new GHL embed code

### 5. Verify QR Code Continuity
- The QR code on printed flyers points to the **page URL**, not the form itself
- No changes to the QR code or the page URL are needed
- Confirm the page loads correctly with the new embedded form after deployment

### 6. Configure SMS Automation in GHL
- Set up a GHL workflow/automation triggered when a contact submits this form
- Automation should: tag the contact, set `SMS Approved = Yes`, and enroll them in the SMS campaign list

---

## Why Not Zapier?

| Approach | Pros | Cons |
|---|---|---|
| Gravity Forms + Zapier | Form already built | Extra cost, added failure point, manual mapping |
| Native GHL Form | Auto-sync, no middleware, field mapping built-in | Need to rebuild form in GHL (~30 min) |

The native GHL form approach is simpler, more reliable, and eliminates a recurring Zapier task dependency.

---

## Action Items

- [ ] **Karly** — Create the SMS opt-in form in GoHighLevel with hidden source field and SMS Approved field mapping
- [ ] **Karly** — Send GHL embed code to Jeff for deployment on the existing opt-in page
- [ ] **Karly** — Map `SMS Approved` checkbox field in GHL form settings
- [ ] **Karly** — Configure SMS enrollment automation in GHL triggered by form submission
- [ ] **Jeff** — Replace Gravity Form embed with new GHL form embed code on the opt-in page

---

## Notes

- SMS opt-in list must be built fresh — existing contacts **cannot** be bulk-subscribed without explicit opt-in (risk of carrier blocking)
- The flyers with QR codes are already printed; the page URL must remain stable
- Other Crazy Lenny's forms on the site are already native GHL forms (e.g., the Contact Us form) — this migration brings the SMS form in line with that pattern
- See also: [[wiki/knowledge/gohighlevel-form-embed-pattern]] for the general GHL embed workflow