Notes on data, revenue, and automation.
Practical writing on attribution, true ROAS, data engineering, and the automation that runs real businesses.
Start here
Guides and toolsMarketing attribution for ecommerce
The four places a paid click loses its identity, and the order to fix them in.
8 articles →True ROAS
Turning a platform's best-case number into one you can safely spend against.
7 articles →Revenue data pipelines
Schema drift, loader lag, and frozen partitions — and how to survive them.
18 articles →True ROAS calculator
Apply overlap, refunds and untracked revenue to see what your ROAS really is.
All writing
5 dashboard metrics that lie vs 2 that predict revenue
Weekly ROAS and session counts feel useful but lag reality. Here's why cohort LTV and true CAC actually forecast next quarter's revenue.
Build an AI agent that reallocates budget on CAC payback
Stop funding channels that win last-click but stall cash flow. Learn the data pipeline and logic for an agent that shifts spend toward fastest CAC payback.
Build an AI agent to flag LTV cohorts missing CAC payback
Learn how to design an agent that tracks contribution margin by cohort and channel, so payback drift gets caught in week six, not the Q3 deck.
AI agent that catches discount codes eating your margin
Detect discount-code cannibalization before finance does, with an AI agent that compares margin lost against true baseline revenue in real time.
Build an AI agent that catches refund-skewed ROAS
Learn how to pipe Shopify refunds and ad spend into a warehouse so an agent flags true ROAS before bad numbers drive scaling decisions.
Build an AI agent that catches creative fatigue before ROAS falls
Learn how an AI agent tracks frequency, CTR slope and CPM drift to flag ad fatigue days before ROAS drops, so you can refresh creative in time.
Build an AI agent that allocates ad spend by margin, not ROAS
ROAS hides which campaigns actually make money. Learn the data pipeline needed to shift ad budget allocation to true contribution margin.
Build one true ROAS number when platforms disagree
Stop trusting Meta, Google and TikTok's conflicting ROAS claims. Learn to build blended and incremental ROAS numbers finance and marketing both trust.
Build an AI agent to unify Meta CAPI and warehouse events
Stop reporting inflated Meta conversions. Learn how to build an agent that reconciles CAPI and warehouse orders, fixing refunds and duplicates automatically.
Build a real-time margin-aware bidding pipeline from your warehouse
Stop bidding on blended ROAS. Learn the four-stage pipeline that feeds true SKU-level margin data into ad platforms before they waste spend.
Build an AI agent that reconciles ad spend with margin
Learn the data pipeline and agent logic that turns blended ROAS into true contribution margin ROAS, updated daily by SKU and campaign.
Build a self-healing dbt pipeline for ecommerce data drift
Stop silent data drift from skewing ROAS and LTV. Learn schema, freshness, and distribution checks that let dbt pipelines detect and self-heal automatically.
Build an ad-spend decision engine on warehouse data
Stop trusting platform ROAS. Learn how to join order and spend data in your warehouse to turn attribution into automated budget decisions.
Build an AI agent that catches ROAS anomalies before overspend
A practical build guide to an AI agent that watches spend hourly and flags true ROAS drops before budget is wasted, not after the weekly review.
Why ROAS can rise while contribution margin falls
See how discounts, returns and product costs quietly erode margin behind a healthy ROAS number, and what your reporting is missing.
How to attribute subscription LTV back to the original ad click
GA4 measures clicks, not closed revenue. Here's how to reconcile reported ROAS against what actually hit your bank account.
How to build a customer data warehouse that survives iOS attribution loss
GA4 measures clicks, not closed revenue. Here's how to reconcile reported ROAS against what actually hit your bank account.
How to build a marketing mix model without a data science team
GA4 measures clicks, not closed revenue. Here's how to reconcile reported ROAS against what actually hit your bank account.
Why your subscription revenue makes blended ROAS misleading
GA4 measures clicks, not closed revenue. Here's how to reconcile reported ROAS against what actually hit your bank account.
Why UTM parameters break at checkout redirects and how to fix attribution
GA4 measures clicks, not closed revenue. Here's how to reconcile reported ROAS against what actually hit your bank account.
How DTC brands should measure blended ROAS
GA4 measures clicks, not closed revenue. Here's how to reconcile reported ROAS against what actually hit your bank account.
Monitoring and alerting for data pipelines in production
GA4 measures clicks, not closed revenue. Here's how to reconcile reported ROAS against what actually hit your bank account.
When to move from spreadsheets to a data warehouse
GA4 measures clicks, not closed revenue. Here's how to reconcile reported ROAS against what actually hit your bank account.
Attribution when payment domains steal the credit
GA4 measures clicks, not closed revenue. Here's how to reconcile reported ROAS against what actually hit your bank account.
Why your dbt pipeline keeps breaking on API schema drift
GA4 measures clicks, not closed revenue. Here's how to reconcile reported ROAS against what actually hit your bank account.
Predictive CAC: bidding on lead value instead of clicks
GA4 measures clicks, not closed revenue. Here's how to reconcile reported ROAS against what actually hit your bank account.
True ROAS vs GA4 ecommerce ROAS for offline-close businesses
GA4 measures clicks, not closed revenue. Here's how to reconcile reported ROAS against what actually hit your bank account.
Server-side conversions with Meta CAPI: what breaks and how to fix it
GA4 measures clicks, not closed revenue. Here's how to reconcile reported ROAS against what actually hit your bank account.
How to reconcile Meta and Google ROAS against your CRM
GA4 measures clicks, not closed revenue. Here's how to reconcile reported ROAS against what actually hit your bank account.
What AI-ready data actually means: a practical checklist
GA4 measures clicks, not closed revenue. Here's how to reconcile reported ROAS against what actually hit your bank account.
The 60-day cohort maturity rule for ad spend decisions
GA4 measures clicks, not closed revenue. Here's how to reconcile reported ROAS against what actually hit your bank account.
Why offline conversions beat pixel-based ROAS
GA4 measures clicks, not closed revenue. Here's how to reconcile reported ROAS against what actually hit your bank account.
Why your GA4 ROAS is lying to you — and how to find the real number
GA4 and your ad platforms report ROAS from clicks and pixels, not closed revenue. Here's why the numbers disagree with your bank account — and how to reconcile them into a true ROAS you can optimize on.