Systems Lab

Agent skill

tracking-plan-builder

This skill should be used when the user asks to \"build a tracking plan\", \"map business goals to conversion events\", \"audit what events to track\", \"define event naming conventions\", or mentions \"measurement strategy\", \"cross-platform event mapping\", or \"KPI to event mapping\".

activeSelf-containedInstructions only2,601 words

Filed under Analytics and reporting.

From Ad-Superpowers/ad-superpowers-plugin · 120 skills · 5 · pushed 2026-09-10

What it does when it runs

This skill should be used when the user asks to \"build a tracking plan\", \"map business goals to conversion events\", \"audit what events to track\", \"define event naming conventions\", or mentions \"measurement strategy\", \"cross-platform event mapping\", or \"KPI to event mapping\". Do NOT use for: GTM tag/trigger implementation (use gtm-conversion-setup-guide), server-side tagging (use gtm-server-side-tagging-guide), or consent/privacy setup (use gtm-consent-mode-guide).

Read from the skill and the 0 files bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.

Keys and connectors you must supply
None found.
Hosts it reaches
No third-party host appears in the skill or its bundled files.
Tool permissions it declares
No allowed-tools in the frontmatter. It only issues instructions, so there is nothing to bound.
Actions present in the files
None. Instructions only.

Ask about tracking-plan-builder

Opens your assistant with this page's verified links already in the prompt.

Is this safe to install?ClaudeChatGPT
Adapt it to my stackClaudeChatGPT
What else do I need for it to workClaudeChatGPT
Rather ask a human? Talk to Cheetah
git clone --depth 1 --filter=blob:none --sparse https://github.com/Ad-Superpowers/ad-superpowers-plugin.git /tmp/ad-superpowers-plugin
git -C /tmp/ad-superpowers-plugin sparse-checkout set "plugin/skills/tracking-plan-builder"
mkdir -p ~/.claude/skills/tracking-plan-builder
cp -R "/tmp/ad-superpowers-plugin/plugin/skills/tracking-plan-builder/." ~/.claude/skills/tracking-plan-builder/

Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗

Or take the whole library

This repo ships a .claude-plugin manifest, so Claude Code can install all 120 skills at once. Plugin skills are invoked as /<plugin>:<skill>, so they never collide with your own.

/plugin marketplace add Ad-Superpowers/ad-superpowers-plugin
/plugin

The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.

Reproduced in full from Ad-Superpowers/ad-superpowers-plugin/blob/9b6385d2d2d228e4dac096a1d6bc5715c04fa736/plugin/skills/tracking-plan-builder/SKILL.md, which is licensed MIT (repository). 2,601 words, 43 headings.

Tracking Plan Builder

A tracking plan is the single source of truth for what your website or app measures. Without one, you end up with duplicate events, missing parameters, inconsistent naming, and ad platforms that cannot optimize because they never receive the signals they need. This skill walks you through creating a tracking plan from business goals down to individual event parameters, then maps those events to every ad platform you run.

Step 1: Identify Your Business Model

Your business model determines which events matter most. Start here before touching any tool.

Business Model Decision Tree

What does the user DO on your site?
|
+-- Buys a product online -----------> E-COMMERCE
|
+-- Fills out a form / requests quote -> LEAD GENERATION
|
+-- Signs up for a trial / subscribes -> SaaS
|
+-- Calls, visits store, books appt --> LOCAL BUSINESS
|
+-- Multiple of the above -----------> HYBRID (pick primary, layer secondary)

Step 2: Map Goals to KPIs to Events

E-Commerce Tracking Plan

Business GoalKPIGA4 EventKey Parameters
RevenueTotal revenuepurchasevalue, currency, transaction_id, items[]
Cart performanceCart-to-purchase rateadd_to_cartvalue, currency, items[]
Checkout drop-offCheckout completion ratebegin_checkoutvalue, currency, items[], coupon
Product interestProduct view rateview_itemvalue, currency, items[]
DiscoveryList engagementview_item_listitem_list_id, item_list_name, items[]
PromotionsPromo click rateselect_promotionpromotion_id, promotion_name, creative_name
Shipping infoShipping step rateadd_shipping_infovalue, currency, shipping_tier
Payment infoPayment step rateadd_payment_infovalue, currency, payment_type
RefundsRefund raterefundvalue, currency, transaction_id, items[]
WishlistsWishlist engagementadd_to_wishlistvalue, currency, items[]

