GoHighLevel Integration

Set up the GoHighLevel and AnyTrack integration to automatically track conversions from forms, orders, invoices, and pipeline opportunities, then send that data server-side to Google Ads, Facebook Ads, and TikTok Ads.

What is the GoHighLevel Integration?

The AnyTrack integration for GoHighLevel automatically captures conversion data from forms, orders, invoices, and pipeline opportunities, then forwards it server-side to your ad platforms (Google Ads, Facebook Ads, TikTok Ads) for campaign optimization and attribution.

Before you begin

  • You have an active AnyTrack account
  • You have admin access to your GoHighLevel account
  • You can edit your website or funnel settings
  • You have admin access to your ad platform accounts
  • Your leads are captured on GoHighLevel funnel pages or native forms — if you use external forms or a Zapier-type import, see the note below

What the native GoHighLevel integration means for AnyTrack

The native integration works because contacts are created on GoHighLevel's own funnel pages or native forms, where the AnyTrack Tracking Tag runs and captures the click ID at session time. AnyTrack then matches the server-side conversion back to that visit.

If you instead capture leads on an external form (Typeform, Jotform) or push contacts in through Zapier or Make, that automatic link is broken — the contact is created with no tracked session and lands under Unknown. In that case, follow the Form Tracking guidelines: capture the AnyTrack click ID as a hidden field on the form and pass it into the contact's _atid custom field.

Setup Guide

Step 1: Create a New Property

  1. Navigate to your AnyTrack dashboard
  2. Create a new property
  3. Assign a descriptive name to the property
  4. Enter the main URL for your website or funnel
  5. Copy the AnyTrack Tracking Tag provided

Step 2: Install the AnyTrack Tracking Tag

  1. Log into your GoHighLevel account
  2. Navigate to the funnel you want to connect
  3. Open the funnel settings
  4. Locate the "Head Tracking Code" section
  5. Paste the AnyTrack Tracking Tag in the head tracking code field
  6. Save your settings
📘

Alternative Installation

You can also install the Tracking Tag using Google Tag Manager.

Step 3: Install the AnyTrack App in GoHighLevel

  1. Navigate to the AnyTrack Integration Catalog
  2. Search for "GoHighLevel" (or "HighLevel")
  3. Click "Install Integration"
  4. Select the property
  5. Click "Next" to proceed
  6. Authenticate with your GoHighLevel account
  7. Select the GoHighLevel sub-account to connect
  8. Save the integration settings

Step 4: Verify Your Setup

  1. Visit your funnel from a new browser window
  2. Navigate through the funnel as a potential customer would
  3. Submit a form or complete a checkout
  4. Open the AnyTrack dashboard and check the Event Log for recorded events
  5. Verify that the conversion data and attribution source appear correctly
📘

Pro Tip

Install the AnyTrack Pixel Helper Chrome extension to verify the AnyTrack Tracking Tag is working correctly and to see real-time client-side events.

Disconnect Other Integrations

Once the AnyTrack integration is active, you must disconnect any direct tracking integrations between GoHighLevel and your ad platforms to prevent duplicate conversions.

  1. Disable Facebook pixel tracking on your GoHighLevel forms and workflows
  2. Remove Google Ads conversion tags from GoHighLevel form submission automations
  3. Disable any direct TikTok or other ad platform tracking configured in GoHighLevel

AnyTrack handles all conversion data forwarding and deduplication. Keeping other integrations active alongside AnyTrack will result in duplicate conversions being sent to your ad platforms, which inflates your metrics and confuses the ad algorithms.

Important: Legacy Automations

If you previously set up AnyTrack with manual webhooks and automations in GoHighLevel, disable those automations. The app handles all webhook management automatically.

Conversion Events

AnyTrack tracks the following events from GoHighLevel. Events are organized into three categories: web tracking events (captured client-side by the Tracking Tag), standard server-side events (captured via the AnyTrack app), and advanced events that can be enabled in the integration settings.

Web Tracking Events

These events are automatically captured by the AnyTrack Tracking Tag installed on your funnel. They cannot be remapped.

GoHighLevel EventAnyTrack EventDescription
Form submitFormSubmitWhen a visitor submits a form
Initiate CheckoutInitiateCheckoutWhen a checkout page is loaded. For 2-step forms, triggered when the second step button is clicked.

Server-Side Events

These events are sent from GoHighLevel to AnyTrack via the app integration.

