Integrations

Connect GoHighLevel

Connect your GoHighLevel location with one authorization, no API keys to copy. Map contact, opportunity, appointment and form events onto your conversions, and push LeadJourney data back into GoHighLevel as contacts or opportunities.

Connecting GoHighLevel (HighLevel) turns CRM events (new contacts, opportunity changes, appointments, form and survey submissions) into LeadJourney conversions, automatically attributed to the campaign, ad set and ad that earned them. You authorize your GoHighLevel location once (no keys to copy), then map each event onto one of your conversion types. Mapped events flow through the same postback pipeline as your offline conversions, so they automatically pick up every ad postback you've already configured. The same screen also lets you send LeadJourney clicks, leads and conversions back into GoHighLevel.

Before you start

Have these ready so the connection works end to end:

  • An active LeadJourney workspace and a GoHighLevel location (sub-account) you can sign in to.
  • Tracking is live on your funnels and websites. This article covers the app connection; for the script itself see Install the tracking script on GoHighLevel.
  • An lj_click_id custom field on your contacts, filled by your forms (see the callout below).
  • At least one conversion type to map onto (e.g. WonClient). Set these up first in the Events Manager.

Where to find it

Open Settings → Apps, or go to app.leadjourney.io/settings?slug=apps. Click the GoHighLevel card to open the integration (the direct link uses the app key crm: ?slug=apps&app=crm). While you're not connected you'll see a “Connect your GoHighLevel account” card; once connected, the same screen shows your location, your triggers and the Send to GoHighLevel panel.

Step by step

Authorize LeadJourney from GoHighLevel

On the Connect your GoHighLevel account card, click Connect with GoHighLevel. You'll be redirected to GoHighLevel to sign in and approve LeadJourney's access for your location. There are no API keys to copy.

LeadJourney reads your records (contacts, opportunities) and receives webhook events to pick up changes in real time. After you approve, GoHighLevel sends you back and you'll see a “GoHighLevel connected” confirmation.

Syncing starts when you connect

LeadJourney tracks new GoHighLevel events from the moment you connect. Records and changes from before the connection are not imported.

Check the connection details

Once connected, the header shows a Live pill (or Needs reconnect if something breaks), plus Re-authorize and Disconnect buttons. Below it you'll see the Connection status, your Location name and ID, Active triggers (active out of total) and the Connected since date.

Add a trigger

In the Triggers panel (“Each trigger maps a GoHighLevel record event to one of your conversions.”) click Add trigger. The dialog is labelled New CRM trigger:

  1. App: CRM (your GoHighLevel connection, already selected).
  2. LeadJourney Event: pick the conversion type this event should record, e.g. WonClient. (No options? Create one under Settings → Events first.)
  3. Trigger: choose the GoHighLevel event from the card grid. Search triggers… narrows the list.
  4. Form or Survey (submission triggers only): pick which form or survey to watch. GoHighLevel has no submission webhook, so LeadJourney checks these submissions for you.
  5. Attribute changed (change triggers only, optional): choose a field and a Target value so the trigger only fires when the field changes to that value, e.g. an opportunity status changing to won. Fields with fixed options (such as status or pipeline stage) show a dropdown; leave Any value to fire on any change.

Click Continue.

Receive data and confirm the mapping

The dialog opens a three-tab flow:

  • Receive Data: click Find latest data to load the 3 most recent records for your trigger (for submission triggers: recent submissions of the chosen form). If no data appears, create one in GoHighLevel and check again, then click Continue with selected record.
  • Configure Mapping: map the record onto LeadJourney columns. New triggers start with Email, Name, Phone, click_id, Revenue and Currency, pre-filled where LeadJourney finds a likely match (e.g. email, phone, or monetaryValue on opportunities). Pick several paths for one column (joined with a space) or type static:value for a fixed value. Add custom field adds First name, Last name or a workspace custom field, or creates a new one.
  • Filtering (optional): click Add filter and set a Path, an Operator (e.g. equals, contains, greater than, exists) and a Value. The trigger only fires when every filter matches.