Lead Generation Tracking Plan

Business GoalKPIGA4 EventKey Parameters
Lead volumeTotal leadsgenerate_leadvalue, currency, lead_type
Form engagementForm start rateform_start (custom)form_id, form_name, form_location
Contact requestsContact form submissionscontact_form_submit (custom)form_id, lead_type
Phone callsCall click rateclick_to_call (custom)phone_number, page_location
Content downloadsDownload ratefile_downloadfile_name, file_extension, link_url
Demo requestsDemo booking ratedemo_request (custom)value, service_type
Quote requestsQuote request ratequote_request (custom)value, service_category

SaaS Tracking Plan

Business GoalKPIGA4 EventKey Parameters
Sign-upsRegistration ratesign_upmethod
Trial startsTrial activation ratetrial_start (custom)plan_name, trial_length
ActivationFeature adoptionfeature_use (custom)feature_name, feature_category
SubscriptionConversion to paidpurchasevalue, currency, plan_name, billing_cycle
UpgradesUpgrade rateplan_upgrade (custom)old_plan, new_plan, value
EngagementDAU/MAU ratiologinmethod
OnboardingOnboarding completiontutorial_completestep_count

Local Business Tracking Plan

Business GoalKPIGA4 EventKey Parameters
Store visitsDirection clicksget_directions (custom)store_id, store_name
Phone callsCall clicksclick_to_call (custom)phone_number, store_id
AppointmentsBooking ratebook_appointment (custom)service_type, value, store_id
Online ordersOrder valuepurchasevalue, currency, transaction_id
ReservationsReservation ratereserve (custom)party_size, date, store_id
ContactInquiry rategenerate_leadvalue, lead_type, store_id

Step 3: Event Naming Conventions

Consistent naming prevents chaos at scale. Adopt one convention and enforce it everywhere.

Recommended Convention: snake_case (GA4 standard)

{object}_{action}

Examples:
  form_submit         (not formSubmit, not Form Submit)
  video_play          (not videoPlay)
  click_to_call       (not clickToCall)
  product_view        (not productView)

Rules

RuleGoodBad
Use snake_caseform_submitformSubmit, Form Submit
Max 40 charactersnewsletter_signupuser_newsletter_email_signup_completed
No spaces or special charactersadd_to_cartadd to cart, add-to-cart
Start with noun or verbpurchase, view_item1_purchase, _view
No PII in event namesform_submitjohn_form_submit
Use GA4 recommended names when they existpurchasecompleted_order
Prefix custom events consistentlycustom_quiz_completequiz_complete (ambiguous origin)

Parameter Naming

{object}_{descriptor}

Examples:
  item_id             (not itemId)
  item_name           (not itemName)
  form_id             (not formID)
  lead_type           (not leadType)
  button_text         (not buttonText)

Reserved Parameter Names (GA4)

Do not create custom parameters with these names -- they are already used by GA4:

page_location, page_referrer, page_title, screen_name, engagement_time_msec, session_id, user_id, debug_mode

Step 4: Priority Matrix

Not every event deserves equal attention. Use this matrix to decide implementation order.

Priority Levels

PriorityLabelDefinitionTimeline
P0Must TrackRevenue/conversion events that ad platforms need for optimizationWeek 1
P1Should TrackFunnel events that explain drop-offs and inform biddingWeek 1-2
P2Nice to HaveEngagement events for audience building and analysisWeek 2-4
P3FutureAdvanced events for mature measurement setupsMonth 2+

E-Commerce Priority Matrix

PriorityEvents
P0purchase, add_to_cart, begin_checkout
P1view_item, add_payment_info, add_shipping_info
P2view_item_list, select_item, add_to_wishlist, select_promotion
P3view_cart, remove_from_cart, refund, view_promotion

Lead Gen Priority Matrix

PriorityEvents
P0generate_lead (main form), purchase (if applicable)
P1form_start, click_to_call, demo_request
P2file_download, video_play, page_scroll (key pages)
P3newsletter_signup, social_share, chat_open

SaaS Priority Matrix

PriorityEvents
P0sign_up, purchase (subscription), trial_start
P1login, feature_use (core feature), plan_upgrade
P2tutorial_complete, invite_sent, integration_connected
P3settings_changed, export_data, support_ticket

Step 5: Platform-Specific Event Mapping

Each ad platform needs specific events sent in specific formats. This table maps your GA4 events to every platform.

