juma-analytics-setup
Analytics Setup
Overview
Establishes the analytics infrastructure that every other agency skill depends on for data. Creates standardized, agency-wide tracking conventions that work across all clients while allowing client-specific customization. Covers GA4 configuration, conversion event taxonomy, UTM standards, attribution modeling, dashboard design, and tag management — ensuring clean, reliable data from day one.
When to Use
- Onboarding a new client (before any audits or campaigns)
- Existing client has messy, unreliable, or incomplete analytics
- Launching a new campaign that needs tracking setup
- Client migrating from Universal Analytics or another platform
- Agency standardizing analytics practices across all accounts
- Data discrepancies are causing reporting issues
Prerequisites
- juma-client-context — business model, conversion types, marketing channels, goals
- juma-onboarding-checklist (recommended) — analytics is part of the onboarding process
Process
Step 1: Audit Existing Setup
Before building, assess what exists:
- GA4 property: Exists? Properly configured? Data flowing?
- GTM container: Exists? Organized? Who has access?
- Conversion tracking: What events are being tracked? Are they firing correctly?
- Cross-domain tracking: Needed? Configured?
- Data integrity: Filters, bot traffic exclusion, internal traffic exclusion
- Historical data: How much useful historical data exists?
- Platform pixels: Meta, Google Ads, LinkedIn, TikTok — installed and verified?
Document findings and gaps.
Step 2: Design Event Taxonomy
Create a standardized naming convention for all events:
See event-taxonomy.md for the complete agency-wide event naming convention, category definitions, examples, and key conversion event list.
Step 3: Configure GA4
Property-level settings:
- Data retention: Set to maximum (14 months)
- Google Signals: Enable for cross-device tracking
- Data collection acknowledgment: Configure per client's privacy requirements
- Internal traffic filters: Define by IP range
- Unwanted referral exclusions: Payment processors, SSO providers
- Cross-domain measurement: Configure if multi-domain
Data streams:
- Web stream with enhanced measurement enabled
- Review enhanced measurement settings (page views, scrolls, outbound clicks, site search, video engagement, file downloads)
- Disable any enhanced measurement that conflicts with custom tracking
Custom dimensions and metrics:
| Dimension/Metric | Scope | Purpose |
|---|---|---|
client_segment |
User | Audience segment identification |
content_type |
Event | Content categorization |
campaign_tier |
Event | Campaign hierarchy |
lead_score |
User | Lead quality indicator |
Step 4: Set Up GTM Container
See gtm-container-template.md for the complete container structure, naming conventions for tags/triggers/variables, folder organization, and best practices.
Step 5: Define UTM Standards
See utm-standards.md for the complete agency-wide UTM parameter convention, rules, common medium values, and example UTM strings.
Step 6: Select Attribution Model
Recommend attribution model based on business model:
| Business Model | Recommended Model | Rationale |
|---|---|---|
| Short sales cycle (ecomm) | Data-driven or last-click | Purchase decision is quick |
| Long sales cycle (B2B SaaS) | Data-driven or linear | Multiple touchpoints matter |
| Lead gen | Data-driven or position-based | First and last touch both important |
| Brand + performance mix | Data-driven | Let the algorithm weight touchpoints |
Document:
- Primary attribution model for reporting
- Secondary model for comparison/validation
- Lookback windows per channel
- Cross-device considerations
Step 7: Design Dashboards
Executive dashboard (for client stakeholders):
- Overall KPIs: Sessions, conversions, conversion rate, revenue/leads, CPA/ROAS
- Trend lines: Month-over-month, year-over-year
- Goal progress: Actual vs target
- Top-level channel performance
Channel dashboard (for agency team):
- Per-channel deep dive: Traffic, engagement, conversion metrics
- Campaign-level performance
- Audience insights: Demographics, devices, geography
- Content performance: Top pages, landing pages, exit pages
Campaign dashboard (for active campaigns):
- Campaign-specific KPIs
- Budget pacing
- Creative performance
- A/B test status
For each dashboard, specify:
- Tool: Looker Studio, GA4 Explorations, or client's preferred BI tool
- Refresh cadence: Real-time, daily, weekly
- Access: Who can view, who can edit
Step 8: Configure Alerts
Set up automated alerts for:
| Alert | Condition | Notification |
|---|---|---|
| Traffic drop | >20% decrease vs previous period | Email to account team |
| Conversion spike/drop | >30% change in conversion rate | Email + Slack |
| Budget pacing | >110% or <80% of daily budget | Email to media team |
| 404 errors | >10 per hour | Email to SEO team |
| Goal completion | Monthly target reached | Email to account team |
Step 9: Document Everything
Create a client-specific analytics documentation:
- Property and container IDs: GA4, GTM, platform pixel IDs
- Event taxonomy: Full list of custom events with descriptions
- Conversion events: Which events are marked as conversions
- UTM convention: Client-specific examples
- Dashboard locations: URLs and access instructions
- Alert configurations: What triggers what notification
- Access log: Who has access to what, at what permission level
- Change log: History of configuration changes
Output Format
# Analytics Setup: [Client Name]
**Prepared by**: [Agency Name] | **Date**: [Date]
## Setup Summary
| Component | Status | Details |
|-----------|--------|---------|
| GA4 Property | [Configured/Existing/New] | Property ID: [ID] |
| GTM Container | [Configured/Existing/New] | Container ID: [ID] |
| Conversion tracking | [N] events configured | [List key events] |
| Platform pixels | [List platforms] | [Status each] |
| UTM standards | Documented | [Link to UTM builder] |
| Dashboards | [N] created | [List with URLs] |
| Alerts | [N] configured | [List key alerts] |
## Event Taxonomy
| Event Name | Type | Description | Conversion? | Parameters |
|-----------|------|-------------|-------------|------------|
| [event_name] | [Custom/Enhanced] | [Description] | [Yes/No] | [key params] |
## Conversion Events
| Event | Type | Value | Counting |
|-------|------|-------|----------|
| [event] | [Primary/Secondary] | [$X or N/A] | [Once per session/Every] |
## UTM Standards
| Parameter | Convention | Client Examples |
|-----------|-----------|-----------------|
| utm_source | [Convention] | [Examples] |
| utm_medium | [Convention] | [Examples] |
| utm_campaign | [Convention] | [Examples] |
## GTM Container Structure
### Tags
| Tag Name | Platform | Type | Trigger | Status |
|----------|----------|------|---------|--------|
| [Name] | [Platform] | [Type] | [Trigger name] | [Active/Draft] |
### Key Triggers
| Trigger Name | Type | Conditions |
|-------------|------|------------|
| [Name] | [Type] | [Conditions] |
## Attribution Model
- **Primary model**: [Model name]
- **Rationale**: [Why this model]
- **Lookback window**: [N days click, N days view]
## Dashboards
| Dashboard | Audience | Tool | URL | Refresh |
|-----------|----------|------|-----|---------|
| Executive | Client stakeholders | [Tool] | [URL] | [Cadence] |
| Channel | Agency team | [Tool] | [URL] | [Cadence] |
| Campaign | Media team | [Tool] | [URL] | [Cadence] |
## Alerts
| Alert | Condition | Recipients | Channel |
|-------|-----------|------------|---------|
| [Alert name] | [Trigger condition] | [Who] | [Email/Slack] |
## Access Log
| Platform | Account/Property | User | Permission Level |
|----------|-----------------|------|-----------------|
| [Platform] | [Account] | [User/Email] | [Admin/Editor/Viewer] |
## Documentation & References
- Event taxonomy spreadsheet: [Link]
- UTM builder: [Link]
- GTM change log: [Link]
- Analytics playbook: [Link]
Common Mistakes
- No naming convention — Without a standard, event names become inconsistent across clients and team members. Establish and enforce the convention
- Over-tracking — Tracking everything creates noise. Focus on events tied to business outcomes
- Forgetting enhanced measurement conflicts — GA4's built-in enhanced measurement can conflict with custom GTM tags, causing double-counting
- No internal traffic filter — Agency and client team visits skew data. Always filter internal traffic
- Missing cross-domain setup — If the client has multiple domains in the user journey (e.g., blog on subdomain, checkout on different domain), cross-domain tracking is essential
- Skipping the documentation — When the team member who set it up leaves, undocumented analytics becomes a black box. Document everything
- Not testing before launch — Always use GTM Preview mode and GA4 DebugView before publishing changes
Related Skills
- juma-onboarding-checklist — Analytics setup is a key onboarding step
- juma-reporting — Clean analytics data enables accurate reporting
- juma-ab-test-plan — Testing requires proper conversion tracking
- juma-campaign-plan — Campaign measurement depends on analytics setup
- juma-paid-media-plan — Conversion tracking and attribution for paid media
- juma-channel-audit — Accurate channel data requires proper tracking