01Data feed
one row per week (or day) · one spend column per channel · one results column
DROP CSV HERE — or click to browse
Needs: a date column, a spend column per channel, and a results column (revenue or conversions). 6+ months of weekly data works best. Daily data is auto-aggregated to weeks.
▸ What the file should look like (and where to get it)
A wide table, e.g. week, meta_spend, google_spend, tv_spend, revenue — one row per period.
Most teams build this in a spreadsheet in ten minutes: paste weekly spend totals from each ads manager
(each platform's export from the Audit page works as a source) plus weekly revenue or conversions from your
store/CRM. Save as CSV, drop it here. Columns that aren't spend (clicks, impressions) are auto-excluded — you can re-include anything below.
Model setup — auto-detected, adjust if needed
Which column holds the date of each row.
Only matters for slash dates — check this if your dates look wrong.
Revenue, conversions, orders, leads…
Revenue → ROI per channel. Conversions → cost per conversion per channel.
Channels in the model — click to include/exclude
02Model readout
how well the model explains your results — check this before trusting the verdicts
— awaiting data feed — load the sample above to see what this looks like —
03Channel verdicts
measured contribution, what the next dollar earns, and where to move budget
— awaiting data feed —
PULSE//MMM runs entirely in this page — adstock + saturation + ordinary least squares, computed
in your browser. Open source (MIT): github.com/riz1k9/pulse-mmm