Cross-Platform Event Map

GA4 EventMeta PixelGoogle AdsLinkedInTikTok
purchasePurchasepurchase / Conversion Actionconversion (custom)CompletePayment
add_to_cartAddToCartadd_to_cart--AddToCart
begin_checkoutInitiateCheckoutbegin_checkout--InitiateCheckout
view_itemViewContentview_item--ViewContent
generate_leadLeadsubmit_lead_formconversion (custom)SubmitForm
sign_upCompleteRegistrationsign_upconversion (custom)CompleteRegistration
add_payment_infoAddPaymentInfoadd_payment_info--AddPaymentInfo
searchSearch----Search
contactContact----Contact
page_viewPageView (auto)page_view (auto)pageview (auto)PageView (auto)

Platform-Specific Parameter Requirements

Meta Pixel Parameters

Meta requires these parameters for optimization to work:

ParameterRequired ForFormat
valuePurchase, AddToCart, InitiateCheckoutFloat (e.g., 49.99)
currencyAny event with valueISO 4217 (e.g., "EUR", "USD")
content_idsDynamic Product AdsArray of product IDs matching catalog
content_typeDynamic Product Ads"product" or "product_group"
content_nameViewContent optimizationProduct/page name string
num_itemsAddToCart optimizationInteger count

Google Ads Parameters

ParameterRequired ForFormat
valueSmart Bidding (tROAS)Float
currencySmart Bidding (tROAS)ISO 4217
transaction_idDeduplicationUnique string
send_toConversion tracking"AW-XXXXXXXXX/XXXXXX"
new_customerNew Customer Acquisition goalBoolean

LinkedIn Parameters

ParameterRequired ForFormat
conversionIdConversion trackingLinkedIn conversion ID
valueRevenue trackingFloat
currencyRevenue trackingISO 4217

TikTok Parameters

ParameterRequired ForFormat
valueValue-based optimizationFloat
currencyValue-based optimizationISO 4217
content_idDynamic Showcase AdsProduct ID string
content_typeDynamic Showcase Ads"product" or "product_group"
content_nameReportingString
quantityReportingInteger

Step 6: The items[] Array (E-Commerce)

The items[] array is shared across GA4, Google Ads, and (in adapted form) Meta and TikTok. Get this right once and every platform benefits.

Standard items[] Object

{
  "item_id": "SKU-12345",
  "item_name": "Blue Running Shoe",
  "item_brand": "BrandName",
  "item_category": "Shoes",
  "item_category2": "Running",
  "item_category3": "Men",
  "item_variant": "Blue / Size 10",
  "price": 129.99,
  "quantity": 1,
  "discount": 10.00,
  "coupon": "SUMMER10",
  "index": 0,
  "item_list_id": "category_shoes",
  "item_list_name": "Shoes Category Page"
}

Minimum Viable items[] (P0)

If you cannot populate every field, these are the absolute minimum:

{
  "item_id": "SKU-12345",
  "item_name": "Blue Running Shoe",
  "price": 129.99,
  "quantity": 1
}

Step 7: Tracking Plan Spreadsheet Template

Use this structure in Google Sheets or Excel. One row per event.

Column Structure

ColumnDescriptionExample
Event Namesnake_case event namepurchase
Event TypeStandard or CustomStandard
PriorityP0 / P1 / P2 / P3P0
DescriptionWhat triggers this eventUser completes checkout
Trigger LocationPage or element/checkout/confirmation
ParametersJSON-like listvalue, currency, transaction_id, items[]
GA4Checkmark if sent to GA4Yes
MetaMatching Meta event namePurchase
Google AdsMatching conversion actionpurchase
LinkedInMatching conversion nameconversion
TikTokMatching TikTok eventCompletePayment
Data SourceWhere the data comes fromData Layer / URL / DOM
OwnerWho implementsDeveloper / Agency
StatusNot Started / In Progress / Live / QALive
NotesImplementation notesFires after payment confirmation

Example Row

Event NameTypePriorityDescriptionTriggerParametersGA4MetaGoogle AdsLinkedInTikTokSourceOwnerStatus
purchaseStandardP0Order confirmed/thank-youvalue, currency, transaction_id, items[]YesPurchasepurchaseconversionCompletePaymentData LayerDevLive
generate_leadStandardP0Contact form submit/contactvalue, lead_typeYesLeadsubmit_lead_formconversionSubmitFormForm SubmitDevQA
form_startCustomP1User begins form/contactform_id, form_nameYes--------JS listenerDevNot Started

