Agent skill · github
server-side-conversion-tracking
Set up server-side conversion tracking so purchases are reported accurately to Facebook, TikTok, Google and Bing despite iOS restrictions, ad blockers and cookie loss. Use when conversions are under-reported, when platform-reported purchases do not match real orders, when asked about Conversions API / Events API / offline conversions / CAPI, click id passthrough (fbclid, ttclid, gclid, msclkid), or when ad optimization has degraded after tracking changes.
What it needs
About 5k tokens when loaded.
What this skill does
Server-Side Conversion Tracking Browser pixels lose a large and unpredictable share of conversions to iOS tracking prevention, ad blockers, cookie lifetime limits and cross-domain hops. Server-side reporting fixes the reporting, which is what the ad platform's bidding model learns from. This skill covers the model, the setup order and how to verify it. When to use Ad platform reports fewer purchases than the store/database actually recorded CPA looks like it got worse right after a tracking change, with no change in real sales Setting up a new funnel that will receive paid traffic Asked about CAPI / Events API / offline conversion import / click id passthrough Attribution disagreements between platforms ("Facebook claims 40 sales, Google claims 30, we had 45 orders") The model, in the order it must be built Getting this order wrong is the usual reason a "server-side setup" still under-reports. Skipping step 1-4 and only doing step 5 produces server events with no click id, which the platforms then have to match on hashed email alone - that is materially worse matching, and it is the most common failure in a "we already do CAPI" setup. Step 1-2: capture and persist Platform Click id parameter --- --- Facebook / Instagram fbclid TikTok ttclid Google Ads gclid (also wbraid / gbraid on iOS app-to-web) Microsoft / Bing msclkid Also capture, on the same first hit: utmsource, utmmedium, utmcampaign, utmcontent, utmterm, the full landing URL, referrer, user agent, and the client IP as seen by the server. Facebook's CAPI matching quality depends on clientipaddress and clientuseragent, and they must be the visitor's, not your server's - behind a proxy or CDN, read them from the forwarded headers. Store server-side, keyed to a first-party session. Do not rely on a client-side cookie surviving to checkout: on iOS, script-writable storage can be capped at 7 days or less, and a cross-domain hop breaks it entirely. …
How to use it
Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:
@skills github/server-side-conversion-tracking