HighLevel

Connect HighLevel & set up workflow tracking

FunnelTrack captures HighLevel form submissions, orders, appointments, opportunities, and pipeline events server-side via HighLevel Workflows — each event you want to track is a Workflow with a Webhook action pointing at FunnelTrack. We stitch every event back to the visitor's ad session through the FunnelTrack pixel, so the conversion you fire to Meta, Google, TikTok, and the rest carries the original click ID, identity data, and session context.

Workflow Pro plan recommended
HighLevel charges per workflow execution. Each event you track through FunnelTrack is its own workflow firing on every matching event. To avoid surprise overage charges, pick a Workflow Pro plan tier that fits your monthly lead / conversion volume. HighLevel publishes the tiers and pricing here: Workflows Pro Plan — new pricing tiers.
What you'll need
  • A HighLevel account with Workflow Pro enabled (or another plan that includes the Webhook workflow action)
  • Admin access to the HighLevel sub-account you're tracking
  • The FunnelTrack pixel deployed on every page of your site — plus any third-party landing pages and HighLevel funnels / websites / stores you want to track
  • At least one connected destination (Meta CAPI, Google Ads, GA4, etc.)
  • About 5 minutes per workflow you create

Setup

Deploy the FunnelTrack pixel into every HighLevel funnel / website / store, then build one workflow per event type.

1

Deploy the FunnelTrack pixel

From the Pixel section of FunnelTrack, copy your pixel snippet and deploy it on every page of your site, plus any third-party landing pages that feed traffic into HighLevel.

In HighLevel, the pixel needs to be installed per asset — each funnel, website, and store separately. Open the asset and go to Settings → Tracking Code (called Head Tracking Code on some assets), paste the FunnelTrack pixel snippet, and save.

HighLevel funnel Settings showing the Head Tracking Code field with the FunnelTrack pixel snippet pasted in
Funnels → Edit → Head Tracking Code. Repeat on every funnel / website / store you want to track.
Why per-asset install?
HighLevel doesn't expose a sub-account-wide head code, so pixel deployment lives on the individual funnel / website / store. New funnels need the pixel added at launch — make it part of your template if you can.
2

Grab your FunnelTrack HighLevel webhook URL

In FunnelTrack, open Integrations → Sources → HighLevel and copy the Webhook URL shown on the connection page. This is the single endpoint every HighLevel workflow will post to.

FunnelTrack HighLevel source connection page with the workspace's webhook URL
A single FunnelTrack webhook URL serves every HighLevel workflow in your workspace.
Treat this URL like a secret
The webhook URL contains your workspace's API key. Don't paste it into public docs, screenshots, or shared spreadsheets — anyone with the URL can post events to your workspace.
3

Decide which HighLevel events you want to track

FunnelTrack supports these HighLevel events out of the box. Each one gets its own workflow in HighLevel and its own template card on the destination routing page in FunnelTrack:

EventWhen it fires
Form SubmissionFires when any HighLevel form is submitted.
Quiz SubmissionFires when a contact completes a HighLevel lead-gen quiz. Quiz answers come through as named fields on the payload.
Appointment BookedFires when a contact books an appointment on a HighLevel calendar.
Contact CreatedFires when a new contact is created in the sub-account.
Order SubmittedFires when a paid order completes (one-time products and subscriptions).
Pipeline Stage ChangedFires when an opportunity moves to a different pipeline stage.
Opportunity CreatedFires when a new opportunity lands in the pipeline.
Opportunity OpenFires when an opportunity is set to status = open.
Opportunity WonFires when an opportunity is set to status = won.
Opportunity LostFires when an opportunity is set to status = lost.
Opportunity AbandonedFires when an opportunity is set to status = abandoned.
4

Create a workflow for each event you want to track

