Tracking — one stream, two readers
Your company has one event stream and one ordered list of funnel stages. The funnel card, the bottleneck diagnosis, the website analytics, the button counts — all of it derives from that stream. There is no second tracking system, which is why two numbers in Autopilot cannot disagree.
What an ad platform receives is a separate branch with its own rules. Keeping those two apart is the point of this page, because they fail independently: your own measurement can be complete while Meta still sees almost nothing.
How a stage fires
Section titled “How a stage fires”Three ways, and only three.
Automatically. The first stage fires on every page view, and the engagement stage on the first scroll or click. Nothing to wire.
By URL match. A stage carries a path fragment such as /cart and fires
when the visitor’s address contains it. This is the only kind that can stop
silently: rename the page and the stage stops counting while the traffic
continues. Autopilot probes these targets — including the way a real visitor
arrives, with a tracking parameter attached, because a cached page can answer
a bare probe while the real click gets an error.
By explicit call. In the browser at a decisive action, or on the server for moments no browser sees — a confirmed payment, a completed registration.
Counting any button
Section titled “Counting any button”To count clicks on a button or link, add one attribute. No backend change, no release, and it works on every page that carries the snippet:
<a data-lw-cta="app_store_download" href="...">Download</a>Keep the names short and stable — renaming one starts a new series. If a button carries no attribute, the honest answer to “how often was it clicked?” is not measured yet, and the fix is the attribute, not an estimate.
What reaches Meta
Section titled “What reaches Meta”Your stages are your language; Meta has its own. Between them sits an explicit mapping, one per company:
| Your stage | Fires when | Reported to Meta as |
|---|---|---|
| Sample requested | sample page visited | Lead |
| Product viewed | product page visited | ViewContent |
| Cart reached | cart opened | AddToCart |
| Checkout reached | checkout opened | InitiateCheckout |
| Purchased | order confirmation | Purchase |
Without an entry, nothing is forwarded. What a platform learns to optimise toward changes what it buys with your money, so that stays your decision rather than a default.
Two conditions decide whether a mapped stage actually arrives. It must be
mapped, and the visit must carry a match key — either the click id from
an ad, or the _fbp cookie that a Meta pixel sets in the browser. Without
one, Meta has nothing to attribute the event to and the report is worthless.
That is also the privacy boundary: the cookie only exists where the visitor
accepted marketing cookies, so no consent means no key means no forward.
The shared pixel, plainly
Section titled “The shared pixel, plainly”Companies running on the managed Meta ad account share one pixel — Meta limits how many an account can hold. Two consequences worth knowing:
- Totals you might read on the pixel itself are not yours alone. Everything Autopilot reports for your company is filtered to activity from your own domain, which is the only figure that means anything on a shared dataset.
- Retargeting audiences are built with a rule that pins them to your domain for the same reason.
Bringing your own ad account gives you your own pixel and removes the question entirely.
Google works the same way on a separate lane, with the click id from a Google ad in place of Meta’s.
What is missing when the browser pixel is missing
Section titled “What is missing when the browser pixel is missing”Autopilot’s own measurement is identical either way. What differs is how much of it Meta ever sees.
If Autopilot did not build your site
Section titled “If Autopilot did not build your site”On a site Autopilot builds, both pieces are installed for you. On your own site — a shop on WordPress, Shopify or anything else — two snippets belong in the page, and they do different jobs:
- The Autopilot snippet, which produces everything on this page. Without it there are no funnel numbers at all.
- The Meta pixel with your pixel id, which warms the dataset and lets audiences build. If your site already carries a Meta pixel of your own, add ours alongside it — several pixels on one page is normal and they do not interfere.
A cold pixel next to healthy visitor tracking is exactly this situation, and it is worth reading precisely: your measurement works, Meta is not learning from it yet.
Reading the numbers honestly
Section titled “Reading the numbers honestly”- Stages are independent counts of sessions, not strict subsets. A later stage can exceed an earlier one when visitors skip ahead — a homepage call to action reached without ever seeing the pricing page, for instance.
- “Firing” is not “fully wired”. A silent final stage means unproven, not demonstrably zero. Autopilot says which of the two it is instead of reporting a confident nought.
- Some signals depend on the browser cooperating. In-app browsers often refuse the leave-event that measures dwell time, so coverage is reported next to the average rather than quietly averaged over whoever answered.
- Bot traffic is dropped at ingestion, which is why a synthetic check with a headless browser proves nothing.
What you decide
Section titled “What you decide”| Autopilot does | You do |
|---|---|
| Seeds the stage list from your business model and keeps it firing | Approve changes to it — they redefine what counts as a conversion |
| Reports which stages fire, and which are unproven | Install the snippets on a site Autopilot did not build |
| Forwards the stages you mapped to the ad platforms | Decide what a platform is allowed to optimise toward |
Where to read next
Section titled “Where to read next”- Ads — what the measured result is worth, and what it is not
- Website and shop — where the snippet lives
- The controls — approvals, budgets and pauses