GoHighLevel EventAnyTrack EventDefault StatusDescription
Contact createdLead✅ EnabledWhen a new contact is added to GoHighLevel
Appointment createdSchedule✅ EnabledWhen a customer books an appointment or meeting
Order createdPurchase✅ EnabledWhen an order is completed (excludes upsells)
Order upsell createdUpsell✅ EnabledWhen a customer purchases an upsell
Invoice createdInitiateCheckout✅ EnabledWhen an invoice is created
Invoice fully paidPurchase✅ EnabledWhen an invoice is fully paid
Opportunity createdDealNew✅ EnabledWhen a new opportunity is created in a pipeline
Opportunity wonDealWon✅ EnabledWhen an opportunity status is changed to won

Advanced Events

These events are available in the integration settings but are unmapped by default. Enable them if your workflow requires tracking these actions.

GoHighLevel EventDefault StatusDescription
Invoice sent⚙️ UnmappedWhen an invoice is sent to the client
Invoice partially paid⚙️ UnmappedWhen an invoice is partially paid. The last payment triggers "Invoice fully paid" instead, with the full amount.
Opportunity status: open⚙️ UnmappedWhen an opportunity is opened or reopened
Pipeline stage changes⚙️ UnmappedIndividual stage transitions within your pipelines (see Pipeline Tracking below)

How Event Mapping Works

Event mapping in AnyTrack follows a two-step chain:

Step 1: GoHighLevel → AnyTrack — Each GoHighLevel event maps to an AnyTrack event (standard or custom). Once mapped, the event appears in your AnyTrack dashboard, reports, and becomes available in the ad platform event mapping section.

Step 2: AnyTrack → Ad Platforms . Each AnyTrack event can then be mapped to an ad platform event (standard or custom).

AnyTrack standard events like Purchase, Lead, and Schedule are automatically mapped to the corresponding standard events in your ad platforms. Custom events like DealNew and DealWon appear in the ad platform mapping section but require manual mapping before they flow to ad platforms.

Pipeline and Opportunity Tracking

AnyTrack integrates with GoHighLevel's pipeline and opportunity system to track deal progression as conversion events. This is especially useful for service businesses, agencies, and sales teams where conversions happen through a sales pipeline rather than a checkout page.

How It Works

When you connect the AnyTrack app, it automatically fetches your GoHighLevel pipelines and their stages. For each pipeline stage, AnyTrack creates a mapping entry in your integration settings so you can select which stages trigger conversion events.

For example, if you have a "Sales Pipeline" with stages "New Lead → Qualified → Proposal Sent → Closed Won", AnyTrack creates a mapping entry for each stage. You can then map "Closed Won" to an AnyTrack event like Purchase or a custom event, which then flows to your ad platforms.

Opportunity Data

When an opportunity event fires, AnyTrack captures and forwards:

  • Monetary value . the deal amount, passed as the conversion value to ad platforms
  • Contact data . email, phone, name, and location for enhanced matching
  • Opportunity details . opportunity name and ID for attribution tracking

This data enables your ad platforms to optimize campaigns based on actual deal values rather than just lead counts.

📘

Custom Events Require Manual Ad Platform Mapping

Pipeline stage events and opportunity events default to custom AnyTrack events. After enabling them, go to your ad platform integration settings in AnyTrack to map them to the appropriate ad platform events (standard or custom).

Advanced Configuration

Tracking Embedded Forms on External Websites

If you embed GoHighLevel forms on WordPress, Elementor, Unbounce, or other website builders, you need to add a custom field so AnyTrack can attribute form submissions back to the original traffic source.

  1. In GoHighLevel, go to CRM > Contacts and add a new custom field named _atid with scope set to "contact"
  2. Edit each embedded form and add the _atid custom field as a hidden field
  3. Make sure the AnyTrack Tracking Tag is installed in the head section of the external website

Leads Showing as "Unknown" in the Campaign Report

If your GoHighLevel leads land under Unknown (or Direct) in the Campaign Report even though the contacts have UTM values in GoHighLevel, the cause is almost always how the contact is created.

AnyTrack attributes a lead by matching it back to the browser session where the ad click happened — that session is what stores the click ID (_atid) and UTM data as first-party data. If a contact is created server-to-server (for example, pushed in by Zapier, Make, or another app), it never had that tracked session, so AnyTrack has nothing to match it to and correctly reports it as Unknown.

The diagram below shows both paths from a single lead: when the click ID travels with the form submission it attributes correctly, and when it is dropped it lands under Unknown.

The Click ID Fork: One Lead, Two Outcomes

Every GoHighLevel lead that comes through an external form (Typeform, Jotform) follows the same start. What decides whether it lands as an attributed conversion or as Unknown is one thing: does the AnyTrack click ID (_atid) travel with it?

