TL;DR: If Admaxxer is missing whole orders that exist in Shopify (not just a few percent of revenue — actual orders), the cause is one of seven things, in this order of likelihood: (1) the Shopify Custom Pixel checkout_completed event isn't installed; (2) a tag-manager or consent banner is blocking the pixel; (3) orders/create webhook lag or failure; (4) events were quarantined by the strict-mode bug fixed on 2026-05-05 (GL#357); (5) test-mode payments excluded by design; (6) multi-currency rounding; (7) something else, escalate. This guide walks through each.
Before debugging, get a clean number. Open Shopify Admin › Orders, filter to a window where you suspect drops, and count. Then in Admaxxer, open the same window and count. The gap is:
Shopify checkout pages do not run merchant scripts by default — Shopify isolates them in their own sandbox. To capture checkout_completed for orders, Admaxxer registers a Custom Pixel via Shopify's Web Pixel API.
To verify it's installed:
After install, place a real test order. Within 30 seconds, the order should appear in Admaxxer's Realtime view at /dashboard/analytics. If it doesn't, continue to step 2.
Custom Pixels are still subject to the visitor's consent state. If you're using:
analytics_storage requirement and that the default consent state is set correctly for your region.To diagnose: open your storefront in an incognito window, decline cookies, complete a test checkout, and check whether the order appears in Admaxxer. If it does not, consent blocking is contributing. If it does, the gap is from somewhere else.
Shopify orders/create webhooks have a documented 5-second SLA, but during traffic bursts (BFCM, flash sales, big launches) they can lag minutes or fail entirely. Shopify retries failed deliveries with exponential backoff for up to 48 hours, but if all retries fail, the order is permanently missed unless we backfill.
Diagnostics:
If you see >1% webhook failure rate sustained over a 24-hour window, open support with screenshots — we'll backfill from your Shopify admin via the orders API.
Until 2026-05-05, a class of payment events were silently dropped by our Tinybird ingestion layer because of how strict-mode columns interact with optional fields in the row builder. The HTTP /v0/events endpoint returned accepted: true while the row was actually being quarantined.
The fix landed on the date above. Going forward, all events ingest correctly. If you're reconciling a window that includes dates before 2026-05-05 and seeing material order gaps that are not explained by causes 1–3, this is likely the cause. Contact support with your workspace ID and the affected date range — we can re-ingest from the upstream Shopify source.
Admaxxer excludes test orders from the default revenue and order count:
test).test_order: true via API.If you see fewer orders than Shopify's "All orders" page, but the same as Shopify's "Paid orders" filter, this is intentional — and what most customers want. To include test orders for QA, see Workspace settings › Revenue › "Include test orders".
For stores selling in 3+ currencies, very small orders (sub-$0.01 USD equivalent — typical for partial refund corrections in JPY or KRW) can be dropped by the revenue rollup pipe because their normalized amount rounds to zero. This affects fewer than 0.05% of orders for typical DTC stores but can be visible if you sell in extreme-low-denomination currencies. See multi-currency architecture for how the rollup handles edge cases.
To find out exactly which orders Admaxxer has versus what Shopify has, run this query in your Admaxxer dashboard chat (or against the API):
# Daily order count from Admaxxer's perspective
SELECT
toDate(payment_at) as day,
COUNT(DISTINCT order_id) as orders_admaxxer,
COUNT(DISTINCT CASE WHEN status = 'paid' THEN order_id END) as orders_paid,
COUNT(DISTINCT CASE WHEN test_order = true THEN order_id END) as orders_test,
SUM(amount_usd) as revenue_usd
FROM visitor_payments
WHERE workspace_id = {YOUR_WORKSPACE_ID}
AND payment_at >= toDate('2026-04-01')
AND payment_at < toDate('2026-05-01')
GROUP BY day
ORDER BY day;
Then in Shopify Admin › Orders, filter by date and count "Paid" orders only (uncheck Pending, Refunded — match Admaxxer's status = 'paid' filter). The day-by-day numbers should agree within 1–2%. Where they don't, you have a specific date to debug — and a specific list of order IDs to ask support about.
If you have a small set of order IDs you suspect are missing, this query confirms whether Admaxxer has them:
SELECT
order_id,
payment_at,
amount_usd,
status,
source
FROM visitor_payments
WHERE workspace_id = {YOUR_WORKSPACE_ID}
AND order_id IN ('SHOP-001234', 'SHOP-001235', 'SHOP-001236')
ORDER BY payment_at;
Any order ID missing from the result set is genuinely not in our database — open support with the list and we'll trace the ingest.
Open support when:
Include: the affected date range, the order IDs (if known), screenshots of both Shopify and Admaxxer counts, and the diagnostic query results above. The faster we have the order IDs, the faster we can backfill.
Sales mismatch (revenue) · Attribution discrepancies · CSP errors blocking the pixel · Shopify install · Shopify Custom App walkthrough · Shopify integration