GoHighLevel Troubleshooting
Fix GoHighLevel tracking problems in AnyTrack. Find out why leads show as Unknown, pass the Click ID from an external form, stop recurring IP-match errors in the Events Log, and stop the GoHighLevel OrderFormPurchase event in Meta.
Use this page to fix GoHighLevel tracking problems in AnyTrack. Find your symptom in the table, then follow the fix in its section. To set up the integration, see GoHighLevel Integration. For the list of events and their default mapping, see GoHighLevel Events.
| Symptom | Cause | Fix |
|---|---|---|
| Leads show as Unknown or Direct in the Campaign Report | The contact has no Click ID | Leads Show as Unknown |
| Leads from Typeform, Jotform, Zapier, or Make show as Unknown | The Click ID does not reach the _atid field | Pass the Click ID from an External Form |
| Contacts from a CSV import do not create a lead, or manual and API contacts show as Unknown | AnyTrack skips CSV imports, and manual or API contacts have no click ID | Which Contacts Create a Lead |
Recurring Can't find match for IP errors in the Events Log | Events arrive without the Click ID | Recurring IP-Match Errors |
Meta shows OrderFormPurchase with no value | GoHighLevel sends the event from its own Meta Pixel field | Stop the OrderFormPurchase Event |
| Pipeline stage events do not reach Facebook Ads | The stage or the custom event is unmapped | Pipeline and Opportunity Tracking |
Leads Show as Unknown in the Campaign Report
Section titled “Leads Show as Unknown in the Campaign Report”Your GoHighLevel leads land under Unknown (or Direct) in the Campaign Report, but the contacts have UTM values in GoHighLevel. The most common cause is the way the contact enters GoHighLevel.
AnyTrack attributes a lead by matching it back to the browser session where the ad click happened. That session stores the click ID (_atid) and UTM data as first-party data. If an app creates the contact server-to-server (for example, Zapier or Make), the contact never had that tracked session. AnyTrack has no session to match the contact to, so AnyTrack reports the contact as Unknown. The Unknown source is the expected result, not a tracking error.
The diagram shows one lead on two paths. When the click ID travels with the form submission, AnyTrack attributes the lead. When the click ID is lost, the lead lands under Unknown.
The Click ID Fork: One Lead, Two Outcomes
Shared start:
- Visitor lands from an ad. Tools: Facebook Ads. Tracking Tag fires. AnyTrack starts a session, collects the click ID and UTM parameters, and stores them as first-party data on the visitor. Data: click ID collected (present), utm parameters (present), first-party session (present).
- Visitor fills an external form. Tools: Typeform, Jotform. The form sends the email and the answers. It sends the click ID only if the form collects it:
at_click_idin Typeform, a hidden field in Jotform.
The path splits here: is the click ID attached?
Path 1, working path: Click ID attached.
- Form submits with the click ID. The click ID leaves with the email and the answers. Data: email + data (present), click ID (present).
- Zapier creates the contact. Tools: Zapier, GoHighLevel. Zapier maps the click ID into the
_atidcustom field of the GoHighLevel contact. Data: click ID → _atid (present). - "Contact created" sends a
Lead. Tools: GoHighLevel, AnyTrack. TheLeadevent arrives with the click ID. Data: _atid (present).
Path 2, broken path: Click ID dropped.
- Form submits without the click ID. Only the email and the answers leave. Data: email + data (present), click ID (missing). Break point: The form does not collect the click ID, so the click ID is lost here. The connection to the next step breaks here.
- Zapier creates the contact. Tools: Zapier, GoHighLevel. Zapier creates the contact server-to-server, with no browser session and no click ID. Data: sessionSource: "Third Party", medium: "zapier".
- "Contact created" sends a
Lead. Tools: GoHighLevel, AnyTrack. TheLeadevent arrives with no click ID to match. Data: _atid (missing).
Both paths return to AnyTrack
Path 1 result: Attributed conversion. AnyTrack matches the click ID to the Facebook ad click, credits the campaign, and sends the conversion to your ad platform through the Conversion API.
Path 2 result: Unknown. AnyTrack records the lead but has no click ID to match. The lead lands under Unknown with no campaign credit, even when the contact has UTM values in GoHighLevel.
One field makes the difference. AnyTrack attributes the lead with the click ID, not with the UTM values on the GoHighLevel contact. Collect the click ID on the form and map it through Zapier into the _atid custom field: the same lead then becomes an attributed conversion.
Which Contacts Create a Lead
Section titled “Which Contacts Create a Lead”AnyTrack treats a new GoHighLevel contact differently, based on how the contact enters GoHighLevel.
| How the contact enters GoHighLevel | What AnyTrack does |
|---|---|
Native GoHighLevel funnel form with the _atid field | Records a Lead and attributes it to the ad click. |
| CSV import | Records no event. AnyTrack skips the Contact created event for a contact that GoHighLevel marks as a CSV import. |
| Manual entry, API, Zapier, or Make | Records a Lead. If the contact has no click ID, AnyTrack checks up to 4 times for one. Then AnyTrack matches the contact by phone number or email address. If no match exists, AnyTrack creates a server-side click ID, and the lead shows as Unknown. |
To confirm the cause, open the attribution source of the contact in GoHighLevel. A contact that a third-party tool created shows values such as sessionSource: "Third Party", medium: "zapier", and an empty _atid.
To fix it, make sure that the click ID travels with the lead:
- Best: collect the lead on a native GoHighLevel funnel form. Add the
_atidfield to that form (see Step 4: Add the Click ID Field to Your Forms). The Tracking Tag supplies the Click ID value, and GoHighLevel stores it on the contact. - If an automation must create the contact: pass the original click ID through the automation into the
_atidcustom field of the contact. Set the field in the same request that creates the contact. See Pass the Click ID from an External Form and Set the Click ID When You Create Contacts Through the API.
For the same problem on other CRMs, see Why Conversions Show as Unknown or Direct.
Pass the Click ID from an External Form
Section titled “Pass the Click ID from an External Form”AnyTrack joins two records:
- The session on your funnel or website: UTM parameters, traffic source, and first-party data.
- The offline events that GoHighLevel reports: contacts, orders, invoices, and opportunities.
The AnyTrack Click ID connects the two records. The Tracking Tag writes the Click ID onto the page URL as the _atid parameter, and GoHighLevel stores it in the _atid custom field of the contact.
The path of the Click ID to the _atid field depends on where the lead fills in the form:
- Native GoHighLevel form. The Tracking Tag supplies the value when the form carries the
_atidfield. Add the field to each form (see Step 4). - GoHighLevel form embedded on another website. Add the
_atidfield to the form, and install the Tracking Tag on the page that hosts the form. See Tracking Embedded Forms on External Websites. - External form, Zapier, or Make. GoHighLevel has no tracked session for the lead. Map the Click ID from the source platform into the
_atidcustom field. - Backend or API. A server that creates the contact through the GoHighLevel API must set the custom field with the field key
contact.atclid. See Set the Click ID When You Create Contacts Through the API.
Each source platform gives the Click ID under its own parameter:
| Source platform | Click ID parameter | Destination in GoHighLevel |
|---|---|---|
| Typeform | at_click_id | _atid custom field |
| Unbounce | click_id | _atid custom field |
| Elementor | click_id | _atid custom field |
| Calendly | utm_term or sfid | _atid custom field |
| LeadsHook | atclid | _atid custom field |
| Any standard HTML form | hidden field, value --CLICK-ID-- | _atid custom field |
In GoHighLevel, _atid is the display name of the custom field. The field key is contact.atclid.
Set the Click ID When You Create Contacts Through the API
Section titled “Set the Click ID When You Create Contacts Through the API”This section applies when a developer, an automation, or a backend creates GoHighLevel contacts. Examples are a quiz backend and a Zapier or Make scenario. These contacts have no tracked browser session, so the Click ID must travel with the request.
| Property of the field | Value |
|---|---|
| Display name | _atid |
| Field key | atclid (full key contact.atclid) |
- Connect the AnyTrack app to your GoHighLevel sub-account. AnyTrack creates the contact custom field when it connects. Do not create the field yourself. A new field with the key
_atidis a different field, and AnyTrack does not read it. - Collect the Click ID on your page. See Pass the Click ID from an External Form.
- Send the Click ID to your backend with the lead data.
- Set the AnyTrack custom field to the Click ID in the same request that creates the contact. Use the field key
contact.atclidto identify the field.
For the request format, read the GoHighLevel API documentation. AnyTrack documents only the field that it reads. For the Elementor integration, see Elementor. If your Elementor forms send leads to GoHighLevel without the Elementor integration, see GoHighLevel and Elementor. For the full pattern across every platform, see Pass the Click ID from External Forms to Your CRM.
Recurring Can’t Find Match for IP Errors
Section titled “Recurring Can’t Find Match for IP Errors”Recurring Can't find match for IP (No IP Match) errors in the Events Log mean that the conversions from GoHighLevel arrive without the AnyTrack click ID. AnyTrack then falls back to low-accuracy IP matching. AnyTrack does not send events with errors to your ad platforms, so recurring errors also lower your conversion counts in Facebook Ads and Google Ads.
Check these causes in order:
- A native form has no
_atidfield. Without the field, the contact holds no click ID, and every GoHighLevel event drops to IP matching. Add the field to each form (see Step 4). - An embedded or external form does not pass the click ID. Map the original click ID into the
_atidcustom field of the contact. See Pass the Click ID from an External Form. - A legacy manual-webhook setup sends the events. Old manual webhooks send conversions without the click ID. Install the AnyTrack app from the Integration Catalog, authenticate, and select your GoHighLevel sub-account. Run a test purchase, and verify an OK status in the Events Log. Then disable the old manual webhooks.
Meta Shows a GoHighLevel OrderFormPurchase Event
Section titled “Meta Shows a GoHighLevel OrderFormPurchase Event”GoHighLevel carries its own Meta Pixel field. When that field holds a Pixel ID, GoHighLevel triggers an OrderFormPurchase event on the order form. The browser sends that event. OrderFormPurchase is a GoHighLevel event. AnyTrack does not send it.
GoHighLevel sends the event without a value and without a currency. Meta then reports data-quality warnings on your dataset, and lists the price-data actions as High priority.
You can confirm the sender in Meta Events Manager. Open the Overview tab and read the Source column. OrderFormPurchase shows the Source Meta Pixel, because the browser sent it. AnyTrack conversions show the Source Conversions API. See Identify Which System Sent an Event.
To stop the event:
- Open the funnel settings in GoHighLevel and clear the Meta Pixel ID. GoHighLevel labels the field Facebook Pixel ID.
- Open the order form settings and clear the Meta Pixel ID.
- Open Settings > Integrations and disconnect the Facebook connection.
- Republish the funnel.
- Run a test purchase. Confirm that
Purchasearrives in Meta Events Manager with the SourceConversions API, a value, and a currency.
If you set up your Facebook Pixel in Tracking Pixels, AnyTrack loads it on your funnel pages. Your browser tracking then continues after you clear the field.
FAQ
FAQ was last reviewed on 2026-11-14
Why does the Events Log show errors after installation?
Why are my GoHighLevel conversions not appearing in AnyTrack?
Do I add the _atid field to a 1-Step Order Form?
_atid field to it. AnyTrack can still track the purchase. Keep the Tracking Tag in the head section of the funnel. Keep the AnyTrack app connected to the correct sub-account. If an earlier opt-in form supports custom fields, add the _atid field to that form. The contact then holds the Click ID. Without a Click ID on the contact, AnyTrack matches the purchase with reference data such as email, then with the IP address. These matches are less reliable than a Click ID. Run a test purchase, then verify the event in the Events Log.Why does the _atid value change between my funnel pages?
_atid URL parameter carries the AnyTrack Page Click ID. The Tracking Tag writes the value when the page loads, and the value includes the current minute. The Property ID and the Client ID stay the same; only the final 4 characters change, when the minute changes. AnyTrack identifies the visitor by the Client ID, so a changing value does not affect attribution. On a 2-step order form the page does not reload between the steps, so the value stays the same on both steps. A lead shows as Unknown only when the contact has no click ID at all, not when the value changes from page to page. See AnyTrack Identifiers.