Step 8: Data Layer Design

The data layer is the bridge between your website and your tags. A well-structured data layer makes GTM implementation straightforward.

Standard Data Layer Push (E-Commerce Purchase)

window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
  event: 'purchase',
  ecommerce: {
    transaction_id: 'T-20260403-001',
    value: 149.99,
    currency: 'EUR',
    tax: 26.05,
    shipping: 5.99,
    coupon: 'SPRING10',
    items: [
      {
        item_id: 'SKU-12345',
        item_name: 'Blue Running Shoe',
        item_brand: 'BrandName',
        item_category: 'Shoes',
        price: 129.99,
        quantity: 1,
        discount: 10.00
      }
    ]
  }
});

Standard Data Layer Push (Lead Gen)

window.dataLayer.push({
  event: 'generate_lead',
  lead_type: 'contact_form',
  form_id: 'contact-main',
  value: 50,
  currency: 'EUR'
});

Data Layer Validation Checklist

  • dataLayer is initialized before GTM snippet loads
  • All monetary values are numbers (not strings)
  • Currency is ISO 4217 (3-letter code)
  • transaction_id is unique per transaction
  • items[] array is present for all e-commerce events
  • Each item has at minimum item_id, item_name, price, quantity
  • No PII (names, emails, phone numbers) in the data layer
  • Custom event names follow snake_case convention
  • Events fire at the correct moment (after action, not on page load)

Step 9: Audit Your Current Setup

Use the Ad Superpowers MCP tools to audit what you currently have:

Available MCP Tools

  1. gtm_list_containers -- List all GTM containers to identify which accounts and containers exist. Start here to get your container IDs.

  2. gtm_audit -- Audit a GTM container to see all tags, triggers, and variables currently configured. Compare this against your tracking plan to find gaps.

  3. ga4_run_report -- Pull GA4 reports to verify which events are actually arriving and with what parameters. Cross-reference with your tracking plan to find events that are planned but not firing, or firing but not planned.

Audit Workflow

1. gtm_list_containers
   -> Get container ID and account ID

2. gtm_audit(container_path="accounts/123456/containers/789012")
   -> Export all tags, triggers, variables
   -> Compare against tracking plan

3. ga4_run_report(
     property_id="...",
     dimensions=["eventName"],
     metrics=["eventCount"],
     start_date="28daysAgo",
     end_date="today"
   )
   -> See which events actually fire
   -> Check for events in GA4 not in your plan (rogue events)
   -> Check for events in your plan not in GA4 (missing events)

Common Audit Findings

FindingSeverityAction
P0 event missing entirelyCriticalImplement immediately
P0 event fires but missing value parameterHighAdd parameter to data layer
Duplicate events (same event, different tags)HighConsolidate into single tag
Events with wrong naming conventionMediumRename and migrate
Rogue events not in tracking planLowDocument or remove
P2/P3 events not yet implementedLowSchedule for next sprint

Step 10: Maintenance and Governance

A tracking plan is a living document. Without governance, it rots within months.

Quarterly Review Checklist

  • All P0 events verified firing correctly (check GA4 real-time)
  • New features/pages assessed for tracking needs
  • Removed pages/features: decommission orphaned events
  • Ad platform conversion actions match tracking plan
  • Data layer schema matches tracking plan parameters
  • GTM container audit shows no unauthorized tags
  • Consent mode functioning (check consent rates)
  • Cross-platform conversion counts reconciled

Change Management Process

1. Request: "We need to track X"
2. Add to tracking plan spreadsheet (event name, parameters, platforms, priority)
3. Review: Does this duplicate an existing event? Is naming consistent?
4. Implement: Data layer push + GTM tags
5. QA: Verify in GTM Preview, GA4 DebugView, platform event managers
6. Document: Update tracking plan status to "Live"
7. Monitor: Check event counts after 48 hours

Version History

Keep a changelog tab in your tracking plan:

DateChangeReasonAuthor
2026-04-01Added quiz_complete eventNew quiz feature launchDev team
2026-03-15Removed old_form_submitForm redesignedMarketing
2026-03-01Added value to generate_leadEnable Google Ads tROAS biddingPPC team

Other skills for the same job

Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.

Need help setting it up?

This page tells you what tracking-plan-builder does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.

Book a call →

The directory stays free. There is nothing gated behind this.