Skip to content

Core Principles

Note: These are fundamental truths and rules. For step-by-step investigation processes, see Thinking Flows.


Don’t wait for notifications or alerts to tell you what changed. Observe and investigate proactively.

  • You should never be asking “what landing pages should I track?” - the system should show you ALL landing pages automatically
  • If something changes in user behavior or new pages get traffic, you should discover it yourself through observation
  • Being self-sufficient in data analysis is critical - don’t depend on others to tell you what to look at

Never ask developers “what events do we have?” - explore and discover them yourself.

  • The tool should let you see all events by exploring user activity
  • You don’t need documentation of every event - just look at real user sessions
  • Understanding the funnel comes from observing actual event sequences, not from spec documents
  • If you need to ask what data exists, your analytics tool is failing you

Track everything by default, not just what you think matters.

  • Don’t pre-filter what you think is important - capture all user entry points
  • This ensures you catch unexpected patterns and changes
  • Example: Tracking landing pages by path name should include not just designed landing pages, but any page users land on (/terms, /about-us, /how-it-works, etc.)

Let the data show you what’s happening rather than only looking at predefined metrics.

  • Systems that auto-discover patterns (like all landing pages) are superior to systems where you manually define what to track
  • You’ll catch marketing changes, new campaigns, or unexpected traffic patterns without manual setup
  • This reduces blind spots in your monitoring

Marketing analytics is not rocket science. Apply common sense.

  • Don’t overcomplicate analysis with complex frameworks or methodologies
  • If something seems logical to check, check it
  • Trust your intuition about what data would be useful
  • The best insights often come from asking obvious questions that others overlook

Principle: Trust Your Expectations, Then Verify

Section titled “Principle: Trust Your Expectations, Then Verify”

You know what data should exist based on your domain knowledge. Check if it’s there.

  • If you’re running Facebook ads, you expect to see ad IDs, campaign IDs, referrer data
  • If users interact with landing pages, you expect CTA click events
  • Use your expectations to validate data quality - if expected data is missing, something’s wrong
  • Finding what you expect confirms the system is working; finding what you don’t expect reveals gaps or opportunities

Discover features by clicking around and exploring, not by studying documentation.

  • You don’t need YouTube tutorials or manuals to start analyzing data
  • Start with a need (“I want to see what users are doing”) and explore the tool to find how
  • Good tools enable natural discovery through intuitive UI
  • Learning by doing > learning by reading
  • The tool should support your curiosity, not require training

Start broad, then drill down into specifics based on what you find.

  • Begin with high-level views (all landing pages)
  • Identify patterns or interesting data points
  • Click through to drill down (individual users, sessions, recordings)
  • Each layer reveals more detail naturally
  • The workflow should feel obvious, not learned

Principle: Events → Funnel → Questions

Section titled “Principle: Events → Funnel → Questions”

After discovering events, immediately build funnels to understand the flow and spot problems.

  • Once you see what events exist, create funnels with them
  • Don’t wait for someone to tell you “we have a drop-off problem”
  • The funnel visualization will scream the problems at you
  • Start simple: landing page → first key event → next event, etc.
  • Anomalies are obvious when visualized (90% drop-off? That’s a massive red flag)

Don’t hunt for problems. Build dashboards and let problems reveal themselves.

  • When you see 90% drop-off between landing page and first screen, that’s not subtle - it’s screaming
  • Trust your instincts: if a number looks wrong, it probably is
  • Don’t need statistical analysis for obvious issues
  • The data will tell you where to dig deeper
  • Your job is to set up visibility, then observe

Principle: Never Accept Numbers as Abstract - Drill Down to People

Section titled “Principle: Never Accept Numbers as Abstract - Drill Down to People”