Click Save & Continue to finish, or Save and continue later to keep your progress.

How GoHighLevel records link to the right campaign

GoHighLevel forms run inside an iframe, so the tracking script can't read the submission. Carry the click ID in instead: (1) in GoHighLevel, go to Settings → Custom Fields → Add Field and create a Single Line field on the Contact named lj_click_id; (2) under Sites → Forms, open your form, add that field and switch it to Hidden. GoHighLevel fills hidden fields from the page URL, so the lj_click_id that LeadJourney's tracking adds to your landing page lands on every contact. On the Configure Mapping tab, point click_id at that field. No click ID? LeadJourney falls back to matching on email or phone.

Managing your triggers

Each trigger appears as a row (GoHighLevel event → conversion type) with an Active / Paused pill, the watched form name for submission triggers, and a summary of how many fields and filters it uses.

  • Pause / Resume: use the toggle to stop a trigger temporarily without deleting it.
  • Edit: change the event, form, condition, mapping, filters or target conversion.
  • Delete: type delete to confirm. The mapping and filters can't be recovered; other triggers keep running.
  • Add another: use Add trigger again to map more events onto different conversions.

Send data back to GoHighLevel

The Send to GoHighLevel panel pushes LeadJourney clicks, conversions and leads into GoHighLevel as contacts or deals, no Zapier needed. Click + Add destination, then:

  1. Create this GoHighLevel record: choose the object, e.g. Contact or Opportunity.
  2. When this happens: pick the LeadJourney event. For a conversion event you can narrow it with Conversion type, or leave it on Any conversion type.
  3. Write mode: Create, Update (only update an existing match, skip if none is found) or Upsert (update if a match exists, otherwise create). The modes offered depend on the object; Upsert is meant for contacts.
  4. Matching property (Update only): the property that identifies an existing record. Email is the usual choice for contacts. An opportunity has no email of its own, so pick Contact email or Contact phone to find it via its linked contact. In Update mode, only the properties you map are changed.
  5. Map fields: pick a GoHighLevel property (standard fields plus your location's custom fields), then the LeadJourney value to write. Select several values to join them with a space, or type a fixed value. Find latest data shows real example values; + Add field adds another row.

Click Create destination. Each row has Pause / Resume, Edit and Delete (existing GoHighLevel records are not affected). Sync history lists every delivery with its Status (Success, Failed or Skipped) and detail, with Retry for failed or skipped ones.

Write access

If the dialog says your connection “doesn't grant write access for this record type”, GoHighLevel didn't grant that permission when you connected, and those pushes will be rejected. Reconnect with Re-authorize in the header to grant it.

Reconnecting

If GoHighLevel revokes the app, the webhook subscription goes missing, or GoHighLevel is unreachable, the header flips to Needs reconnect and a banner explains why. Click Reconnect to re-run the authorization. To refresh granted permissions while everything still works, use Re-authorize. In both cases your triggers and settings are kept.

Disconnecting

To remove GoHighLevel, click Disconnect in the header. The confirmation is titled Disconnect CRM?: type disconnect and confirm with Disconnect CRM. This is deliberate because it's destructive:

Disconnect deletes your triggers

Disconnecting permanently disconnects your GoHighLevel location from the workspace, deletes every trigger and revokes the webhook subscription. Events stop flowing into your conversions immediately. You can reconnect later, but your trigger configuration won't be restored, so you'll set it up again.

Troubleshooting

No records when you click “Find latest data”?

Nothing recent exists for that trigger yet. Create a matching contact, opportunity or form submission in GoHighLevel, then click Find latest data again. For submission triggers, make sure you picked the right form first.

“No forms found in this GoHighLevel location”?

Either the location has no forms (or surveys) yet, or your connection can't read them yet. If permissions were added to the app since you connected, click Re-authorize so LeadJourney can read your forms.

Records come in but aren't attributed to a campaign?

Check that (1) the tracking script runs on your funnel or website, (2) your form has the hidden lj_click_id field and the trigger maps click_id to it, and (3) the trigger is Active. As a fallback, email or phone can be used to match.

Common questions