> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mad-kitty.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# What's tracked by default

> The built-in funnel events, the checkout trace per payment route, and which Meta pixel events fire when

Two lists live on this page. The first is what Opti sees — the funnel's own event stream. The second is what **Meta** sees — the pixel events, with the values attached. Both fire automatically on every published funnel.

## Built-in funnel events

These are the names Opti will use when you ask about them in chat.

| Event                                       | Fires when                                         | Carries                                                    |
| ------------------------------------------- | -------------------------------------------------- | ---------------------------------------------------------- |
| `funnel_screen_viewed`                      | Every screen is shown                              | Screen id, type (landing, quiz, paywall, upsell, …), label |
| `funnel_edge_followed`                      | Every continue / branch taken                      | From screen → to screen, which branch                      |
| `funnel_variant_assigned`                   | The first time a visitor is placed into an A/B arm | Which test, which arm they got, the alternatives           |
| `funnel_checkout_*`                         | Each step of paying — see the checkout trace below | Plan, price, trial or not, payment method                  |
| `funnel_pixel_fired` / `funnel_pixel_error` | Every time the Meta pixel was called — or failed   | Which pixel event, the value that was sent                 |

Every event also carries context you can filter and split by: the funnel and its published version, the visitor's language, the traffic source (Meta / TikTok / Google click), the exact **campaign, ad set, and ad** that sent them, device, country — and their current A/B arm(s), so "conversion per arm" is always a plain split.

<Note>
  Choices *inside* a screen — which quiz answer, which plan card, whether the FAQ was opened — are not part of the runtime. Opti wires them as it builds; if a specific one matters to you, ask for it. See [Asking Opti for custom tracking](/team/opti/tracking/custom-tracking).
</Note>

## The checkout trace, per payment route

The moment a visitor taps the pay button, the funnel records every step until the payment provider answers. The sequence differs by route, and that difference is useful: it tells you *where* a checkout died.

**Common to all routes**

| Event                                                                     | When                                                                                        |
| ------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- |
| `funnel_checkout_methods_detected`                                        | The pay dock loads — records whether Apple Pay was available on this device                 |
| `funnel_checkout_cta_clicked`                                             | Pay button tapped, with the method that was selected                                        |
| `funnel_checkout_method_sheet_opened` → `funnel_checkout_method_selected` | Only if the visitor opened the method picker and switched (card ↔ Apple Pay ↔ card on file) |

<Tabs>
  <Tab title="Card">
    1. `funnel_checkout_cta_clicked` (`method: card`)
    2. `funnel_checkout_card_sheet_opened` — the card form appears
    3. `funnel_checkout_started` — the visitor filled the form and tapped pay
    4. Either `funnel_checkout_succeeded`, or `funnel_checkout_failed` with the stage:
       * `tokenize` — the card details couldn't be secured (typo, unsupported card, network)
       * `subscribe` — the charge itself was declined; the provider's status codes ride along

    Card is where **declines** live. A high `failed` share at the `subscribe` stage is a card-quality or price-point signal, not a funnel-design one.
  </Tab>

  <Tab title="Apple Pay">
    1. `funnel_checkout_cta_clicked` (`method: apple_pay`)
    2. `funnel_checkout_started` — the Apple Pay sheet is requested
    3. One of:
       * `funnel_checkout_apple_cancelled` — the visitor dismissed the sheet
       * `funnel_checkout_failed` at stage `apple_merchant_validation` — the sheet couldn't open
       * `funnel_checkout_apple_authorized` — Face ID / Touch ID confirmed
    4. After authorization: `funnel_checkout_succeeded`, or `funnel_checkout_failed` (`apple_authorization` or `subscribe`)

    Apple Pay skips the card form entirely, so there is no `card_sheet_opened` and no `tokenize` stage. Cancellations at the sheet are normal browsing behaviour; failures after authorization are worth a look.
  </Tab>

  <Tab title="One-click (card on file)">
    Used by upsells for buyers who just paid.

    1. `funnel_checkout_cta_clicked` (`method: stored`)
    2. `funnel_checkout_started` (`method: stored`) — no sheet, no form
    3. `funnel_checkout_succeeded`, or `funnel_checkout_failed` (stage `stored`)

    If the stored card is declined, the dock falls back to normal payment collection and the visitor can pay by card or Apple Pay — a second trace then follows.
  </Tab>
</Tabs>

Every event in a trace carries the plan context — price, currency, billing interval, trial or direct, amount due today — so any step can be split by offer.

## What the Meta pixel gets, and when

This is the table to keep next to Events Manager. The funnel maps its milestones onto Meta's **standard events**; nothing custom is sent.

| Meta event           | Fires when                                              | Value Meta sees                                                 |
| -------------------- | ------------------------------------------------------- | --------------------------------------------------------------- |
| **PageView**         | **Every funnel screen**, not just the landing           | —                                                               |
| **AddToCart**        | A paywall or upsell screen is shown                     | The full plan price (the subscription it converts into)         |
| **InitiateCheckout** | The pay button is tapped                                | The full plan price                                             |
| **Purchase**         | The payment provider **accepted** a real charge         | The amount **charged today**                                    |
| **StartTrial**       | A free trial started — the \$0 card verification passed | **0**, with the plan price attached as predicted lifetime value |

The rules that trip people up when reading Meta:

* **PageViews outnumber visitors.** One fires per screen, so a visitor who walks 12 screens is 12 PageViews. Compare visitors using *landing page views* or unique reach, not the raw event count.
* **A trial funnel produces StartTrial, not Purchase.** The trial's conversion to a paid subscription days later is **never sent** to Meta — Meta will show trial starts and close to zero purchase revenue for that funnel, by design. Bidder steers those accounts on cost per trial. See [Facebook numbers vs real sales](/team/opti/tracking/facebook-vs-real-sales).
* **Declines never fire.** Purchase and StartTrial go out only after the provider says yes; a declined card sends nothing.
* **Upsells fire their own Purchase / StartTrial.** One buyer who takes an upsell is two purchase events in Meta — as it is two sales in Opti's numbers.
* **Refunds, chargebacks, and renewals are not reported.** Meta's purchase count and revenue only ever go up.
* **Nothing fires from previews or test-mode checkouts.** Only the published funnel, with real payments, reports to Meta.
* Every pixel call is also written to the funnel's own analytics as `funnel_pixel_fired`, with the exact value sent — so Opti can audit delivery sale by sale without you opening Events Manager.

<Tip>
  **Verifying the pixel:** open the published funnel URL and walk to the paywall. Within seconds Events Manager should show PageView events, then AddToCart on the paywall and InitiateCheckout when you tap pay — none of those require buying anything. Purchase and StartTrial only appear with real, non-test payments.
</Tip>
