GoHighLevel (GHL) — custom fields setup
Which custom fields to create in GHL, how they map to FlowMaticX lead data, and how to use the GHL integration node.
The FlowMaticX → GHL integration pushes lead data into your GoHighLevel CRM using the GHL API. To receive all FlowMaticX fields on a GHL contact, you need to create the matching custom fields in GHL first.
Go to GHL → Settings → Custom Fields → Add Field and create the following:
| Field name (GHL label) | Field key (used in API) | Type | Description |
|---|---|---|---|
| FlowMaticX Lead ID | flowmaticx_lead_id | Text | Internal FlowMaticX numeric ID for the lead |
| Lead Source | flowmaticx_source | Text | Where the lead came from: google_maps, prodb, instagram, tiktok, csv |
| Lead Category | flowmaticx_category | Text | Business category from the search (e.g. "Restaurant", "Dentist") |
| Lead Score | flowmaticx_score | Number | Opportunity score 0–100 calculated by AI (higher = better fit) |
| Campaign Name | flowmaticx_campaign | Text | Name of the FlowMaticX campaign that triggered this push |
| Sequence Name | flowmaticx_sequence | Text | Last sequence the lead was enrolled in |
| Pipeline Stage | flowmaticx_stage | Text | CRM stage in FlowMaticX: New / Contacted / Replied / Meeting / Won / Lost |
| Email Status | flowmaticx_email_status | Text | Email verification status: valid, risky, invalid |
| Star Rating | flowmaticx_star_rating | Number | Google Maps star rating (if sourced from Google Maps) |
| Review Count | flowmaticx_review_count | Number | Number of Google reviews |
| Website URL | flowmaticx_website | Text | Lead's website domain |
| LinkedIn URL | flowmaticx_linkedin | Text | LinkedIn profile URL (if available) |
| Last Contacted At | flowmaticx_last_contacted | Date | Timestamp of last email/WA sent |
| Cold Email Subject | flowmaticx_email_subject | Text | AI-generated cold email subject line |
| Icebreaker | flowmaticx_icebreaker | Textarea | AI-generated personalized opener |
| Field name | Field key | Type |
|---|---|---|
| FlowMaticX Job ID | fmx_job_id | Text |
| Source Keyword | fmx_keyword | Text |
| Source City | fmx_city | Text |
- In GHL, go to Settings → Business Profile → API Keys → Create a new key with Contacts and Opportunities write permissions
- Go to Settings → Locations → copy your Location ID (a 20-character alphanumeric string like
abc123XYZ...) - If pushing to a pipeline: go to Pipelines → click your pipeline → copy the Pipeline ID from the URL
In the automation builder, drag in a GHL node and fill in:
| Field | Value |
|---|---|
| API Key | Your GHL API key from Step 2 |
| Location ID | Your GHL Location ID |
| Action | upsert_contact (creates or updates by email) |
| Custom fields | Map FlowMaticX flowState variables to your GHL field keys |
json
{
"firstName": "{{lead.firstName}}",
"lastName": "{{lead.lastName}}",
"email": "{{lead.email}}",
"phone": "{{lead.phone}}",
"companyName": "{{lead.company}}",
"customField.flowmaticx_lead_id": "{{lead.id}}",
"customField.flowmaticx_source": "{{lead.source}}",
"customField.flowmaticx_score": "{{lead.score}}",
"customField.flowmaticx_stage": "{{lead.stage}}",
"customField.flowmaticx_icebreaker": "{{lead.icebreaker}}"
}
To also create or update an opportunity in a GHL pipeline, add a second GHL node with:
- Action:
upsert_opportunity - Pipeline ID: from Step 2
- Stage ID: the GHL stage that maps to your FlowMaticX stage (copy from the pipeline URL when you click a stage)
- Monetary value: optionally map
{{lead.dealValue}}if you've set a value on the lead
The GHL Create Task node creates a task on a GHL contact. Use it to trigger a follow-up call reminder:
| Field | Description |
|---|---|
| Contact ID | GHL contact ID (returned by the upsert_contact node as ghlContactId) |
| Title | Task title, supports merge tags |
| Due date | ISO 8601 datetime, e.g. {{now + 3 days}} |
| Assigned user ID | GHL user ID to assign the task to |
Here is a recommended automation that fires when a lead replies to your email:
- Trigger:
email.replied - GHL node (upsertcontact): update pipeline stage to `flowmaticxstage = Replied`
- GHL node (upsert_opportunity): move opportunity to "Replied" stage
- GHL Create Task: create a "Call {{firstName}}" task due in 2 hours
- wa.send_text: send WhatsApp congratulations/next-step message