Ad networks and pixels
You will connect Meta or TikTok so the ad account sees your funnel's sign-ups and payments and learns from them.
Before you start
- A published funnel. Publishing needs the Pro or Business plan — Publish a funnel.
- Payment acceptance connected — Pricing and payments. With “On your own” selected in the project, your developer reports purchases to the networks — Send an event to us.
- Project owner or admin role. Others see these settings read-only.
- Access to the Meta or TikTok account with the pixel.
Step 1. Get the data in the network's account
The network issues two values where the pixel is created:
- the pixel ID (Pixel ID);
- an access token for server events.
Also take the test event code (Test Event Code) from the network's event testing section. With it, the step 3 test event lands there, not in the pixel's regular statistics.
The network's help shows where. Meta: where to issue a token and where to get the test event code. TikTok: how to create a pixel and where to issue a token.
Step 2. Connect the network
Open “Settings” in the project menu → “Analytics and pixels” → “Ad sources”. Turn on the Meta or TikTok switch — a form opens.
Enter the “Pixel ID”, the token and the test event code. Meta's token goes into “Access token (CAPI)”, TikTok's into “Access token (Events API)”. Click “Connect”.
The pixel works on published pages at once, without republishing. A second network connects the same way, in its row.
Step 3. Send a test event
In the network row, click “Configure”, then “Send a test event”. If accepted, find ViewContent in the network's account: with the test event code it appears in event testing within minutes.
Step 4. Decide what to send
Optional: the defaults work; return later if needed. The settings are in the same form and apply on “Save”.
| Setting | Default | What it changes |
|---|---|---|
| “Which payments to send” | “All payments, renewals included” | with “Only a person’s first payment”, no renewals or extra payments |
| “Send refunds and lost disputes as a cancelled conversion” | on | a full refund or lost dispute cancels the purchase in the network; partial refunds are not sent |
| “Send events around ad blockers” | off | pre-payment events go from the browser pixel and also from our server, which ad blockers do not cut; the network counts the repeat once |
| “Purchase value multiplier” | 1 | the purchase amount is multiplied by it |
| “Advanced: event names, person matching” | names from the table below, “Send a hash of the email and phone” on | event names in the network; whether to help it recognize the person by email and phone |
Step 5. Check the first payment
Put the published funnel's address or an A/B test's “Public URL” into the ad and launch. A purchase on Stripe test keys does not reach the network; the first delivered payment comes from a real sale.
- Status in the network row — “Working” after a delivered payment; others are in the table below.
- “Delivery log” in the network row — every server event over 30 days: “Delivered”, “Error” or “Decided not to send” with a reason. Browser events show only in the network's account.
- The network's account — the purchase, named per the table below.
What the status in the network row means:
| Status | Meaning |
|---|---|
| “Working” | the network accepted a server event in the last day |
| “No events yet” | no event accepted yet. With “Send events around ad blockers” off, this lasts until the first payment; the test event does not change it |
| “Went quiet” | events were accepted before, but none in the last day; the last one's time is shown. With blocker bypass off, a day without sales does this too |
| “Error” | sends fail, with no event accepted in a day. A final refusal, such as a rejected token, shows “Error” at once, even if events were accepted that day. A banner with the reason and advice appears under the row, and we email the project owner — at most once a day |
Reasons that mean more than they say:
| Reason in the log | Meaning |
|---|---|
| “the visitor refused tracking” | refused, or pressed nothing on the consent banner |
| “a test purchase — it never goes to ad networks” | paid in Stripe's test environment, or your server sent a test event |
| “there is no record of this visitor consenting” | your server sent the event without the buyer's consent mark — give your developer Send an event to us |
Which events go to the network
| What happened | Default network name | How it goes |
|---|---|---|
| the visitor opened a funnel page | page view | browser |
| completed 90% of the quiz | ViewContent | browser to Meta; server to both — with “around ad blockers” |
| left an email | CompleteRegistration | the same |
| started checkout | InitiateCheckout | server only, with “around ad blockers” |
| paid | Purchase | server always; browser — on the post-payment page |
| renewed a subscription or paid extra | Purchase | server, if all payments are sent |
| money fully refunded or a dispute lost | Refund for Meta, CancelOrder for TikTok | server, if refunds are on |
| installed and opened the app after payment | AppInstall | server |
In-app sign-ups and purchases reach the network only if your developer reports them — Send an event to us.
Tracking consent
Visitors from the EU, Norway, Iceland, Liechtenstein, the UK and Switzerland, or of unknown country, see a cookie consent banner. For others, consent is set automatically.
Until “Accept”, the network learns nothing: the pixel does not load, click IDs are not stored, server events and the purchase are not sent. “Decline” and silence work the same, so the network shows fewer European purchases than Subster.
A visitor moving between your subdomains is asked on each. For one decision on all, turn on “Share the consent decision with my subdomains”: funnel row ⋮ → “Domain”.
Click IDs
The ID in the address links a purchase to an ad click. The funnel reads fbclid, ttclid and gclid itself — nothing to set up. Campaign tags are separate, see A/B tests and Funnel analytics.
A funnel button to an external address with {click_id} fills it for a European visitor only after “Accept”. A/B test addresses have no such limit.
Report to a partner tracker
If traffic comes through an affiliate network or tracker crediting sales by its own click ID, we can report sign-ups and first payments to it.
- Add the partner's click ID to their link as
click_id,sub_idorclickid— whichever the partner names; they fill the value. - Open “Settings” → “App connection” (without an app: “Keys and webhooks”) → “For developers”. In “Sales reports to the tracker”, paste the partner's address into “Postback address” and click “Save”.
| Placeholder in the address | What goes into it |
|---|---|
{click_id} | the partner ID from the visit address; not ad network IDs; empty without an ID |
{status} | lead — left an email, purchase — first payment, app_installed — opened the app after payment |
{payout} | first payment amount in its currency, e.g. 19.99 |
{txid} | payment number; for a sign-up — session number |
- Renewals and extra payments are not sent — except purchases your server reports: all go, renewals included.
- No other placeholders: an unknown one stops the report entirely.
- Consent works the same as for ad networks.
- Purchases on Stripe test keys are not sent, and the cabinet has no report log — check with the partner on the first real sale.
An AppsFlyer or Adjust install tracker connects in “App connection”, “Through an ad tracker”. What to paste into it is in Funnel analytics.
Your own analytics: Amplitude
On “Analytics and pixels” → “Analytics”, turn on Amplitude. Enter the “Amplitude project key”, choose the “Project region” and tick “Which events to send”. Click “Connect”, then “Check the connection”: within a minute [Funnel] Connection Check appears in your Amplitude.
Visitor consent applies here too. If delivery breaks, the project owner gets an email, and a banner “Analytics for the … project is not receiving events” with “Open settings” appears above the cabinet.
Services under “In the works”, including Google Analytics, GTM, Mixpanel and PostHog, cannot be connected yet.
Next
- A/B tests — one ad address for several funnel variants, with campaign tags.
- Funnel analytics — which ads bring buyers and pay off.
- Send an event to us — for your developer: in-app sign-ups, installs and purchases to the same networks.