The six
Every audit I run starts with these six checks. Most DTC brands fail four or five.
1. Hashed email missing on non-purchase events
Shopify's native CAPI integration passes email only on the Purchase event. You need em (hashed email) on ViewContent and AddToCart too. Missing this drops match quality by 1 to 1.5 points on every upper-funnel event.
2. event_id not matching between pixel and CAPI
The deduplication key has to be identical on both sides. Most brands forget this and end up double-counting half their events and under-counting the other half. Both are bad.
3. No external_id passed
“This is the single highest-leverage fix. Pass a hashed Shopify customer ID as
”external_idon every authenticated event. I've seen this alone move match quality from 3.8 to 6.2.
4. Event names inconsistent across sources
Shopify sends Purchase. Your custom GTM events send purchase. Meta treats these as different events. Standardize on the capitalized version.
5. Event source URL missing
Server-side events need event_source_url set to the page URL where the event occurred, not your server endpoint. Missing this kills the attribution window.
6. Duplicate events fired from GTM web + CAPI
The fix
All six are covered in the CAPI Playbook ($129, preorder open). It's the exact workflow I ship for DTC brands, with the Claude Code prompts and the GTM container export.
Or if you want me to audit it for you directly, the retainer bridge has a few slots open. Retainer engagements sunset 2026-12-31. After that, it's product ladder only.
