All guides

ops

Attribution for cash-paid jobs: how trades actually track which ads worked

6 min readFor: Trades and mobile services where 30-60% of jobs are paid by cash, BACS transfer, or off-platform card readers.

Every ROAS dashboard tells you "your Meta ads returned 3.2x" by reading Stripe payments. The number is honest for ecommerce. For trades, it is fiction. Half your invoices are paid by bank transfer, a third in cash on the doorstep, and the rest on a SumUp reader you have not connected to anything.

You still want to know which ad set paid for itself. Here is the practical attribution stack for a trade business that does not push every payment through a single processor.

What you actually need to track

Three things per booked job: the lead source (which ad, organic, referral), the invoice value, and the payment method. Everything else (CPL, ROAS, payback period) computes from those.

You do not need a fancy CRM, GA4 funnel, or first-party-data warehouse. You need every job in one place with those three fields populated.

The minimal capture pattern

When a lead is marked won, the lead system needs a "Booked value" field and a "Payment method" field. That is the entire schema lift.

In :Impact, both are on the lead detail page. Mark the lead won, the system prompts for value and method. The lead already carries the source (Meta ad set name, Google campaign, referral, walk-in) from the time it was captured.

For cash and BACS jobs, the operator types the value in. Card jobs (SumUp, Stripe, iZettle) can stay manual entry too for now: the latency of a Stripe webhook does not matter if you are filling in the value 10 minutes after the cheque clears.

What this gives you

Weekly view: revenue by source. Even with 60% cash payments, you see which ad set produced which £-of-booked-work. Meta ad sets that look cheap on cost-per-lead but flat on revenue get killed. Meta ad sets that look expensive on CPL but produce high-value cash jobs get scaled.

Monthly view: payback period per channel. If your average Meta lead costs £30 and produces £1,200 of revenue, payback is fast. If Google LSA leads cost £45 and produce £600, slower but still positive. Decide where to put the next £100 a week.

Audit view: total revenue this quarter vs what your accountant sees from your business bank account. They should match within 2-3% (timing differences). If they do not, jobs are being missed.

Things to skip

Skip GA4 Conversion Modelling. It is built for ecommerce funnel attribution and assumes every conversion lands on a thank-you page. For trades, the conversion lands on a doorstep three weeks later. Forcing GA4 into this shape produces numbers, but the numbers are wrong.

Skip server-side tagging unless you are already running Stripe. The setup cost is high and the marginal accuracy is low when half your revenue is offline.

Skip "marketing attribution" SaaS at £200+/mo. The tools assume your spend is over £10k/mo. Below that, manual entry into a single lead system gets you the same intelligence.

Where :Impact fits

Every lead carries its source from capture. Marking a lead won prompts for booked value + payment method. Weekly client report rolls revenue-by-source so the operator sees what funded what without opening a spreadsheet.

For owners running multiple channels (Meta + Google + LSA + referral), the report's source split is the single number that decides next week's spend.

See your real ROAS without Stripe

:Impact captures source on every lead and prompts for booked value + payment method on win. The weekly report rolls cash, BACS, and card jobs into one revenue-by-source view. Honest numbers, no GA4 wrangling.

Start with Core