ClickFunnels tracking

ClickFunnels Conversion Tracking: Opt-ins, Upsells & Purchases

This is for coaches, course creators and info-product sellers running ads into ClickFunnels 2.0. Funnels with opt-ins, order bumps and one-click upsells are easy to build but easy to mis-track: purchases get counted twice, or upsell revenue never reaches the ad platforms. I set up tracking that follows each step and reports the true value of every customer.

ClickFunnels · Ecommerce & lead gen
  • Opt-in, order form and upsell steps each tracked correctly
  • Upsell and order bump revenue included in purchase value
  • Browser and server purchases deduplicated in Meta
  • One clean setup instead of codes pasted on every step
Quick answer

Proper ClickFunnels tracking means installing GTM once at the right level, firing lead events on opt-in steps and purchase events with real order values on order form, upsell and thank-you steps. Server-side events from order webhooks then go to Meta CAPI and Google Ads with shared event IDs, so nothing is double-counted.

Tracking flow

How tracking works on ClickFunnels

The events I set up on ClickFunnels, and where each one is sent.

Why it breaks

Why ClickFunnels tracking goes wrong

Tracking codes on too many levels

ClickFunnels 2.0 accepts tracking code in workspace settings, funnel settings and each page. When a pixel sits at two of those levels, every event fires twice, and when a cloned funnel brings old codes with it, the data gets messy fast.

Upsells break the purchase value

With one-click upsells the buyer pays on the order form, then again on each upsell page without filling in a checkout. If only the order form step is tracked, upsell and downsell revenue never reaches Google Ads or Meta.

Thank-you step reloads count twice

A purchase event tied to a thank-you page view fires again each time a buyer refreshes it or returns from an email link. Without an order ID to deduplicate on, your ROAS looks better than it is.

Native pixel plus custom CAPI

Adding the Meta Pixel through ClickFunnels' settings and then sending server events from another tool, without shared event IDs, means Meta receives two purchases for every sale.

Funnels on a different domain

Many businesses keep their main site on WordPress or Webflow and run funnels on a ClickFunnels domain. Without cross-domain setup, GA4 splits one visitor into two sessions and credits the sale to your own site.

What I set up

My ClickFunnels tracking setup

Funnel step tracking

  • GTM installed at one level with duplicate codes removed from cloned funnels
  • Lead events on opt-in and application steps
  • Order form, order bump, upsell and downsell purchase events
  • Order or transaction ID on every purchase for deduplication
  • Cross-domain tracking between your main site and funnel domain

Google Ads & GA4

  • Google Ads purchase conversion with dynamic value
  • Separate secondary actions for opt-ins and upsells
  • Enhanced conversions using hashed customer email
  • GA4 purchase events with product names per funnel step
  • Funnel step reporting so you can see where people drop off

Meta Pixel & Conversions API

  • Lead, InitiateCheckout and Purchase on the right steps
  • Server-side CAPI purchases from order webhooks
  • Shared event IDs between the Pixel and CAPI
  • Customer email, phone, fbp and fbc sent for event matching

Payments & checks

  • Order totals checked against Stripe or your payment processor
  • Test purchases run through every upsell path
  • Refund and cancellation handling agreed for reporting
  • A short doc so your team can add new funnels safely
Event map

Events I track on ClickFunnels

EventWhen it firesSent to
generate_leadOpt-in form submittedGA4, Google Ads, Meta Pixel + CAPI
view_offerSales or order form page viewedGA4, Meta (ViewContent)
begin_checkoutOrder form step loadedGA4, Meta (InitiateCheckout)
purchaseInitial order paid, including order bumpGA4, Google Ads, Meta Pixel + CAPI
upsell_purchaseOne-click upsell or downsell acceptedGA4, Google Ads, Meta Pixel + CAPI
book_callApplication or call booking confirmedGA4, Google Ads, Meta (Schedule)
Process

How the setup works

  1. 01

    Audit

    I check tracking codes at workspace, funnel and page level, and compare what Meta and Google Ads report with your actual orders.

  2. 02

    Map the funnel

    I list every step in each funnel, from opt-in to order form, bumps, upsells, downsells and thank-you, and decide which event and value each step sends.

  3. 03

    Build

    I set up GTM, the step events and server-side GTM fed by ClickFunnels order webhooks, with event IDs for deduplication.

  4. 04

    Test every path

    I run test purchases that accept and decline each upsell, and check that values and counts match in every platform.

  5. 05

    Hand over

    You get documentation and a checklist for adding tracking to new or cloned funnels.

Tracking order bumps and one-click upsells

In a ClickFunnels 2.0 funnel, one customer can pay several times: the main offer plus a bump on the order form, then one or more one-click upsells. There are two sensible ways to report this. You can send a purchase for each payment with its own value, or send the initial purchase and record upsells as separate conversions.

I pick the approach that matches how you judge ad performance. If you want Google Ads and Meta to optimise for total customer value, include upsell revenue rather than leaving it out.

Deduplicating Meta Pixel and Conversions API

ClickFunnels thank-you pages are fine for the browser pixel, but ad blockers and browser privacy limits stop some of those events. Order webhooks from ClickFunnels, or from Stripe, give a server-side record of each payment that I send to Meta CAPI through server-side GTM.

The browser and server events share the same event ID, built from the order, so Meta keeps one and drops the duplicate. That gives you more complete purchase data without inflating it.

FAQ

ClickFunnels tracking FAQ

Where do I add tracking code in ClickFunnels 2.0?

ClickFunnels 2.0 lets you add code at the workspace, funnel and page level. I usually install GTM once at the broadest level that covers your funnels and manage everything else inside GTM. The important thing is not to load the same pixel in more than one place.

How do I track one-click upsells in ClickFunnels?

Fire a purchase or upsell event when the upsell is accepted, with that offer's price and a unique order or transaction ID. Since there's no checkout form on upsell pages, the event has to be tied to the acceptance itself, the next step or the order webhook.

Why does Meta show more purchases than ClickFunnels?

Usually because the Pixel is loaded twice, thank-you pages are reloaded, or browser and server events are sent without matching event IDs. An audit of the tracking code levels and deduplication setup normally finds the cause.

Can ClickFunnels send purchases to Google Ads with the real value?

Yes. I pass the order value and currency into the Google Ads conversion tag and add a transaction ID so repeat page loads aren't counted. Enhanced conversions with hashed email can improve matching.

Do I need server-side tracking for ClickFunnels?

It isn't required, but it helps if you spend seriously on Meta. Server events from order webhooks recover purchases the browser pixel misses, as long as they're deduplicated.

I use Stripe with ClickFunnels. Does that change anything?

Stripe is useful as a source of truth: I compare tracked revenue against Stripe payments when testing, and Stripe webhooks can be used for server-side purchase events if needed.

Guides

Read next

Want your ClickFunnels tracking fixed?

Get a free audit of your tracking and ad account. Usually replies within 1–2 hours.