flowsk.com
Feature

CAC and ROAS by campaign — the number that decides the budget

Visitors → identified → conversions → revenue, by first-touch campaign, with your ad spend on top. The report you actually make decisions from, built on events you can audit.

Aug 4, 2026· 3 min read ·Features
Quick answer

CAC = spend ÷ conversions (first-touch) · ROAS = revenue ÷ spend

The formulas are trivial. What is hard is the denominator: a conversion count you can defend. Flowsk builds it from server-confirmed events on a durable identity, credited to the campaign that acquired the person — not the one that happened to be last.

First-touch and last-touch are both shown. They answer different questions and should never be blended into one number.

Every other feature in Flowsk exists to make this one report trustworthy. This is the page you actually open on a Monday.

The shape of it

One row per first-touch channel and campaign, with the whole funnel on it:

Source Medium Campaign Visitors Identified Conversions Revenue CAC ROAS
facebook cpc spring-prospecting 8,410 612 94 $12,140 $63.8 2.02x
google cpc brand 1,240 210 78 $9,880 $11.4 11.1x
(direct) (none) 3,190 288 41 $5,260

Four numbers per row, in the order the funnel actually happens. The two conversion-rate steps between them — visitor to identified, identified to converted — are usually more actionable than the CAC itself, because they tell you where a channel is failing rather than just that it is expensive.

A campaign with great traffic and terrible identification has a landing page problem. A campaign with great identification and terrible conversion has an audience problem. A blended CAC number hides both.

Why first-touch is the default

Because it answers the question you are actually spending money to answer: which campaign acquired this customer?

Last-touch systematically credits whatever sits closest to the checkout — email, branded search, direct. Those channels harvest demand; they rarely create it. Optimise on last-touch for a quarter and you will have defunded everything that fills the top of the funnel while your “efficient” channels quietly run out of people to harvest.

Both models are shown. Use first-touch to decide where new money goes, last-touch to decide what to fix in the conversion path, and never average the two.

The part that is genuinely hard

The formulas are one line each. The difficulty is entirely in the conversion count, and that count is only as good as four things underneath it:

  • A durable identity, or the visitor who converts on day 11 is a stranger. (See first-party tracking.)
  • Server-confirmed conversions, or every ad-blocked sale is invisible. (See de-duplication.)
  • One canonical vocabulary, or one campaign shows up as three underperforming rows. (See UTM taxonomy.)
  • An auditable trail, or you cannot defend the number when someone challenges it. (See the journey explorer.)

That is the whole product. This report is just where it surfaces.

Ad spend is entered by hand, on purpose

At $29/month we do not maintain integrations with every ad platform’s spend API. You enter spend by source and campaign.

There is a real cost to that — the numbers are as current as your last entry — and one benefit worth naming: someone on your team looks at the spend figures every week. Teams with automated spend sync routinely go months without anyone reading them.

Pair it with the free calculators

The report tells you what your CAC is. Two free tools tell you what it should be:

  • Break-even ROAS — the multiple you need given your contribution margin.
  • CAC payback — how many months until a customer repays their acquisition cost, and how deep the cash valley gets before then.

A campaign at 2.0x ROAS is excellent at a 70% margin and a slow bankruptcy at 35%. The report gives you the number; those two give you the threshold.

Frequently asked questions

First-touch or last-touch?

Both, side by side. First-touch answers 'which campaign acquired this customer' and is what you scale acquisition on. Last-touch answers 'what closed them' and is what you optimise conversion rate on. Blending them into a single blended figure destroys both signals.

Where does ad spend come from?

You enter it, by source and campaign. We deliberately do not pull it from ad platform APIs at this price point — and manual entry has a side effect worth having: someone looks at the spend numbers every week.

Why does my CAC here differ from the ad platform's?

Because the platform's denominator includes view-throughs, cross-platform double claims and modelled conversions. Yours does not. The gap is what the ghost-conversions checker prices.

Does revenue include refunds?

Only if you send a refund event. Because conversions carry a de-duplication key, a refund can reference the same order and net it out.

Can I see LTV rather than first-order revenue?

Yes. Every purchase by an identified person inherits their first-touch campaign, so cohort revenue accumulates against the acquiring campaign for as long as the customer keeps buying.

The report you can already check

Every figure in this report comes from events you can open individually. Start with the journey behind a single conversion.

See the journey explorer

Stop guessing which ad made the sale.

Flowsk Signals stitches the anonymous click to the email to the purchase — first-party, server-side, de-duplicated. One snippet, $29/mo, and every conversion comes with a receipt you can inspect.

Keep reading