Numbers aren’t mysteries. Every aggregate metric represents real users you can investigate.

  • See 55,000 landing page views dropping to 5,000? Don’t just theorize - click through and see WHO those 50,000 people are
  • Every person in the drop-off has:
    • Session recordings you can watch
    • UTM parameters showing their traffic source
    • Campaign IDs showing which ad they came from
    • Full property data to understand context
  • Aggregate metrics are starting points, not conclusions
  • The richness is in the individual-level detail
  • Don’t accept “we have a bounce problem” - understand which campaigns, which sources, which user segments are bouncing

Raw numbers mean nothing without context. Every data point should have rich metadata.

  • Not just “user bounced” - but which campaign, which landing page variant, which UTM term, which ad set
  • This context lets you pattern-match across segments
  • You can discover “all traffic from campaign X bounces” or “users with UTM term Y convert better”
  • Without this context, you’re just guessing
  • The tool should make context easily accessible, not buried

Principle: Traffic Quality Persists Through the Funnel

Section titled “Principle: Traffic Quality Persists Through the Funnel”

Good traffic converts well at every step. Bad traffic struggles everywhere.

  • If a campaign drives good traffic, it will outperform at step 1, step 2, step 3, etc.
  • If a campaign drives bad traffic, it will underperform at every stage
  • This is an audience quality issue, not a page/UX issue
  • When different traffic sources show different conversion rates on the SAME page, it’s about who you’re targeting, not what you built

Principle: Isolate Variables to Find Root Cause

Section titled “Principle: Isolate Variables to Find Root Cause”

When investigating problems, test one variable at a time.

  • Is it the landing page or the traffic? Compare different campaigns on SAME landing page, then same campaign on DIFFERENT landing pages
  • If bad traffic performs poorly everywhere (all landing pages), it’s a targeting/audience problem
  • If traffic performs well on page A but poorly on page B, it’s a page problem
  • If performance differs on the same page based on traffic source, it’s definitely an audience issue
  • Most problems are “usually both” - but you need to isolate to know which to fix first

Principle: End-to-End Attribution is Non-Negotiable

Section titled “Principle: End-to-End Attribution is Non-Negotiable”

Every sale must trace back to the initial landing UTM parameters. Period. No excuses.

  • Sales are not mysterious - behind every sale is a user who landed with specific UTM parameters
  • You MUST persist UTM parameters from landing through the entire funnel to conversion
  • This is tool-agnostic: PostHog, Google Analytics, Mixpanel, whatever - they all can do this
  • This is trivial to implement: one day of developer work, maximum
  • There is no technical excuse for not having this
  • Without this, you’re flying blind on what’s working

Principle: The Attribution Chain is Sacred

Section titled “Principle: The Attribution Chain is Sacred”

Landing UTM → Funnel Journey → Lead Capture (Email/Phone) → Sale

  • Step 1: User lands with UTM parameters (utm_source, utm_medium, utm_campaign, utm_term, utm_content, campaign_id, ad_id, etc.)
  • Step 2: User goes through funnel (could be 1 technology or 10 technologies - doesn’t matter)
  • Step 3: User provides PII (email/phone) - becomes a lead
  • Step 4: Lead converts to sale/customer

At Step 3, you have:

  • A specific person (email/phone)
  • Their initial landing UTM parameters (from Step 1)
  • This creates the attribution: “This lead came from campaign X, ad Y, landing page Z”

This attribution must be maintained through to sale.

Once you have email/phone, you can connect everything before and after.

  • Before PII: Anonymous user with session tracking and UTM parameters
  • After PII: Known lead/customer with identifiable behavior
  • PII (email/phone) is the bridge that connects anonymous → identified
  • Once connected, you know: “Customer john@example.com came from Facebook campaign 12023, landing page discount-01, converted in 3 days, LTV $500”

Every modern analytics/CRM system can do end-to-end attribution.

  • If your system can’t do this, the system is inadequate
  • If your team says “we can’t track this,” they’re wrong or lazy
  • This is not a complex technical problem - it’s basic tracking
  • One day of setup, then it works forever
  • The data exists - you just need to connect the dots

Principle: First-Touch Attribution is Sacred

Section titled “Principle: First-Touch Attribution is Sacred”