In HighLevel, go to Automation → Workflows → Create Workflow for each event you want FunnelTrack to receive. Workflow construction is the same shape every time:

  1. Pick the triggerfor the event you're tracking. For a Form Submission event, the trigger is Form Submitted; for an Appointment Booked event, it's Customer Booked Appointment; and so on.
  2. Add a Webhook action as the next step in the workflow.
  3. Paste the FunnelTrack HighLevel webhook URL (from step 2) into the action's URL field.
  4. Add the event custom data keyon the webhook action — see step 5 for the value to use. This is how FunnelTrack knows which event type each payload is (HighLevel doesn't include the event type in the payload by default).
  5. Save and publish the workflow.
HighLevel Workflow editor showing a Webhook action configured with the FunnelTrack URL and a customData.event entry
The Webhook action with the FunnelTrack URL pasted in and an event custom data key configured.
5

Set the customData.event value on each webhook

On each workflow's Webhook action, add a Custom Data entry with key eventand the exact value from this table. The value tells FunnelTrack which event type the payload represents — without it, the event won't match a template card on the destination side.

EventcustomData.event value
Form Submissionform_submission
Quiz Submissionquiz_submission
Appointment Bookedappointment_booked
Contact Createdcontact_created
Order Submittedorder_submitted
Pipeline Stage Changedpipeline_stage_change
Opportunity Createdopportunity_created
Opportunity Openopportunity_open
Opportunity Wonopportunity_won
Opportunity Lostopportunity_lost
Opportunity Abandonedopportunity_abandoned
The value must match exactly
Lowercase, underscores between words, no spaces, no quotes. Typos like form_submitted, booked_appointment, or order-submittedwill be received but won't match the template cards, so the event won't route to any destination.
6

Enable destination events in FunnelTrack

Open a connected destination's routing page — e.g. HighLevel → Meta Conversions API. You'll see one template card per supported HighLevel event, grouped into Forms, Orders, Pipeline, and Opportunity sections. Toggle on the ones you want, pick the destination event for each (Meta's Lead / Purchase, a Google Ads conversion action, etc.), and save.

You can also click Add Event to create a custom card alongside the templates — useful when you want one HighLevel event to fire as different destination events under different conditions (e.g. lead-quality scoring, funnel-specific routing). The Add Event modal includes an Event Name field so per-workflow / per-funnel cards can be named distinctly in the routing list and usage logs.

FunnelTrack HighLevel → Meta routing page showing template cards grouped under Forms, Orders, Pipeline, and Opportunity
Template cards are auto-generated per event type. Toggle on the ones you want and pick a destination event.
7

(Optional) Map event parameters

Click + Add Parameters on a card to send additional fields to the destination. Parameters can be static (you type the value) or dynamic (pulled from the HighLevel payload via the field picker). Read more about using event parameters in FunnelTrack.

Every HighLevel workflow payload carries the same envelope (contact + attribution + workflow + customData), and event-specific fields for orders / opportunities / appointments. The full set of FunnelTrack-mappable payload fields:

CategoryPayload fields
Contactemail, phone, first_name, last_name, full_name, company_name, contact_type, contact_source, country, tags
AttributionattributionSource.utmSource, utmMedium, utmCampaign, utmContent, utmTerm, gclid, gbraid, wbraid, adId, adName, referrer, sessionSource, gaClientId, gaSessionId
Workflow / Custom Dataworkflow.id, workflow.name, customData.event
Pipeline / Opportunitystatus, lead_value, pipeline_id, pipeline_name, pipleline_stage, opportunity_name, opportunity_source
Orderorder.total_price, order.currency_code, order.payment_gateway, order.source, order.line_items[0].title, order.line_items[0].price, order.line_items[0].quantity, order.line_items[0].product_type
Pipeline + order fields only appear on relevant events
Pipeline and opportunity fields populate on opportunity / pipeline events. Order fields populate on Order Submitted. Mapping them to events that don't carry them is harmless — FunnelTrack simply omits empty values from the outbound payload.
8

(Optional) Set firing conditions

Use the Conditions section to gate the dispatch behind one or more rules on the HighLevel payload. Read more about using conditions in FunnelTrack. A few patterns customers run a lot:

  • Workflow-scoped lead events — fire only when workflow.name equals "Discovery Call Form" so each lead-gen workflow gets its own attribution rather than sharing one generic Form Submission event.
  • Pipeline-stage milestones — fire on Pipeline Stage Changed only when pipleline_stage equals "Demo Scheduled" (yes, HighLevel ships that field with the misspelling).
  • High-value order split — split Order Submitted into two cards, one with order.total_price > 500 firing a custom HighValuePurchase event, the other firing Purchase.
9

Test & deploy

Trigger a real test on the underlying funnel / store / calendar that your workflow fires from. Within a few seconds you should see an inbound row in the usage log labeled with the HighLevel event name (e.g. Form Submission, Order Submitted), followed by one outbound row per connected destination — each delivered to the destination event you mapped to.

FunnelTrack usage log showing an inbound HighLevel Form Submission followed by outbound Meta and TikTok Lead events, all delivered
Inbound row shows the HighLevel event; each outbound row shows the destination event you mapped to.

Notes & best practices

A few things worth knowing before you scale this across every workflow.

  • One workflow per event type. Build a separate HighLevel workflow for every event you want to track — each uses its own Trigger and its own customData.event value on the Webhook action. This is what HighLevel meters as executions, so the Workflow Pro tier you pick should reflect your expected monthly volume across all FunnelTrack workflows.
  • customData.event is the routing key.The whole integration hinges on this single value. Set it once per workflow, use the exact strings from the table in step 5, and FunnelTrack's template cards do the rest.
  • Pixel install is per-funnel / website / store. HighLevel doesn't expose a sub-account-wide head code, so each asset needs the pixel added individually under Tracking Code / Head Tracking Code. New assets need the pixel installed at launch.
  • One FunnelTrack webhook URL, every workflow. Reuse the same URL across all workflows on the sub-account — FunnelTrack uses customData.event to route each payload to the right template card.

Common tracking examples

A few patterns most FunnelTrack accounts run on HighLevel.

  • Discovery form → Meta Lead.One HighLevel workflow on the discovery form's Form Submitted trigger with customData.event = form_submission. In FunnelTrack, the Form Submission template card on HighLevel → Meta routes it as a Meta Lead. Add a Funnel-Name condition for per-funnel attribution.
  • Order Submitted → Meta + Google Ads Purchase. One HighLevel workflow on Order Submitted with customData.event = order_submitted. Two destination cards: Meta Purchase and Google Ads purchase conversion action, both reading order.total_price as the value.
  • Opportunity Won → Meta CompletePayment + GA4. A separate workflow on the Opportunity Status Changed → Won trigger with customData.event = opportunity_won. Useful for high-touch sales pipelines where the winnable signal is a manual stage update, not an order form.

FAQs

Do I need to create a workflow for every event?
Yes — HighLevel routes events via their workflow execution model, and each event type needs its own Workflow → Webhook action with the right customData.event value. There's no consolidated webhook that ships every event automatically.
What happens if customData.event is wrong or missing?
FunnelTrack returns a 400 when the eventkey is missing entirely, and the webhook is logged but unmatched if the value doesn't match any template card. Check the inbound usage log for the raw payload to see what was sent.
Will FunnelTrack double-count if I have multiple workflows for the same event?
Each workflow execution is one webhook delivery, so if you have two workflows that both fire on the same underlying event, you'll get two FunnelTrack events. Consolidate to one workflow per event type to avoid duplicates.
Can I see the raw payload FunnelTrack received?
Yes. The inbound row in the usage log shows the exact payload for any given HighLevel event — handy for debugging a missing field or an unmatched customData.event value.

Ready to set it up?

Jump straight into your FunnelTrack workspace and grab your HighLevel webhook URL.

Configure your HighLevel integration →

Need a hand?

If anything in this guide didn't match what you're seeing in HighLevel or FunnelTrack, open a support ticket in your dashboard and we'll get you sorted.