Source:
contents/prompts/features/08 - analytics-tracking-bdd.md
This document lists every GA4 event that must be implemented on ignitionstack.pro following the BDD specifications.
All events MUST include the following parameters:
| Parameter | Type | Description |
|---|---|---|
locale | string | Page locale (en, pt, es) |
page_path | string | URL path (/en/contact) |
page_title | string | Page title |
funnel_stage | string | awareness, consideration, conversion, loyalty |
source_component | string | Component that fired the event |
environment | string | production, development, preview (added automatically) |
import { trackGAEvent, trackPageView, getCurrentPageMetadata } from '@/app/lib/analytics';
import { usePageView } from '@/app/hooks/use-page-view';
import { useIntersectionTracking } from '@/app/hooks/use-intersection-tracking';
import { useClickTracking } from '@/app/hooks/use-click-tracking';// Hook for automatic page views
usePageView(locale);
// Click tracking
const { trackClick } = useClickTracking();
trackClick('hero_primary_cta_click', {
source_component: 'home_hero',
cta_id: 'hero_primary',
destination: href,
});
// Section impression tracking
const sectionRef = useIntersectionTracking({
sectionId: 'home_about',
funnelStage: 'awareness',
});BDD: Scenario “Register page_view per route and locale”
Trigger: Any page load
Additional parameters:
page_location (string): Full URLenvironment (string): production/development/previewImplementation: Automatic via usePageView(locale)
Status: ✅ Implemented
BDD: Scenario “Track global navigation interactions”
Trigger: Click on a navigation item in the header
Additional parameters:
nav_item (string): Clicked item ID (nav_about, nav_projects, nav_content, nav_contact)destination (string): Destination URLComponent: src/app/components/landing-page/header.tsx
Status: ⏳ Pending
BDD: Scenario “Track header theme toggles”
Trigger: Click on the theme toggle button
Additional parameters:
previous_theme (string): dark/lightnext_theme (string): dark/lightComponent: src/app/components/commons/theme-switcher.tsx
Status: ⏳ Pending
BDD: Scenario “Track hero primary CTAs”
Trigger: Click on the hero primary CTA
Additional parameters:
cta_id (string): “hero_primary”cta_destination (string): CTA hrefengagement_type (string): “click”Funnel Stage: awareness
Status: ⏳ Pending
BDD: Scenario “Track hero primary CTAs”
Trigger: Click on the hero secondary CTA
Additional parameters:
cta_id (string): “hero_secondary”cta_destination (string): CTA hrefengagement_type (string): “click”Funnel Stage: awareness
Status: ⏳ Pending
BDD: Scenario “Track impressions of key sections”
Trigger: 60% of the section enters the viewport
Additional parameters:
section_id (string): home_about, home_projects, home_content, home_contactengagement_type (string): “impression”Funnel Stages:
Implementation: Via useIntersectionTracking
Status: ⏳ Pending
BDD: Scenario “Capture highlighted project tab interactions”
Trigger: Tab selection in the projects section
Additional parameters:
tab_key (string): web, mobile, fullstack, allengagement_type (string): “tab_change”Funnel Stage: consideration
Status: ⏳ Pending
BDD: Scenario “Track the active project CTA”
Trigger: Click on the primary CTA in the projects tab
Additional parameters:
tab_key (string): Active tabdestination_type (string): internal/externaldestination (string): hrefFunnel Stage: consideration
Status: ⏳ Pending
BDD: Scenario “Track clicks on content highlights”
Trigger: Click on a content highlight card
Additional parameters:
highlight_id (string): youtube, article, podcastdestination_type (string): internal/externaldestination (string): hrefFunnel Stage: consideration
Status: ⏳ Pending
BDD: Scenario “Track clicks on the home contact channels”
Trigger: Click on a contact channel on the home page
Additional parameters:
source (string): “home”channel (string): email, whatsapp, calendlydestination (string): hrefFunnel Stage: conversion
Status: ⏳ Pending
BDD: Scenario “Track the ‘Talk to ignitionstack.pro’ CTA”
Trigger: Click on the “Talk to ignitionstack.pro” button
Additional parameters:
destination (string): ”/[locale]/contato”Funnel Stage: conversion
Status: ⏳ Pending
BDD: Scenario “Track clicks on the direct /contact channels”
Trigger: Click on a contact channel on /contact
Additional parameters:
source (string): “contact_page”channel (string): whatsapp, email, calendlydestination (string): hrefFunnel Stage: conversion
Status: ⏳ Pending
BDD: Scenario “Track when the contact form starts being filled”
Trigger: The first valid field is filled
Additional parameters:
form_id (string): “contact_main”Funnel Stage: conversion
Status: ⏳ Pending
BDD: Scenario “Track contact form submission”
Trigger: Successful form submission
Additional parameters:
form_id (string): “contact_main”subject (string): Selected subjectstatus (string): “success”Funnel Stage: conversion
Status: ⏳ Pending
BDD: Scenario “Track contact form submission”
Trigger: Validation failure
Additional parameters:
form_id (string): “contact_main”status (string): “validation”error_code (string): Error codeFunnel Stage: conversion
Status: ⏳ Pending
BDD: Scenario “Track contact form submission”
Trigger: Error while submitting the form
Additional parameters:
form_id (string): “contact_main”status (string): “error”error_code (string): Error codeFunnel Stage: conversion
Status: ⏳ Pending
BDD: Scenario “Track the self-service (#faq) click”
Trigger: Click on the FAQ link
Additional parameters:
destination (string): ”/[locale]#faq”Funnel Stage: consideration
Status: ⏳ Pending
BDD: Scenario “Track store filter adjustments”
Trigger: Any filter change
Additional parameters:
filter_name (string): search, category, stack, level, priceType, clearfilter_value (string): Filter valueresults_count (number): Number of results after the filterFunnel Stage: consideration
Status: ⏳ Pending
BDD: Scenario “Track template card interactions”
Trigger: Click on a template CTA
Additional parameters:
template_id (string): Template IDcta_type (string): view_demo, download, buy_now, subscribedestination (string): hrefprice_type (string): free/paidFunnel Stage: conversion
Status: ⏳ Pending
BDD: Scenario “Track the ‘Talk about a project’ CTA”
Trigger: Click on the contact CTA in the store
Additional parameters:
destination (string): ”/[locale]/contato”Funnel Stage: conversion
Status: ⏳ Pending
BDD: Scenario “Track affiliate link clicks”
Trigger: Click on “View offer”
Additional parameters:
product_id (string): Product IDcategory (string): Product categoryaffiliate_url (string): Affiliate linkFunnel Stage: consideration
Status: ⏳ Pending
BDD: Scenario “Track highlighted project clicks”
Trigger: Click on a project card
Additional parameters:
project_title (string): Project titledestination (string): hrefdestination_type (string): “external”Funnel Stage: consideration
Status: ⏳ Pending
BDD: Scenario “Track the ‘View on GitHub’ CTA”
Trigger: Click on the “View on GitHub” button
Additional parameters:
destination (string): “https://github.com/andersonlimahw ”Funnel Stage: consideration
Status: ⏳ Pending
BDD: Scenario “Track footer navigation clicks”
Trigger: Click on a navigation link in the footer
Additional parameters:
link_id (string): Link IDdestination (string): hrefFunnel Stage: depends on the destination
Status: ⏳ Pending
BDD: Scenario “Track social network clicks”
Trigger: Click on a social media icon
Additional parameters:
social_id (string): github, twitter, instagram, linkedindestination (string): Network URLFunnel Stage: loyalty
Status: ⏳ Pending
| Category | Total | Implemented | Pending |
|---|---|---|---|
| Global | 3 | 1 | 2 |
| Home | 8 | 0 | 8 |
| Contact | 6 | 0 | 6 |
| Store | 3 | 0 | 3 |
| Recommendations | 1 | 0 | 1 |
| Projects | 2 | 0 | 2 |
| Footer | 2 | 0 | 2 |
| TOTAL | 25 | 1 | 24 |
To validate the GA4 events:
contents/prompts/features/08 - analytics-tracking-bdd.mdsrc/app/lib/analytics.tssrc/app/hooks/use-page-view.ts, use-intersection-tracking.ts, use-click-tracking.tsLast Update: 2025-10-07 Status: 🟡 In Progress (4% complete)