Agent skill

spitakolus-tracking-analytics

Understand and work with Spitakolus shared tracking infrastructure. GTM containers, GA4 properties, BigQuery datasets, consent mode, and event naming.

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/data/spitakolus-tracking-analytics

SKILL.md

Spitakolus Tracking & Analytics

🎯 Overview

All Spitakolus projects share tracking infrastructure with project separation via hostname routing.

Golden Rule: Data flows correctly when hostname conditions are set properly.


πŸ“Š Shared Infrastructure IDs

System ID Purpose
GTM Web Container GTM-PD5N4GT3 Shared, hostname routing
GTM Server Container GTM-THB49L3K Server-side tracking
Server URL gtm.nastahem.com First-party domain
BigQuery Project nastahem-tracking Shared data warehouse

GA4 Properties (per project)

Project Measurement ID Domain
Flocken G-7B1SVKL89Q flocken.info
NΓ€sta Hem G-7N67P0KT0B nastahem.com

πŸ”§ GTM Architecture

GTM-PD5N4GT3 (Shared Web Container)
β”œβ”€β”€ Tags
β”‚   β”œβ”€β”€ Google Tag - Flocken
β”‚   β”‚   β”œβ”€β”€ Tag ID: G-7B1SVKL89Q
β”‚   β”‚   └── Condition: Page Hostname = flocken.info
β”‚   β”‚
β”‚   └── Google Tag - NΓ€sta Hem
β”‚       β”œβ”€β”€ Tag ID: G-7N67P0KT0B
β”‚       └── Condition: Page Hostname = nastahem.com
β”‚
└── Triggers (hostname-based)
    β”œβ”€β”€ Page View - Flocken (hostname = flocken.info)
    └── Page View - NΓ€sta Hem (hostname = nastahem.com)

Hostname Routing Rules

ALWAYS use hostname conditions:

  • βœ… Page Hostname equals flocken.info
  • βœ… Page Hostname equals nastahem.com
  • ❌ Never use URL-based conditions
  • ❌ Never omit conditions (causes cross-contamination)

πŸ“ˆ BigQuery Structure

nastahem-tracking/
β”œβ”€β”€ flocken_raw/        # Raw GA4 export
β”œβ”€β”€ flocken_curated/    # Cleaned data
β”œβ”€β”€ flocken_marts/      # Business metrics
β”‚
β”œβ”€β”€ nastahem_raw/       # Raw GA4 export
β”œβ”€β”€ nastahem_curated/   # Cleaned data
└── nastahem_marts/     # Business metrics

Dataset Naming Convention

Format: [project]_[type]

Type Purpose
_raw Raw GA4 export (events_YYYYMMDD)
_curated Cleaned, standardized events
_marts Business intelligence metrics

Important: Location = EU

All datasets MUST be created with location='EU' for GDPR compliance.


πŸ” Consent Mode v2

All projects use Consent Mode v2 with default denied:

javascript
window.dataLayer.push({
  'event': 'consent_default',
  'analytics_storage': 'denied',
  'ad_storage': 'denied',
  'ad_user_data': 'denied',
  'ad_personalization': 'denied',
  'functionality_storage': 'granted',
  'security_storage': 'granted'
});

Cookie Banner Updates Consent:

  • User accepts β†’ gtag('consent', 'update', {...})
  • Tracking only fires AFTER consent granted

GTM Tag Consent Controls

Every Google Tag must have these consent controls enabled:

  • ad_storage βœ…
  • ad_personalization βœ…
  • ad_user_data βœ…
  • analytics_storage βœ…

🏷️ Event Naming Convention

Standard Events (GA4 Enhanced Measurement)

  • page_view - Page loads
  • scroll - 90% scroll depth
  • click - Outbound links
  • file_download - File downloads
  • video_start, video_progress, video_complete

Custom Events Format

Format: [action]_[object]

Examples:

  • sign_up - User registration
  • app_install - App installation
  • listing_created - New listing
  • message_sent - Message sent

UTM Parameters

Always include for attribution:

  • utm_source - Traffic source
  • utm_medium - Marketing medium
  • utm_campaign - Campaign name (use cid!)
  • utm_content - Ad variation

πŸš€ Adding New Project to Tracking

Step 1: Create GA4 Property

  1. Google Analytics β†’ Create Property
  2. Save Measurement ID (G-XXXXXXXXXX)

Step 2: Add to GTM

  1. GTM β†’ Container GTM-PD5N4GT3
  2. Create new Google Tag with Measurement ID
  3. CRITICAL: Add hostname trigger condition

Step 3: Create BigQuery Datasets

sql
CREATE SCHEMA `nastahem-tracking.[project]_raw` OPTIONS(location='EU');
CREATE SCHEMA `nastahem-tracking.[project]_curated` OPTIONS(location='EU');
CREATE SCHEMA `nastahem-tracking.[project]_marts` OPTIONS(location='EU');

Step 4: Link GA4 β†’ BigQuery

  1. GA4 β†’ Admin β†’ BigQuery Linking
  2. Project: nastahem-tracking
  3. Location: EU
  4. Dataset: [project]_raw

⚠️ Common Mistakes to Avoid

Mistake Consequence Fix
Missing hostname condition Data goes to wrong GA4 Always add hostname trigger
Wrong Measurement ID Data lost Double-check ID
Dataset location != EU GDPR violation Always use EU
Consent not implemented Legal issues Use Consent Mode v2
Hardcoded tracking IDs Works in dev, fails in prod Use environment variables

πŸ” Debugging Checklist

When tracking isn't working:

  1. GTM Preview Mode: Is the right tag firing?
  2. Hostname check: Is the condition correct?
  3. Consent check: Did user accept cookies?
  4. Network tab: Are requests going to google-analytics.com?
  5. GA4 Realtime: Is data appearing?
  6. BigQuery: Is export enabled and working?

πŸ“Š Growth Loop Integration

Tracking is the foundation of the AI Growth Loop:

  1. Data Collection ← GTM + GA4 + BigQuery
  2. Analysis ← Query BigQuery for patterns
  3. AI Generation ← Use insights for new ads
  4. Optimization ← Track performance, pause losers

Every event you track becomes data for the Growth Loop.


πŸ”— Detailed Documentation

  • GTM_SHARED_CONTAINER.md
  • BIGQUERY_SHARED_PROJECT.md
  • Project-specific: See each project's docs/tracking/ folder

Expand your agent's capabilities with these related and highly-rated skills.

Didn't find tool you were looking for?

Be as detailed as possible for better results