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.
- No developer work is needed to split new customers from repeat buyers. That flag is already on the Purchase event. 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
Every Meta Purchase event carries a new_customer parameter: true when this is the customer's first ever paid order on your site, false on every repeat purchase. Turn it into something you can optimise towards:
- In Meta Events Manager, open Custom Conversions and click Create custom conversion.
- Choose your pixel as the data source and Purchase as the event.
- Add a rule on the event parameter: new_customer equals true.
- Name it something like "First-time purchase" and save.
You can now report on first-time purchases in Ads Manager, optimise campaigns towards acquiring new customers rather than repeat orders, and build audiences either side of the split.
The new_customer flag is on Meta's Purchase event only. TikTok's CompletePayment does not carry it.
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 | 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 |
| 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 events. 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.
- No server-side events. All events fire from the visitor's browser. If your agency asks about the Meta Conversions API (server-side event sending), that is not currently available.
- 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.