Appearance
Tracking Pixel Events
Your site fires a full set of standard conversion events into your Meta Pixel and TikTok Pixel automatically, at every step from first page view to purchase. There is nothing to install and no custom code to write: enter your pixel IDs once and everything on this page starts firing.
Where to set it up: Admin → Settings, then the Advanced tab (/admin/settings), under Analytics. See Connect analytics and tracking pixels for the setup steps. This page covers the ad pixels only. Your site's own visitor analytics are covered in Website Analytics.
Brief your ad agency
When your agency asks "what events does the site fire?", send them the Meta event reference and TikTok event reference below.
Also tell them two things, because both come up every time:
- Do not paste a pixel snippet into Custom Scripts. Your site already loads the pixel, so a pasted copy would double-count page views. Pasted scripts also run on every page regardless of consent, which would bypass the cookie banner that keeps your tracking compliant.
- Use
NewPayingCustomerto measure new paying customers. This dedicated event is sent through the browser Pixel and, when enabled, Conversions API. See Report on first-time buyers in Meta.
Check your events are firing
- In Meta Events Manager, open the Test Events tab and follow its instructions to open your site.
- Click Accept on the cookie banner on your site. This is the step people forget. With the banner unanswered nothing fires at all and the test looks broken.
- Walk the funnel: open a competition (ViewContent), add tickets to the basket (AddToCart), start checkout (InitiateCheckout).
- To verify the whole path, complete a small real order. The confirmation page fires Purchase, with
new_customeramong its parameters. - Watch the events arrive in the Test Events stream and check each one's parameters against the reference tables below.
TikTok has an equivalent test tool in TikTok Ads Manager under Events. The same walkthrough applies, including the consent step.
Report on first-time buyers in Meta
NewPayingCustomer is a dedicated Meta custom event. It identifies the customer's first successful ticket order charging £0.01 or more through the payment gateway. Registration alone, free entries, wallet-only purchases and wallet top-ups do not qualify. A customer can qualify after earlier free entries. Customers with previous qualifying paid ticket orders or imported paid spend are excluded, including customers whose earlier completed purchase was later refunded. An unsuccessful attempt refunded before completion does not use up eligibility.
The backend assigns one qualifying order per customer. Both channels use that decision:
| Connection | When it sends | Required setup |
|---|---|---|
| Browser Meta Pixel | When the customer reaches the successful order confirmation page within 24 hours of payment | Meta Pixel ID and accepted marketing cookies |
| Server Conversions API (CAPI) | After the qualifying order is fulfilled, even if the customer closes the page | The same Pixel ID, CAPI enabled with a valid token, and consent recorded at checkout |
The browser checks eligibility in a separate optional request after confirmation details load. A slow or failed tracking check cannot hold up the confirmation page; it simply skips the browser custom event. CAPI runs independently in the background.
Both report NewPayingCustomer with the same event ID, so Meta can deduplicate the browser and server copies. The event value is the amount actually charged, excluding wallet credit. The normal Purchase event continues to report the full order total for every purchase.
In Meta Events Manager, test with a customer who has no previous paid orders, accept the cookie banner and complete a ticket purchase of at least 1p. Check for NewPayingCustomer in Test Events. A second purchase by that customer should produce Purchase only. Once Meta has received the custom event, use it to create a custom conversion for new paying customers; campaign availability is controlled by Meta. See Server-Side Purchase Tracking to enable and test CAPI.
What about the existing new_customer flag? The browser Purchase event still carries it. It checks whether there is an earlier completed ticket order, without checking the amount paid; an earlier free order can therefore make it false. CAPI Purchase does not carry that flag. Use NewPayingCustomer for the paid-customer definition above. TikTok does not receive this custom event.
Copy this to your agency:
The site supports Meta Pixel and Conversions API.
NewPayingCustomerfires for a customer's first successful ticket order charging at least £0.01, excluding free entries, wallet-only orders, top-ups and existing paying customers. Pixel and CAPI share an event ID for deduplication. CAPI must be enabled in Settings → Advanced → Analytics, and both channels require marketing-cookie consent. UseNewPayingCustomerfor your new-paying-customer conversion.
Explain why your pixel numbers run below your real traffic
Both pixels only load after a visitor clicks Accept on your site's cookie banner. Visitors who click Reject, or who never answer the banner at all, fire no events whatsoever. So:
- Pixel page views will always sit below your true visitor numbers.
- Retargeting audiences are built from consenting visitors only.
- Reported conversions can undercount real orders, because a buyer who declined cookies converts invisibly.
This is compliance working as intended and it cannot be switched off. If your agency flags "missing" traffic, point them at this section.
Meta Pixel event reference
| Event | When it fires | Key parameters |
|---|---|---|
| PageView | Every page a visitor views, including moving between pages without a full reload. A few security-sensitive pages are excluded — see Pages your tracking never sees | none |
| ViewContent | A visitor opens a competition page | content_ids, content_name, content_type (product), value (price of one ticket), currency |
| AddToCart | A visitor adds tickets to their basket | content_ids, content_name, content_type, value (ticket price multiplied by quantity added), currency |
| RemoveFromCart | A visitor removes a competition from their basket | content_ids, content_name, content_type, value (total removed), currency |
| InitiateCheckout | The customer starts payment on the checkout page, for card and wallet-credit orders alike | content_ids (every competition in the basket), content_type, value (basket total), currency, num_items (total tickets) |
| Purchase | The order confirmation page, once payment has succeeded | content_ids, content_type, value (order total), currency, num_items, order_id, new_customer |
| NewPayingCustomer (custom event) | First qualifying ticket order charging at least £0.01; browser and CAPI when enabled | content_ids, content_type, value (amount charged), currency, num_items, order_id |
| CompleteRegistration | A new customer verifies their email address to complete sign-up | status (success) |
| Login (custom event) | A customer logs in, including after two-factor authentication | none |
Worth knowing:
content_idsmatch your Meta catalogue. The identifiers in these events are the same ones your product catalogue feed publishes, so dynamic ads and "products matched" reporting work with no mapping.- All values are in pounds (GBP). The Purchase
valueis the full order total, including any part the customer paid with wallet credit (store credit). - Purchase only fires for real, successful orders. If a payment ultimately fails, or the order is automatically refunded, no Purchase event is sent. Failed orders never book phantom conversions.
- CompleteRegistration counts confirmed accounts. It fires when the customer clicks the verification link in their email, not when they submit the sign-up form.
- Login is a custom event. It appears under custom events in Meta Events Manager and is useful for building audiences of engaged, returning customers.
TikTok Pixel event reference
| Event | When it fires | Key parameters |
|---|---|---|
| Page view | Every page a visitor views, including moving between pages without a full reload | none |
| ViewContent | A visitor opens a competition page | content_id, content_name, content_type (product), value (price of one ticket), currency |
| AddToCart | A visitor adds tickets to their basket | content_id, content_name, content_type, value (ticket price multiplied by quantity added), currency |
| InitiateCheckout | The customer starts payment on the checkout page | content_ids, content_type, value (basket total), currency, quantity (total tickets) |
| CompletePayment | The order confirmation page, once payment has succeeded. This is TikTok's equivalent of Purchase | content_ids, content_type, value (order total), currency, quantity, order_id |
| CompleteRegistration | A new customer verifies their email address to complete sign-up | status (success) |
| Login (custom event) | A customer logs in | none |
TikTok does not receive a remove-from-basket event. That one is Meta only.
Alongside the events, your site makes TikTok's advanced matching (identify) call so TikTok can match conversions to its own users. It runs at three moments: when a customer logs in, when a new customer verifies their email, and after a successful purchase. It shares the customer's email address, and their phone number where the order has one. This uses TikTok's own supported matching mechanism, it only happens for visitors who accepted marketing cookies, and the details are never attached to the event payloads themselves.
What your site does not do
Three things agencies commonly ask about or assume, especially those migrating you from a WordPress site:
- No personal data in Meta event payloads. Your site never puts a customer's email address, phone number or postal address inside Meta pixel event parameters. CAPI uses hashed email and phone identifiers in its separate customer-matching fields; see what is sent. Sending raw personal data in event parameters is against Meta's terms. Some WordPress pixel plugins did exactly that, which is why agencies sometimes expect it. Customer matching on TikTok happens only through the supported advanced matching call described above.
- Server-side tracking covers Meta ViewContent, Purchase and NewPayingCustomer. Enable Conversions API to send these from your server as well as the browser. Other events, and TikTok tracking, remain browser-only.
- No tracking without consent. There is no way to fire events for visitors who have not accepted marketing cookies.
Related pages
- Site Settings for entering your Meta and TikTok pixel IDs.
- Meta Product Ads for the catalogue feed that pairs with your Meta Pixel to power dynamic ads.
- Website Analytics for your site's own privacy-friendly visitor analytics.