Enterprise-Grade Framework for CDP Implementation
$1,500 Value β’ Yours FreePurpose: This tracking plan serves as the single source of truth for all customer data collection across your organization. It ensures consistency, maintains data quality, and facilitates collaboration between marketing, product, and engineering teams.
Instructions: Fill in each table with your specific events, properties, and user traits. Be as detailed as possibleβfuture you (and your team) will thank you. Use the examples as guidance, then replace with your actual tracking requirements.
Pro Tip: Start with your top 10 most important events. Don't try to document everything at once. You can always add more as you expand your tracking.
Option 1 (Recommended): Save this as HTML and convert to Google Sheets or Excel for collaborative editing.
Option 2: Print this template and fill it out by hand, then digitize.
Option 3: Use this as a reference and create your own spreadsheet following this structure.
Use the companion file
data-tracking-plan-template.csv
(same folder as this HTML when hosted). Import via File β Import in Google
Sheets. One row per event property (repeat event_name for multiple properties).
Columns: plan_version, domain, event_name,
trigger, event_description, property_name,
data_type, required, allowed_values,
example_value, pii_flag, downstream_systems,
owner, last_verified.
| Event | When it fires | Key properties (types) |
|---|---|---|
feature_used |
User completes a defined activation action |
feature_key (string, required), workspace_id (string,
optional)
|
trial_started |
Trial entitlement begins |
plan_tier (enum: starter|growth|enterprise),
utm_campaign (string, optional)
|
plan_upgraded |
Payment succeeds for higher tier |
new_mrr_cents (number, required), previous_plan (string,
required)
|
| Event | When it fires | Key properties (types) |
|---|---|---|
lead_scored |
Scoring model or rep updates qualification |
score_band (enum: hot|warm|cold), crm_lead_id (string,
required)
|
pipeline_stage_changed |
Opportunity moves stage in CRM | stage_name (string), amount_cents (number, optional) |
meeting_booked |
Calendar / routing confirms meeting |
meeting_type (enum: demo|discovery|onboarding),
owner_id (string, optional)
|
1) Validate events in a staging property / dataset with real user flows
(not only GTM preview). 2) Assert required properties are present β reject payloads missing
event_name or required fields. 3) Compare counts: pageviews vs custom events
ratio, and key funnel steps vs backend transactions for sample orders/leads. 4) Run
duplicate detection on natural keys (order_id, lead_id) for 7 days
post-launch.
Weekly: spot-check top 10 campaigns for UTM coverage; review error logs / validation rejections from your CDP or tag manager server container.
Bump plan_version when you change required fields or semantics. Maintain a
short CHANGELOG: date, author, breaking vs additive, consumers updated (GA4, ads,
warehouse). For breaking changes, run overlapping fields for one release cycle before
removing old properties. Tag each spec in Git with the deploy tag it shipped with.
| Field | Details |
|---|---|
| Project Name | E.g., "E-commerce Website Tracking" |
| Your Project: | _________________________________ |
| CDP Platform | E.g., "Segment", "mParticle", "Tealium" |
| Your CDP: | _________________________________ |
| Owner/Team | E.g., "Marketing Operations Team - sarah@company.com" |
| Your Owner: | _________________________________ |
| Last Updated | E.g., "2025-09-29" |
| Date: | _________________________________ |
| Convention Type | Standard |
|---|---|
| Event Naming |
E.g., "Object + Action" format: Product Viewed,
Cart Abandoned, Order Completed
|
| Your Standard: | _________________________________ |
| Property Naming |
E.g., snake_case: product_id, order_total,
user_email
|
| Your Standard: | _________________________________ |
| User ID Format | E.g., "UUID format: user_123e4567-e89b-12d3-a456-426614174000" |
| Your Format: | _________________________________ |
| Date/Time Format | E.g., "ISO 8601: 2025-09-29T14:30:00Z" |
| Your Format: | _________________________________ |
| Event Name | Category | Priority | When It Fires | Required Properties | Business Purpose | Status |
|---|---|---|---|---|---|---|
Page Viewed |
Navigation | High | Every page load | page_url, page_title, referrer |
Track user navigation patterns | β |
Product Viewed |
Engagement | High | User views product detail page |
product_id, product_name, price,
category
|
Track product interest, personalization | β |
Add to Cart |
Monetization | High | User adds item to shopping cart |
product_id, quantity, price,
cart_total
|
Measure purchase intent, cart analysis | β |
Checkout Started |
Monetization | High | User begins checkout process | order_id, cart_total, product_count |
Track conversion funnel, identify drop-off | β |
Order Completed |
Monetization | High | Order successfully placed |
order_id, revenue, products[],
payment_method
|
Track revenue, attribution, LTV | β |
User Signed Up |
Acquisition | High | New user registration | user_id, signup_method, referrer |
Track acquisition channels, onboarding | β |
Email Opened |
Engagement | Medium | User opens marketing email | email_id, campaign_name, subject_line |
Measure email engagement, optimize campaigns | β³ |
Support Ticket Created |
Support | Medium | User submits support request | ticket_id, category, priority |
Track support needs, product issues | β³ |
| _____________ | _________ | _________ | _________________ | _________________ | _________________ | __ |
| _____________ | _________ | _________ | _________________ | _________________ | _________________ | __ |
| _____________ | _________ | _________ | _________________ | _________________ | _________________ | __ |
| _____________ | _________ | _________ | _________________ | _________________ | _________________ | __ |
| _____________ | _________ | _________ | _________________ | _________________ | _________________ | __ |
| _____________ | _________ | _________ | _________________ | _________________ | _________________ | __ |
| _____________ | _________ | _________ | _________________ | _________________ | _________________ | __ |
| _____________ | _________ | _________ | _________________ | _________________ | _________________ | __ |
| _____________ | _________ | _________ | _________________ | _________________ | _________________ | __ |
| _____________ | _________ | _________ | _________________ | _________________ | _________________ | __ |
High: Must-have events critical for core business metrics. Implement first.
Medium: Important for analysis but not critical. Implement second wave.
Low: Nice-to-have for deeper insights. Implement when bandwidth allows.
Status: β Live | β³ In Development | β Blocked | π Planned
| Trait Name | Data Type | Source | When Updated | Business Purpose | Status |
|---|---|---|---|---|---|
user_id |
String (UUID) | Registration System | At signup, never changes | Unique identifier for tracking | β |
email |
String (email) | User Profile | At signup, when updated | Communication, identity resolution | β |
signup_date |
Date (ISO 8601) | Registration System | At signup, never changes | Cohort analysis, customer age | β |
customer_tier |
String (enum) | Calculated | Daily recalculation | Segmentation, personalization | β |
lifetime_value |
Number (currency) | Calculated | After each purchase | Value-based targeting, churn prevention | β |
last_purchase_date |
Date (ISO 8601) | Order System | After each purchase | Re-engagement, churn prediction | β |
preferred_category |
String | Calculated (ML) | Weekly recalculation | Product recommendations | β³ |
| _____________ | _________ | _________ | _________________ | _________________ | __ |
| _____________ | _________ | _________ | _________________ | _________________ | __ |
| _____________ | _________ | _________ | _________________ | _________________ | __ |
| _____________ | _________ | _________ | _________________ | _________________ | __ |
| _____________ | _________ | _________ | _________________ | _________________ | __ |
| Source Name | Type | Integration Method | Data Volume | Events/Traits Sent | Status |
|---|---|---|---|---|---|
| Website | Client-side | JavaScript SDK | ~500K events/month | Page views, clicks, form submissions | β |
| Mobile App (iOS) | Client-side | Swift SDK | ~200K events/month | Screen views, taps, app lifecycle | β³ |
| Backend Server | Server-side | Node.js SDK | ~1M events/month | Orders, user updates, system events | β |
| Salesforce CRM | Third-party | Native Integration | ~50K records/month | Lead updates, opportunity changes | π |
| _____________ | _________ | _________________ | _____________ | _____________________ | __ |
| _____________ | _________ | _________________ | _____________ | _____________________ | __ |
| _____________ | _________ | _________________ | _____________ | _____________________ | __ |
| Destination Name | Category | Integration Type | Events Received | Business Purpose | Status |
|---|---|---|---|---|---|
| Google Analytics 4 | Analytics | Native Integration | All page views, conversions | Website analytics, attribution | β |
| Facebook Ads | Advertising | Native Integration | Purchase events, custom audiences | Ad targeting, conversion tracking | β |
| Braze | Marketing Automation | Native Integration | All events + user traits | Email/push campaigns, personalization | β³ |
| Snowflake | Data Warehouse | Native Integration | All events (raw data) | Advanced analytics, data science | π |
| _____________ | _________ | _________________ | _________________ | _________________ | __ |
| _____________ | _________ | _________________ | _________________ | _________________ | __ |
| _____________ | _________ | _________________ | _________________ | _________________ | __ |
| Policy Area | Standard/Requirement |
|---|---|
| PII Handling | E.g., "Email, phone number, address are encrypted at rest. Never sent to advertising platforms." |
| Your Policy: | _________________________________________________________________ |
| Data Retention | E.g., "Event data retained for 2 years. User profiles retained while account is active + 30 days after deletion." |
| Your Policy: | _________________________________________________________________ |
| User Consent | E.g., "Cookie consent required for analytics. Explicit opt-in for marketing communications." |
| Your Policy: | _________________________________________________________________ |
| Data Deletion Requests | E.g., "Users can request deletion via support. Processed within 30 days per GDPR/CCPA requirements." |
| Your Policy: | _________________________________________________________________ |