Why Shopify checkout is different
Most tracking breaks on checkout pages: different domain, different CSP headers, a redirect-based flow that doesn't give tags time to fire. Shopify made this stricter on purpose. The hosted checkout doesn't allow the script tags every other page on your store can use. The only supported way to observe checkout events now is Shopify's own sandboxed pixel API.
checkout.liquid additional scripts are gone. Kickin uses a sandboxed custom pixel instead.
No DOM or cookie access on checkout, so the pixel talks to Shopify's analytics.subscribe() API rather than sniffing network requests.
Even a working pixel can be blocked by ad blockers or ITP. An order-webhook relay closes that gap.
How Kickin covers it
Checkout pixel (ground truth)
A custom pixel you paste into Shopify Admin reports view, add-to-cart, checkout-started, and checkout-completed events, independent of whether GA4 or Meta actually fired. That's what lets Kickin tell you when a pixel goes silent instead of just going quiet itself.
Order webhook (server relay)
A Shopify order webhook, verified and deduplicated, relays completed purchases directly to whichever of GA4, Meta, or TikTok you've already connected. That's the same server-side sending Kickin uses everywhere else.
Setup
Create a custom app
In Shopify Admin, go to Settings → Apps → Develop apps, create an app, and grant it read_orders access.
Connect it in Kickin
Paste the Admin API access token and Client Secret into Kickin → Settings → Integrations. Kickin verifies the token and registers the order webhook automatically.
Add the checkout pixel
Copy the generated snippet into Shopify Admin → Settings → Customer events → Add custom pixel.
FAQ