1Visitor lands from FacebookFacebook AdTracking Tag fires
AnyTrack starts a session, captures the click ID and UTM parameters, and stores them as first-party data on the visitor.
click ID capturedutm parametersfirst-party session
2Visitor fills an external formTypeform / Jotform
This is the decision point. The form carries the email and answers — but the click ID only rides along if you add it as a hidden field.
⑂ The path splits here — is the click ID attached?
✓ Click ID attached (_atid)
3Form submits with the click ID
A hidden _atid field carries the AnyTrack click ID out with the submission.
email + data_atid
4Zapier → GoHighLevel
Zapier maps the hidden field into the GoHighLevel contact's _atid custom field (created when you installed the AnyTrack app).
_atid → GHL contact
5GHL "Contact created" → AnyTrack
The Lead event arrives carrying the click ID.
_atid present
✕ Click ID dropped
3Form submits without the click ID
No hidden field, so the session identifiers stay behind. Only the email and answers leave.
email + data_atid
4Zapier → GoHighLevel
Server-to-server: no browser, no session. The contact is created with no AnyTrack identifier.
sessionSource: "Third Party"medium: "zapier"
5GHL "Contact created" → AnyTrack
The Lead event arrives, but with no click ID to match on.
_atid
Both paths return to AnyTrack
🟢 Attributed conversion
AnyTrack matches the click ID to the original Facebook click, credits the right campaign, and forwards the conversion to your ad platform via the Conversion API.
🔴 Unknown
The lead is real and still recorded, but with nothing to match it falls under Unknown — no campaign credit, even though the contact has UTM values in GoHighLevel.
💡
The whole difference is one field. Attribution rides on the click ID, not the UTM values stored on the GoHighLevel contact. Capture _atid at the visit and carry it through the form and Zapier, and the same lead that would have been Unknown becomes fully attributed.
Shared tracked start Click ID carried → attributed Click ID dropped → Unknown

You can confirm this in the contact's source. A contact created by a third-party tool shows an attribution source like sessionSource: "Third Party", medium: "zapier" and an empty _atid.

To fix it, make sure the click ID travels with the lead:

  1. Best: capture the lead directly on a page that has the AnyTrack Tracking Tag (a native GHL funnel form). The click ID is set at session time and stored on the contact automatically.
  2. If an automation must create the contact: add the _atid hidden field to your form (see Tracking Embedded Forms above) and map it through your automation into the GoHighLevel contact's _atid custom field, so the original click ID is preserved.
⚠️

Warning

Reapplying the UTM template or running Verify Ads Settings will not fix Unknown leads created server-to-server. Those settings only affect ad-click sessions, not contacts injected by another app.

Tracking Calendar Links

If you share GoHighLevel calendar links via email or outside your website:

Add the Tracking Tag in the custom code section of the calendar settings.

Add the Tracking Tag in the custom code section of the calendar settings.

  1. Navigate to your calendar settings > Customization
  2. Paste the AnyTrack Tracking Tag in the Custom Code field
  3. Save the settings

Important: Team Calendars

Add the Tracking Tag to each team member's calendar settings individually.

FAQ and Troubleshooting

FAQ was last reviewed on 2026-06-02

No. The AnyTrack app automatically configures all necessary webhooks when you install it from the GoHighLevel marketplace. No manual webhook or automation setup is required.
No. AnyTrack can only track conversions that occur after a visitor session on your website. Historical data cannot be imported.
Go to your integration settings in AnyTrack and update the Event Mapping. For example, you can change Contact Created from Lead to CompleteRegistration, or map a pipeline stage to a custom event.
Pipeline stage events default to custom AnyTrack events, which require manual mapping to ad platform events. Go to your Facebook Ads integration settings in AnyTrack and map the custom event to a Facebook standard or custom event.
You must disable any direct pixel or tag-based tracking on your GoHighLevel forms to prevent duplicate conversions. AnyTrack handles all conversion forwarding and deduplication.
Check that the AnyTrack Tracking Tag is in the head section of each funnel, verify the app is properly connected, and confirm the correct GoHighLevel sub-account is selected. Some initial errors are normal if conversions were triggered before the integration was installed.
Verify the AnyTrack app is installed on the correct GoHighLevel sub-account and that the Tracking Tag is present on the funnel. Server-side events from GoHighLevel typically appear within seconds of the action occurring.
Because the contact was created server-to-server (for example, by Zapier or Make) instead of through a tracked visitor session. AnyTrack attributes a lead by matching it to the browser session where the click happened; a contact pushed in by another app never had that session, so it falls under Unknown. Capture the lead on a page with the AnyTrack Tracking Tag, or pass the original click ID into the GoHighLevel contact's _atid custom field. See Why Conversions Show as Unknown or Direct.