Individual skill
conversion-tracking
When the user wants to set up, audit, or fix conversion tracking to Google Ads, Meta, GA4, LinkedIn, and TikTok, or asks why conversions are missing or doubled: GTM, pixels, CAPI, Enhanced Conversions, offline imports. Fire on confirmed success, not the submit click; verify a test conversion arrives; diagnose before changing; offer free paths and disclose partner tools. For tracking plans, see analytics. For attribution, see attribution. For bidding, see ads.
skills/conversion-tracking/SKILL.md
Source commit 8a3bde8083bd121971f61cba4bdbe5fd8c0eee7d
What was checked
- Matches the observed repository HEAD
- Yes
- Scanner rules are current
- Yes
- Repository scan complete
- No
- Skill scan complete
- No
- Observed behavior
- Network or broad shell
- Last checked
- Nov 10, 2026
These are observations at the recorded commit, not a guarantee of safety. Review the source before running it.
Install this skill
Choose an agent in your Stack or copy a command below. Commands fetch the pinned commit and copy only this skill directory. Existing destinations are refused. Copying a command does not install anything.
An install command is unavailable: current rules, complete repository and skill scans, an eligible behavior level and a permitted license are required.
Repository context
- Repository stars (not skill ratings)
- 59,651
- Repository last updated
- Nov 11, 2026
- License
- MIT
Observed agent integration: No specific integration evidence. Standard SKILL.md installation does not imply verified compatibility.
- claude Repository topic
- codex Repository topic
- marketing Repository topic
- agent-skills Repository topic
- ai-agents Repository topic
- ai-seo Repository topic
- claude-code Repository topic
- claude-code-plugin Repository topic
- claude-skills Repository topic
- content-marketing Repository topic
- data Derived category
- security Derived category
- testing Derived category
Files and excerpt
File metadata and permitted, redacted excerpts come from the recorded scan. Source links are pinned to that commit.
Browse files
SKILL.mdcore · 30,472 bytesSKILL.mdcore · 30,472 bytesSKILL.mdcore · 30,472 bytesassets/gtm-recipes/README.mddoc · 6,405 bytesassets/gtm-recipes/detect/detect-acuity-scheduling.jsonasset · 7,154 bytesassets/gtm-recipes/detect/detect-cal-com.jsonasset · 9,059 bytesassets/gtm-recipes/detect/detect-calendly.jsonasset · 7,873 bytesassets/gtm-recipes/detect/detect-contact-form-7.jsonasset · 6,460 bytesassets/gtm-recipes/detect/detect-divi-forms.jsonasset · 5,092 bytesassets/gtm-recipes/detect/detect-elementor-forms.jsonasset · 4,463 bytesassets/gtm-recipes/detect/detect-file-download.jsonasset · 5,098 bytesassets/gtm-recipes/detect/detect-fluent-forms.jsonasset · 6,939 bytesassets/gtm-recipes/detect/detect-formidable-forms.jsonasset · 11,029 bytesassets/gtm-recipes/detect/detect-forminator.jsonasset · 5,616 bytesassets/gtm-recipes/detect/detect-framer-forms.jsonasset · 6,487 bytesassets/gtm-recipes/detect/detect-generic-ajax-form.jsonasset · 8,012 bytesassets/gtm-recipes/detect/detect-gravity-forms.jsonasset · 15,762 bytesassets/gtm-recipes/detect/detect-hubspot-forms.jsonasset · 9,472 bytesassets/gtm-recipes/detect/detect-jotform.jsonasset · 3,885 bytesassets/gtm-recipes/detect/detect-ninja-forms.jsonasset · 8,605 bytesassets/gtm-recipes/detect/detect-phone-click.jsonasset · 4,745 bytesassets/gtm-recipes/detect/detect-squarespace-forms.jsonasset · 18,966 bytesassets/gtm-recipes/detect/detect-tally.jsonasset · 10,662 bytesassets/gtm-recipes/detect/detect-thank-you-page.jsonasset · 6,326 bytesassets/gtm-recipes/detect/detect-typeform.jsonasset · 8,061 bytesassets/gtm-recipes/detect/detect-webflow-forms.jsonasset · 5,695 bytesassets/gtm-recipes/detect/detect-wix-forms.jsonasset · 9,772 bytesassets/gtm-recipes/detect/detect-wix-scheduling.jsonasset · 5,199 bytesassets/gtm-recipes/detect/detect-wpforms.jsonasset · 11,381 bytesassets/gtm-recipes/detect/detect-ws-form.jsonasset · 4,777 bytesassets/gtm-recipes/event-map.jsonasset · 3,211 bytesassets/gtm-recipes/send/ga4.jsonasset · 1,859 bytesassets/gtm-recipes/send/google-ads.jsonasset · 2,765 bytesassets/gtm-recipes/send/linkedin.jsonasset · 3,851 bytesassets/gtm-recipes/send/meta.jsonasset · 4,218 bytesassets/gtm-recipes/send/microsoft.jsonasset · 4,105 bytesassets/gtm-recipes/send/tiktok.jsonasset · 4,464 bytesassets/snippets/README.mddoc · 17,719 bytesassets/snippets/acuity-scheduling-field.htmlasset · 1,290 bytesassets/snippets/acuity-scheduling.jsruns · 3,368 bytesassets/snippets/cal-com.jsruns · 5,650 bytesassets/snippets/calendly.jsruns · 4,923 bytesassets/snippets/contact-form-7.jsruns · 3,964 bytesassets/snippets/divi-forms.jsruns · 2,657 bytesassets/snippets/elementor-forms.jsruns · 2,013 bytesassets/snippets/file-download.jsruns · 3,230 bytesassets/snippets/fluent-forms.jsruns · 4,407 bytesassets/snippets/formidable-forms.jsruns · 8,414 bytesassets/snippets/forminator.jsruns · 3,164 bytesassets/snippets/framer-forms.jsruns · 3,990 bytesassets/snippets/generic-ajax-form.jsruns · 6,069 bytesassets/snippets/gravity-forms.jsruns · 13,094 bytesassets/snippets/hubspot-forms.jsruns · 6,921 bytesassets/snippets/jotform.jsruns · 1,465 bytesassets/snippets/ninja-forms.jsruns · 6,058 bytesassets/snippets/phone-click.jsruns · 2,870 bytesassets/snippets/squarespace-forms.jsruns · 15,690 bytesassets/snippets/tally.jsruns · 7,668 bytesassets/snippets/thank-you-page.jsruns · 4,430 bytesassets/snippets/typeform.jsruns · 5,080 bytesassets/snippets/webflow-forms.jsruns · 3,245 bytesassets/snippets/wix-forms.jsruns · 7,145 bytesassets/snippets/wix-scheduling.jsruns · 2,722 bytesassets/snippets/wpforms.jsruns · 8,797 bytesassets/snippets/ws-form.jsruns · 2,346 bytesevals/evals.jsonasset · 21,506 bytesreferences/audit-playbook.mddoc · 12,862 bytesreferences/browser-side.mddoc · 23,029 bytesreferences/conversion-moments.mddoc · 32,010 bytesreferences/discrepancies.mddoc · 13,767 bytesreferences/ecommerce-platforms.mddoc · 10,127 bytesreferences/google-ads.mddoc · 30,294 bytesreferences/meta.mddoc · 18,249 bytesreferences/other-platforms.mddoc · 20,004 bytesreferences/server-side.mddoc · 31,914 bytesscripts/build_recipe.pyruns · 11,107 bytesscripts/check_recipes.pyruns · 3,246 bytes
Read excerpt
# Conversion Tracking
You help people set up conversion tracking that provably works, or find out exactly why their existing tracking doesn't. Everything you recommend should be fitted to what they actually run and where the data needs to go, and every finding you report should say how you learned it.
One rule sits above everything else here. If a test conversion can safely be fired, the job isn't done until one demonstrably arrived. And if it can't be fired, say plainly what remains unverified rather than implying it all works.
## The one distinction that drives everything
There are two kinds of conversions, and they break in completely different ways.
**Lead generation** covers things like a form being submitted, a meeting being booked, a chat being started, or a phone number being called. The tricky part is that the browser is often the only place these moments are reliably visible. Many sites have no backend record of "contact form submitted" (some do, through a form tool's webhook or the site's own backend, and those are worth using), so success usually has to be worked out from a signal in the page, and every form and booking tool signals success differently. Getting that signal wrong is the single most common cause of tracking that looks fine but is quietly wrong. Fire on the submit button and you count failed submissions and bots. Fire on a thank-you page and you count refreshes.
**Ecommerce** covers purchases and subscriptions. Here the hard part of lead gen simply doesn't exist, because an order record does. The store knows a purchase happened, so knowing the conversion is real is nearly free. The difficulty moves elsewhere instead. Is the value right (tax and shipping in or out, and in which currency)? Does the item data match the merchant feed? Are the browser pixel and the server event deduplicated so each sale counts once? Are the pre-purchase events (view item, add to cart, begin checkout) flowing, since that's what the platforms optimise on? And what happens when an order is refunded?