Always attribute sales to the original traffic source, not the last click.

  • User lands from Facebook ad → provide email → that’s first-touch
  • Days/weeks later they’re retargeted via SMS/email → these are nurture touches
  • Final conversion might be from email click, SMS click, or direct visit
  • Attribution goes to original Facebook campaign (first-touch)
  • Without the original ad, they wouldn’t be in your retargeting list
  • Retargeting is amplification, not acquisition

Having data isn’t magical. Knowing what to check is the skill.

  • Tools (PostHog, Moon, GA, etc.) store all the connections
  • The “magic” is knowing to check: Sales → Leads (via email) → Original UTM parameters
  • Not about advanced tools, but about understanding the data structure
  • When you know what you want to check, the answer is instant (if data is properly connected)
  • Most people don’t struggle with tools - they struggle with knowing what questions to ask

Principle: Understand Your Event Footprints (Schema)

Section titled “Principle: Understand Your Event Footprints (Schema)”

Every marketing event has a schema with parameters. These are your attribution Bible.

  • If you don’t understand the footprints in your data, you’re a bad hunter
  • Every event has parameters: utm_source, campaign_id, affid, ad_id, etc.
  • These parameters are the ONLY way you see things
  • Without reading parameters, you’ll misattribute (thinking SMS sale = Google Ads sale)
  • Learn your schema once: Notice what IDs exist (PostHog distinct_id), what parameters you capture (affid, campaign_id), then use them
  • No meetings needed: See PostHog tracking exists → Use it. See affid exists → Segment by it. Simple.

Surface-level source labels lie. Parameters tell the real story.

  • Source says “Google Ads” but parameters show SMS tracking codes → It’s SMS retargeting
  • Source says “Direct” but parameters show original Facebook campaign → It’s retargeting
  • Source says “Email” but parameters show campaign_id from paid ad → Attribute to the paid ad
  • Always read the parameters, not just the source label
  • Parameters are the definitive record of how user arrived

Principle: Never Trust Charts Without Checking Raw Events

Section titled “Principle: Never Trust Charts Without Checking Raw Events”

Charts are abstractions. Raw events are reality.

  • Never look at charts without knowing which raw events formed those charts
  • Always check a few events manually to see what’s actually happening
  • Go through the funnel yourself, trigger events, see how they appear in the system
  • Understand how each event comes through: which parameters, from where, in what shape
  • Only after understanding raw events can you trust the aggregated charts

Principle: Parameter Schemas Evolve - Track the Changes

Section titled “Principle: Parameter Schemas Evolve - Track the Changes”

Your event schema changes over time. This evolution tells a story.

  • Change the funnel → Parameters change
  • Change landing pages → New tracking codes appear
  • Change payment system → Content IDs format changes
  • Parameters shift shape: Arrays become numbers, fields disappear, new ones appear
  • Evolution of schema = history of system changes
  • Track these patterns over time to understand what changed when
  • The better you understand schema evolution, the better hunter you are

Principle: Raw Data is Not “Developer Shit” - It’s Your Job

Section titled “Principle: Raw Data is Not “Developer Shit” - It’s Your Job”

Understanding ugly formatted data is core marketing analytics work, not technical work.

  • Those “ugly spreadsheets” with IDs, affids, UTMs are THE CORE
  • Everything else (charts, dashboards, reports) is just a consequence
  • If you understand the raw parameters, you don’t need anything else
  • This is not rocket science, not developer territory - this is marketing analytics
  • Being comfortable with JSON, parameters, raw event data is fundamental
  • Don’t delegate this to developers - own it yourself

Principle: Use ChatGPT/Google for Unknown Parameters (1 Minute Research)

Section titled “Principle: Use ChatGPT/Google for Unknown Parameters (1 Minute Research)”

