ClickFunnels

Connect ClickFunnels 2.0 & set up funnel tracking

FunnelTrack captures form submissions, orders, subscriptions, appointments, course enrollments, and pipeline events from ClickFunnels 2.0 server-side via webhooks — then stitches each one back to the visitor's ad session through the FunnelTrack pixel. Every conversion you fire to Meta, Google, TikTok, and the rest carries the original click ID, identity data, and session context.

What you'll need
  • A ClickFunnels 2.0 workspace + admin access
  • The FunnelTrack pixel deployed on every page of your site — plus any third-party landing pages or funnels that feed into your ClickFunnels 2.0 funnels
  • At least one connected destination (Meta CAPI, Google Ads, GA4, etc.)
  • About 10 minutes for the initial setup, then ~30 seconds per funnel to drop the pixel into Head Code

Setup

Connect ClickFunnels via OAuth, drop the FunnelTrack pixel into each funnel, then enable the events you want to track.

1

Connect ClickFunnels via OAuth

In FunnelTrack, open Integrations → Sources → ClickFunnels and click Connect. You'll be redirected to ClickFunnels to authorize FunnelTrack, then prompted to pick the workspace you want to track. After approval, ClickFunnels redirects you back to FunnelTrack with the integration connected.

ClickFunnels OAuth consent screen titled 'Connect FunnelTrack Event Tracking to a Workspace' with a workspace picker
ClickFunnels OAuth screen — pick the workspace you want to track.
What happens behind the scenes
FunnelTrack uses your OAuth tokens to register a single webhook endpoint on your ClickFunnels workspace. Every event we support ships through that one endpoint — no per-funnel or per-event webhook config to maintain on the ClickFunnels side.
2

Deploy the FunnelTrack pixel on each funnel

The FunnelTrack pixel needs to be on every page of every funnel you want to track. In ClickFunnels, pixels are configured per-funnelvia Head Code — so you'll repeat this once for each funnel.

Open the funnel and go to Funnels → Edit Funnel → Head Code. Paste your FunnelTrack pixel snippet into the Head Code box and save.

ClickFunnels Edit Funnel page with the FunnelTrack pixel snippet pasted into the Head Code field
Funnels → Edit Funnel → Head Code. Paste, save, repeat for each funnel you want to track.
Don't forget third-party landing pages
If your traffic flows through landing pages outside ClickFunnels (e.g. Unbounce, Webflow, custom WordPress pages) before hitting a ClickFunnels funnel, the FunnelTrack pixel needs to be on those pages too — that's where we capture the initial ad click and start the session. Without the pixel on the pre-funnel page, attribution drops to fingerprint matching at conversion time.
3

Enable the events you want to track

