← Back to the tool by Odylic Odylic
Tutorial

How to use this

Read this once. Five minutes. The tool's not complicated, but the inputs that matter aren't the obvious ones.

1. Get your CSV

You need daily spend and revenue, ideally one row per day for the last 365 days. The CSV needs four columns:

ColumnWhat goes in it
dateYYYY-MM-DD, one row per day
spendTotal ad spend that day, in dollars (no $ sign, no commas)
revenueAttributed revenue from those ads that day
purchasesOrder count. Optional but recommended. Drives the orders/new-customer columns.

Pull this from wherever you trust your numbers. Meta Ads Manager export, your data warehouse, Triple Whale, Northbeam, a Google Sheet you've been keeping by hand. Doesn't matter. The tool only cares that the columns are right and the dates are sequential.

One channel at a time. If you run Meta and Google, model them separately. They have different curves. Don't add them together.

Attribution choice matters. Pick one window (7-day click, 1-day click + 1-day view, whatever) and stick with it across all 365 days. If you switched mid-year, the curve fit will be a mess.

2. Upload it

Drag the CSV onto the upload card or click "Choose CSV file." If you just want to poke around first, hit "Try with demo data". That loads a synthetic 90-day dataset so you can see what a working fit looks like before you bring your own numbers.

Nothing is uploaded anywhere. The fit runs in your browser. Close the tab and the data is gone.

3. Read the chart

The chart axes:

The lines:

4. The LTV multipliers are where you make or break this

This is the section everyone gets wrong, including the defaults the tool ships with.

The LTV multipliers say: for every $1 a customer spends on their first order, how many dollars total will they spend over the next 3 / 6 / 12 months? A 1.4× three-month LTV means $1 first-order → $1.40 cumulative over 90 days.

The defaults (1.4 / 1.8 / 2.5) are vague mid-tier DTC averages. They're almost certainly wrong for your brand. Specifically:

Pull your real numbers from a cohort tool: Lifetimely, Triple Whale, Polar, a manual cohort export from Shopify. Take 90-day cumulative customer revenue, divide by first-order revenue. That's your 3-month multiplier. Same for 180 and 365 days.

If you skip this step, the tool gives you wrong answers. A swing from 1.4× to 1.2× on the 3-month multiplier flips the recommendation from "scale up 70%" to "pull back to almost zero."

5. The other inputs, in order of how much they matter

Variable cost %

What share of revenue gets eaten by COGS, shipping, payment processing before any margin shows up. Don't include fixed overhead. This is the part that scales with each order. Most DTC brands land between 30% and 45%. Get this from your P&L or your finance person.

Recency half-life

Default is 60 days. This says: a day from 60 days ago counts half as much as today in the curve fit. Older days still count, just less.

Use a shorter half-life (30d) if you've recently done something that changed efficiency: new creative, a price change, a structural Meta change you can feel. Use a longer half-life (180d+) if your account has been stable and you want the curve to lean on more data.

Set to 0 to weight every day equally (legacy behavior). This is rarely what you want. Efficiency drifts.

NC share %

Share of attributed revenue from new customers vs returning customers. If your platform reports this directly, plug it in. Otherwise approximate from your customer count over the same window. Drives the "NC ROAS" and "new customers" columns in the spend ladder.

Adstock decay (λ)

Yesterday's spend still produces some revenue today. Adstock models that lag. Try 0.3 for Meta. That's the typical carryover. 0 to disable it (lets you sanity-check whether adstock is what's making the optima move).

Efficiency adjust ±%

Manual override on V_max. +10% = "I expect the platform to deliver 10% better than the historical fit." Use this for known forward-looking changes the data hasn't seen yet: a creative refresh you're confident in, a new placement that's testing well.

Median AOV

Auto-calculated from your CSV if you included purchases. Otherwise enter manually. Only affects the orders / new-customer columns in the spend ladder, not the curve or optima.

6. The goal selector

Pick the goal you actually want to optimize for. The tool computes all goals at the same time (you can see all of them in the tile row at the top), but the goal dropdown picks which one gets the highlighted vertical line on the chart and the highlighted row in the spend ladder.

GoalWhat the optimum is
Max CM (today)Spend that maximizes day-1 contribution margin only.
Max 3-month CMSpend that maximizes CM with 3-month LTV factored in.
Max 6-month CMSame with 6-month LTV.
Max 12-month CMSame with 12-month LTV.
Max RevenuePush spend up. Hill curve is monotone, so this is "as high as we'll model" (5× current).
Max NC RevenueSame logic but counting only new-customer revenue.
Target ROASMax spend that still hits a ROAS target you set. Inputs appear when you select this goal.

7. What this tool can't do

It's a single-channel observational model. Some things it doesn't account for:

8. A reasonable workflow

  1. Pull 365 days of daily spend + revenue for one channel.
  2. Get your real LTV multipliers from a cohort tool. Plug them in.
  3. Set VC% from your P&L, NC share from platform reporting.
  4. Set recency half-life to 60 days unless you have a reason to go shorter or longer.
  5. Pick the goal you actually care about. For most brands the right answer is 6-month or 12-month CM, not day-1.
  6. Look at the optimum. Compare to today.
  7. If the optimum is meaningfully higher than current spend, scale into it gradually. Don't jump straight to the recommended dollar figure. The model says nothing about how fast the auction can absorb new budget without breaking efficiency.
  8. Refit monthly. Re-pull the CSV, reload the tool. The curve drifts.
Saturation Studio · MIT licensed · Back to the tool · Source on GitHub