The CTA click is the single most valuable event on a marketing site — it is the moment intent converts to action. Without a tracked click event, you cannot measure CTA copy experiments, cannot tell whether the hero or pricing page drives more signups, cannot debug funnels that drop off between click and form submission, and cannot compare variant performance. You see the downstream signup but lose the entire top of the funnel that produced it.
High because untracked primary CTAs make every conversion optimization experiment unmeasurable.
Wrap every primary CTA click handler with an event call that names the location and variant:
<button onClick={() => {
analytics.track('cta_clicked', { location: 'hero', variant: 'primary' })
router.push('/signup')
}}>Get Started</button>
Use specific names like hero_cta_clicked or pricing_signup_clicked, not generic button_click. Audit components/Hero.tsx, components/Pricing.tsx, and any CTA or Banner components first.
ID: marketing-analytics.event-conversion-tracking.cta-click-events
Severity: high
What to look for: Identify the primary call-to-action buttons in the project (sign up, get started, try for free, book demo, buy now, subscribe, start trial — whatever drives the project's core conversion). Check whether click handlers on these buttons include an analytics event call. Look in:
CTA, Hero, Pricing, Banner, OnboardingPass criteria: Count every primary CTA button across the codebase (hero, pricing, navigation, modal triggers). At least 80% of identified primary CTA buttons have analytics event calls in their click handlers or are wrapped in an analytics-instrumented component. Quote the event name used for each tracked CTA.
Fail criteria: Primary CTA buttons have no analytics event calls — clicks are invisible to analytics. Or analytics is imported but event calls are commented out or use placeholder event names like 'TODO' or 'button_click' with no specificity. Do NOT pass if fewer than 80% of primary CTAs are tracked.
Cross-reference: For a deeper analysis of conversion event tracking strategy and which CTAs matter most, the Conversion Optimization audit in the Marketing Site Pack covers this in detail.
Skip (N/A) when: No analytics is present (script-present failed). Skip also if the project has no CTA buttons (API-only or developer tool with no marketing pages).
Detail on fail: "Hero CTA button in components/Hero.tsx has no analytics event call. Pricing page CTA in components/Pricing.tsx has no analytics event call. Primary conversion actions are invisible to analytics."
Remediation: Add analytics event calls to your primary CTAs:
// Before: plain button
<button onClick={() => router.push('/signup')}>Get Started</button>
// After: instrumented button
<button onClick={() => {
analytics.track('cta_clicked', { location: 'hero', variant: 'primary' })
router.push('/signup')
}}>Get Started</button>
Use descriptive event names that identify where the click happened (hero_cta_clicked, pricing_signup_clicked) rather than generic names. For a deeper analysis of conversion tracking strategy, the Conversion Optimization audit in the Marketing Site Pack covers which events matter most.