Don’t know what a parameter means? Look it up. Takes 1 minute.

  • See gtm-msr.appspot.com/render? Google it → Google Tag Manager checking traffic
  • See _gl parameter? ChatGPT it → Google linker parameter for cross-domain tracking
  • See fbclid? Look it up → Facebook Click ID
  • Every day you’ll encounter unknown parameters - just research them
  • Build your parameter vocabulary over time
  • No shame in not knowing - shame is in not looking it up

Principle: Never Trust a Single System - Always Cross-Validate

Section titled “Principle: Never Trust a Single System - Always Cross-Validate”

Never make decisions based on one chart, one system, one source. Always cross-compare.

  • This is not marketing-specific - it’s how data works, period
  • Single system view = blind spots, biases, tracking limitations
  • Always compare: System A vs System B vs System C
  • Discrepancies tell you about system limitations, not necessarily about reality
  • Cross-validation is mandatory, not optional

Principle: Your Attribution System is Source of Truth, Not Ad Platforms

Section titled “Principle: Your Attribution System is Source of Truth, Not Ad Platforms”

Ad platforms (Facebook, Google) undercount due to consent/tracking limitations. Your system sees more.

  • Facebook Ads dashboard shows X conversions
  • Your system (PostHog, Moon, billing) shows Y conversions (Y > X)
  • Your system is more accurate because:
    • No consent tracking limitations (first-party data)
    • No ad blocker issues
    • Server-side tracking persists longer
    • You have the actual transaction data
  • Use your system as source of truth for decision-making
  • Use ad platform data to understand the tracking gap

Principle: Billing is the Ultimate Source of Truth

Section titled “Principle: Billing is the Ultimate Source of Truth”

When systems disagree, billing system wins. Money doesn’t lie.

  • Marketing system says 100 sales
  • Ad platform says 80 sales
  • Billing system says 95 sales
  • Billing is correct - these are actual transactions with money exchanged
  • If marketing system shows more than billing → Overcounting (duplicate events, test transactions)
  • If marketing system shows less than billing → Undercounting (tracking broken)
  • Always reconcile marketing data with billing data

Principle: Understand and Adjust for Tracking Limitations

Section titled “Principle: Understand and Adjust for Tracking Limitations”

Ad platforms have consent limitations. Factor this into your decisions.

  • Facebook requires user consent for tracking (GDPR, iOS privacy)
  • Your system doesn’t require consent (first-party tracking)
  • Facebook might show 20% fewer conversions than reality
  • Don’t panic and stop campaigns when Facebook shows low conversions
  • Check your attribution system first
  • Adjust/scale campaigns based on real data, with awareness of platform undercounting

Principle: Unattributed Sales Are Normal (5-20%)

Section titled “Principle: Unattributed Sales Are Normal (5-20%)”

Not all sales will have marketing attribution. This is expected.

  • Marketing shows 100 sales, Billing shows 120 sales → 20 unattributed (16.7%)
  • Unattributed sales happen: Direct calls, cookie clearing, device switching, tracking failures
  • 5-20% unattributed is normal and acceptable
  • 20-30% is high but manageable
  • 30% means tracking is significantly broken

  • Create “no-affid” / “unattributed” category for these sales
  • Adjust marketing ROAS calculations for unattributed percentage
  • Track this percentage over time - if it spikes, investigate

Principle: Balance Micro and Macro Analysis

Section titled “Principle: Balance Micro and Macro Analysis”

You need both detailed event analysis and high-level system comparisons.

  • Micro: Individual event footprints, parameters, user journeys
  • Macro: System totals (100 vs 110 vs 120), gap percentages, trend lines
  • Micro without macro = Missing big picture (50% of sales untracked and you don’t know)
  • Macro without micro = Can’t fix problems (know there’s a gap, don’t know why)
  • Daily: Check both levels (macro totals + spot check 5-10 events)
  • Weekly: Full reconciliation + deep dive if gaps changed
  • Always be cautious about both perspectives

As we document insights:

  • New Principle: Create a new section
  • Addition to Existing: Add subsections or bullets under existing principle
  • Example: Add to the examples section with reference back to the principle