Open a connected destination's routing page — e.g. ClickFunnels → Meta Conversions API. You'll see one template card per ClickFunnels event type, grouped by category (Tracking, Lead Generation, Purchases, Subscriptions, Pipeline, Courses). Toggle on the events you want to fire, pick a destination event for each (Meta's Lead / Purchase, a Google Ads conversion action, etc.), and save.

FunnelTrack ClickFunnels → Meta routing showing the One-Time Order Paid template card enabled with Meta Event set to Purchase
Each template card maps one ClickFunnels event to one destination event — toggle on, pick the destination event, save.

The full list of supported ClickFunnels 2.0 events:

Source eventTrigger key / when it fires
Page View__pageview__ — fires on every page load tracked by the FunnelTrack pixel.
Contact Createdcontact.created — a new contact lands in your CF2 workspace.
Form Submissionform_submission.created — a CF2 form is submitted in any funnel.
One-Time Order Paidone-time-order.invoice.paid — a customer pays a one-time order. Revenue available.
Subscription First Paymentsubscription.first_payment_received — the first payment on a new subscription is collected. Revenue available.
Subscription Invoice Paidsubscription.invoice.paid — any subsequent recurring invoice on a subscription is paid. Revenue available.
Appointment Scheduledappointments/scheduled_event.created — a contact books an appointment through CF2 Appointments.
Opportunity Createdsales/opportunity.created — a new opportunity is created in the CRM pipeline. Revenue available.
Opportunity Moved Stagesales/opportunity.moved_stage — an opportunity advances to a new pipeline stage.
Contact Course Enrollmentcourses/enrollment.created — a contact enrolls in a course.
Contact Completed Coursecourses/enrollment.course_completed — a contact finishes a course.
4

(Optional) Map event parameters

Click + Add Custom Parameters on a card to send extra fields to the destination. Parameters can be static (you type the value) or dynamic (pulled from the CF2 webhook payload using the Field picker).

FunnelTrack ClickFunnels Form Submission card with the Custom Parameters section expanded, showing a funnel_name parameter mapped to the Funnel Name dynamic field
Static values you type, or dynamic field values pulled from the CF2 payload — both work as standard or custom event parameters.

Read more about using event parameters in FunnelTrack. The CF2 payload fields available as dynamic values vary by event; the most useful per-event-type fields are:

Event typeAvailable payload fields
Form SubmissionFunnel Name, Funnel Step, Page Path, Page Name, Page Title, Page Type
Appointment ScheduledFunnel Name, Funnel Step, Page Path, Page Name, Page Title, Event Type ID
One-Time Order PaidFunnel Name, Page Name, Product Name, Order Number, Order Type, Billing Status, Order Total, Origination Channel, Payment Processor
Subscription First PaymentFunnel Name, Page Name, Product Name, Order Number, Billing Status, Amount, Origination Channel, Payment Processor
Subscription Invoice PaidProduct Name, Billing Status, Amount, Payment Processor
Opportunity Created / Moved StagePipeline Name, Stage Name, Opportunity Name, Status, Value
Course Enrollment / CompletedCourse Name, Course ID, Origination Source
Contact CreatedFunnel Name, Page Name
5

(Optional) Set firing conditions

Click + Add Condition on a card to gate the dispatch behind one or more rules on the CF2 payload — useful when you want one event to fire as a different destination event based on funnel / product / pipeline context.

FunnelTrack ClickFunnels Form Submission card with a Condition: Funnel Name equals 'Paid Media Coaching'
AND within groups, OR between groups — same conditions UI as every other source on FunnelTrack.

A few patterns customers run a lot:

  • Funnel-scoped lead events — a single form_submission.created card that only fires for one funnel (Funnel Name equals "Paid Media Coaching"). Build one per lead-gen funnel so each gets its own Meta / Google conversion attribution.
  • Pipeline-stage milestones — fire a Meta custom event when an opportunity advances to a specific high-intent stage (sales/opportunity.moved_stage with Stage Name equals "Demo Scheduled").
  • High-value purchase split — split one-time-order.invoice.paid into two cards, one with Order Total > 500 firing a custom HighValuePurchase event, the other firing a standard Purchase.

Read more about using conditions in FunnelTrack.

6

Test & deploy

Submit a real test on the funnel — fill in a form, complete a test purchase, book a test appointment, etc. Within a few seconds you should see an inbound row in the usage log labeled with the ClickFunnels event name (e.g. Form Submission, One-Time Order Paid), followed by one outbound row per connected destination — each delivered to the destination event you configured.

FunnelTrack usage log showing an inbound Form Submission event followed by outbound Reddit LEAD and TikTok Lead events, all delivered
Inbound row shows the ClickFunnels 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 funnel and destination.

  • Pixel install is per-funnel in CF2. ClickFunnels 2.0 doesn't expose a workspace-wide head code, so you'll add the FunnelTrack pixel into each funnel's Edit Funnel → Head Code individually. New funnels need the pixel added at launch — make it part of your funnel template if possible.
  • One OAuth connection, every event type.The ClickFunnels OAuth grant covers form submissions, orders, subscriptions, appointments, courses, and pipeline events — so you don't need to revisit the connection when adding new event types later. Just toggle the template card on a destination's routing page.
  • Funnel-scoped events keep reporting clean. By default the template cards fire on every funnel — including internal ones (employee onboarding, internal checkouts). Use a Funnel Name condition on lead-gen / purchase cards to keep internal events out of your paid-ad reporting.
  • Disconnect cleans up after itself. When you disconnect ClickFunnels from FunnelTrack, we also delete the webhook endpoint we registered in your CF2 workspace — no orphaned endpoints left behind.

FAQs

Does this work with ClickFunnels Classic (1.0)?
No — this integration is for ClickFunnels 2.0 only. CF Classic uses a different webhook model and isn't supported in this integration.
How does the FunnelTrack pixel know it's on the right page?
The pixel reads its workspace ID from the snippet you paste into Head Code, so as long as the snippet on every funnel matches the one on your FunnelTrack pixel settings page, all the data lands in the right workspace.
Why are my opportunity events not firing revenue?
sales/opportunity.moved_stageships without revenue in the CF2 payload. FunnelTrack enriches the revenue at dispatch time from the opportunity's value field — make sure the opportunity in CF2 has a value set, otherwise the dispatched event carries no revenue.
Can I see the raw payload FunnelTrack received?
Yes. The inbound row in the usage log shows the exact payload FunnelTrack received for any given CF2 event.

Ready to set it up?

Jump straight into your FunnelTrack workspace and connect ClickFunnels.

Configure your ClickFunnels integration →

Need a hand?

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