For the 10 Slabs dev team · From Veblen Group · 22 Sep 2026 · Event 10 Oct — 18 days

Four repairs to the ticket checkout

Two settings changes in Shopify, two changes in the site repo. Together they make ticket sales visible to Meta, which they currently are not.

Why we’re asking

Paid traffic is about to run to 10slabs.com.au/tickets. Right now the Meta pixel fires PageView on that page and nothing else, and the checkout sits on the raw 10-slabs.myshopify.com domain, where the click ID is dropped and no events fire at all.

The result is that no ticket sale is reported back to Meta — so ad delivery optimises toward page loads instead of buyers, and there is no cart-abandoner audience to retarget. None of that can be fixed from the ads side. It needs these four changes.

What we measured

Walked live on 22 Sep at phone width with a test fbclid attached, reading network requests and cookies at each step.

Landing page events PageView only — no ViewContent, AddToCart or InitiateCheckout
Buy Now destination 10-slabs.myshopify.com/checkouts/cn/…
_fbc on landing fb.2.1790054762966.TESTFBCLID123
_fbc at checkout absent — click ID lost at the domain hop
_fbp at checkout regenerated — buyer looks like a new person
utm_* / fbclid stripped from the checkout URL
Checkout page events fbevents.js loads, but 0 events transmitted
Meta pixel ID 1055335730825225

The four tickets

T1 and T2 are sequential — T2 depends on T1. T3 and T4 are independent and can start today in parallel.

T1

Move checkout to checkout.10slabs.com.au

Shopify admin No dependencies

Settings → Domains. Add the subdomain and set it as the checkout domain, so checkout stops resolving to 10-slabs.myshopify.com.

This is the one that matters most. Because myshopify.com is a different registrable domain, the Meta click-ID cookie set on 10slabs.com.au cannot be read at checkout — it is dropped at the hop. Putting checkout on a subdomain of the main site keeps the buyer inside one cookie scope, and stops them seeing an unfamiliar domain at the moment they enter a card number.

Done when
  • Clicking Buy Now lands on checkout.10slabs.com.au, not 10-slabs.myshopify.com
  • The DNS record resolves and the certificate is valid
T2

Repoint the ticket buttons in the repo

Site repo After T1

Every purchase button on the new landing page — both Buy Now buttons on the ticket tiers and the three Get tickets from $15 buttons in the hero, sticky bar and footer — is currently wired to the active 10-slabs.myshopify.com checkout.

This is the part that would otherwise silently undo T1. A hardcoded myshopify.com cart or checkout URL in the source keeps winning even after the checkout domain is changed in Shopify, so the buttons have to be repointed at the new domain or read it from config rather than a literal.

Worth doing as one change: put the checkout origin in a single constant or env var so it never has to be hunted across five call sites again.

Done when
  • Searching the repo for myshopify.com returns no hardcoded checkout or cart URLs
  • All five buttons land on checkout.10slabs.com.au
  • Quantity and ticket-type selection still carry through correctly to the cart
T3

Add a Shopify custom pixel for checkout events

Shopify admin Can start now

Settings → Customer events → Add custom pixel. Custom pixels run in a sandboxed frame, so the Meta base code has to be loaded inside the pixel itself — the snippet in the site’s <head> does not reach the checkout.

Both events must carry value and currency. Without them Meta can count sales but cannot report revenue, which makes return on ad spend impossible to calculate.

// Meta base code — required inside the custom pixel sandbox
!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){
  n.callMethod?n.callMethod.apply(n,arguments):n.queue.push(arguments)};
  if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];
  t=b.createElement(e);t.async=!0;t.src=v;s=b.getElementsByTagName(e)[0];
  s.parentNode.insertBefore(t,s)}(window,document,'script',
  'https://connect.facebook.net/en_US/fbevents.js');

fbq('init', '1055335730825225');

analytics.subscribe('checkout_started', (event) => {
  const c = event.data.checkout;
  fbq('track', 'InitiateCheckout', {
    value:     c.totalPrice.amount,
    currency:  c.currencyCode,
    num_items: c.lineItems.reduce((n, i) => n + i.quantity, 0)
  });
});

analytics.subscribe('checkout_completed', (event) => {
  const c = event.data.checkout;
  fbq('track', 'Purchase', {
    value:    c.totalPrice.amount,
    currency: c.currencyCode
  });
});
Done when
  • A test order fires InitiateCheckout then Purchase — visible in DevTools as requests to facebook.com/tr with ev=Purchase
  • cd[value] and cd[currency] are populated, not empty
  • Both events show in Meta Events Manager against pixel 1055335730825225
T4

Add ViewContent and AddToCart to the tickets page

Site repo Can start now

In the Nuxt app, alongside the existing inline pixel snippet in <head>. fbq is already defined globally on the page, so these are just two extra calls.

Fire ViewContent when the ticket section comes into view, and AddToCart on the Buy Now click — immediately before the redirect to checkout. These two events are what build the retargeting pool of people who looked at tickets and didn’t buy, which is the audience the ads will lean on hardest in the final fortnight before the event.

// When the ticket section enters the viewport
fbq('track', 'ViewContent', {
  content_type: 'product',
  content_ids:  [variantId],
  content_name: 'General Admission',
  value:        15.00,
  currency:     'AUD'
});

// On Buy Now, before redirecting to checkout
fbq('track', 'AddToCart', {
  content_type: 'product',
  content_ids:  [variantId],
  content_name: ticketName,   // e.g. 'VIP Early Access'
  value:        unitPrice * quantity,
  currency:     'AUD'
});
Done when
  • Scrolling to the ticket tiers fires one ViewContent
  • Clicking Buy Now fires AddToCart with the correct variant, price and quantity
  • Neither event fires twice on a single page view

How to verify the whole chain

One pass, once all four are in.

1. Open 10slabs.com.au/tickets?fbclid=TEST123 in a normal window
2. Confirm cookie _fbc is set and contains TEST123
3. Scroll to tickets → DevTools Network, filter facebook.com/tr → ev=ViewContent
4. Click Buy Now → ev=AddToCart fires before the redirect
5. Land on checkout.10slabs.com.au — confirm _fbc is still present and unchanged
6. Confirm ev=InitiateCheckout fires on the checkout page
7. Complete a test order → ev=Purchase with cd[value] populated
Note: ad blockers block connect.facebook.net outright — test with extensions off.

Notes

Everything above was verified directly on the live site on 22 September 2026. Two test checkouts were started and abandoned at the payment form during that pass — no order was placed and no card details were entered, but they may appear as abandoned carts in the Shopify admin dated 22 September.

Once T1 is live, Veblen will verify the new checkout subdomain in Meta Business Manager and rebuild the campaign on a Purchase objective. Nothing else is needed from the dev team after these four. Any questions on the event specs, come back to us rather than guessing at the parameters — the value and currency fields in particular have to be exact for revenue reporting to work.