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.
9 articles →True ROAS
Turning a platform's best-case number into one you can safely spend against.
8 articles →Revenue data pipelines
Schema drift, loader lag, and frozen partitions — and how to survive them.
19 articles →True ROAS calculator
Apply overlap, refunds and untracked revenue to see what your ROAS really is.
All writing
Which dashboard metrics survive an audit — and which don't
A decision-mapping method for cutting vanity metrics execs keep requesting, so dashboards show contribution margin and true ROAS instead.
Batch vs streaming vs reverse ETL: a decision checklist
A practical framework for matching pipeline architecture to latency needs, data volume, and downstream action, before you commit to infrastructure.
Why ROAS holds steady while contribution margin erodes
A diagnostic checklist to find the order-level margin leak hiding behind a healthy blended ROAS, from product mix to discount costs.
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
Subscription revenue arrives months after the click. How to tie LTV back to the original ad and campaign so you can finally bid on it.
How to build a customer data warehouse that survives iOS attribution loss
iOS tracking loss broke pixel-based reporting. Build a first-party customer warehouse that keeps attribution working: tables, IDs and joins.
How to build a marketing mix model without a data science team
You can run a useful marketing mix model without a data science team. Data needed, open-source tools, and how to read the results.
Why your subscription revenue makes blended ROAS misleading
Recurring revenue inflates blended ROAS by mixing new and renewal money. How to separate acquisition from retention and read ROAS correctly.
Why UTM parameters break at checkout redirects and how to fix attribution
UTMs vanish on checkout redirects and payment hops, so revenue lands as direct. Where parameters get lost and how to preserve attribution.
How DTC brands should measure blended ROAS
Blended ROAS hides which channels actually pay back. A practical way for DTC brands to measure it with margin, returns and lag built in.
Monitoring and alerting for data pipelines in production
What to monitor in a production data pipeline: freshness, volume, schema and logic checks, plus alerting that doesn't wake you up for noise.
When to move from spreadsheets to a data warehouse
Spreadsheets work until they don't. Clear signs it's time to move to a data warehouse, what it costs, and the simplest first setup.
Attribution when payment domains steal the credit
Stripe, PayPal and checkout domains show up as the referrer and steal credit from your ads. How to spot it in GA4 and restore the real source.
Why your dbt pipeline keeps breaking on API schema drift
Ad and CRM APIs change fields without warning and break dbt models. Contracts, tests and staging patterns that stop schema drift at the door.
Predictive CAC: bidding on lead value instead of clicks
Stop bidding on cost per lead. Predict lead value from CRM outcomes and feed it back so ad platforms optimize for revenue, not clicks.
True ROAS vs GA4 ecommerce ROAS for offline-close businesses
If deals close offline, GA4 ROAS is fiction. How to compare GA4 ecommerce ROAS with true ROAS built from closed CRM revenue.
Server-side conversions with Meta CAPI: what breaks and how to fix it
Meta CAPI setups fail quietly: duplicate events, weak match quality, missing values. What breaks in server-side tracking and how to fix it.
How to reconcile Meta and Google ROAS against your CRM
Meta and Google both claim the same sale. Step-by-step reconciliation of platform-reported ROAS against CRM revenue, with the SQL logic.
What AI-ready data actually means: a practical checklist
AI-ready data is not a buzzword: it's keys, freshness, definitions and lineage. A practical checklist to test your data before building agents.
The 60-day cohort maturity rule for ad spend decisions
Judge ad spend on immature cohorts and you cut winners. The 60-day maturity rule: when ROAS numbers are final enough to act on.
Why offline conversions beat pixel-based ROAS
Pixels count clicks and carts; offline conversions count closed revenue. Why uploading CRM outcomes beats pixel ROAS and how to set it up.
Why your GA4 ROAS is lying to you — and how to find the real number
GA4 and ad platforms report ROAS from clicks, not closed revenue. Why the numbers disagree with your bank account and how to get a true ROAS.