The Ignis team reviewing work in the studio

Revenue Attribution For A Service Business With No Cart

With no checkout, the revenue sits in your CRM. Capture the source at the first enquiry, carry it through the quote to the signed job, and report by the month the enquiry came in.

A service business has no checkout, so revenue attribution happens in the CRM. Capture where each enquiry came from at the moment it arrives, keep that source on the record through the quote and the signed job, and you can tie revenue back to marketing without buying an attribution platform.

GA4 and the ad platforms stop at the form fill. Everything after that point sits in your own systems, and that is the part a board wants to hear about.

Capture the source on every enquiry

Do this at the first contact, because it is very hard to rebuild later.

  • Forms. Hidden fields save the UTM parameters, the gclid from Google Ads, the fbclid from Meta and the landing page. Store them in a first-party cookie so they survive a visitor reading three pages before enquiring.
  • Phone calls. Tracking numbers by channel, with the call logged in the CRM. A service business that takes half its enquiries by phone has half a report without them.
  • Direct email and referrals. Whoever receives the enquiry tags the source within the day.
  • One plain question. "How did you hear about us?" goes on the form and gets asked on the first call. Buyers will tell you about the podcast, the referral or the ChatGPT answer that no tracking tag can see.

Keep the tracked source and the stated source in two separate fields. When they disagree, you learn something: a branded Google click with a stated source of "saw you on LinkedIn" is really a LinkedIn result.

One record for each enquiry

Each enquiry becomes one record with a source, a value and a stage. Enquiry, qualified, quoted, won and lost are enough stages for a start, plus a reason whenever a job is lost.

Make the source field required before a quote can be created. Sales teams will fill in a field that takes 30 seconds and blocks their next step, and they will skip one that does neither.

Report by the month the enquiry came in

A job signed in October from an enquiry in March belongs to March's spend. Reporting it against October makes March look wasted and October look brilliant, and the wrong channel gets the next budget increase.

So build the report as a table with one row per enquiry month, and update older rows every month as their jobs close. Recent months will always look thin. Quoted value gives you an early read while you wait for those jobs to sign.

For retainers and repeat work, pick one rule and keep it, such as the first 12 months of revenue. Tag later referrals from that client as referrals rather than crediting the original ad forever.

Which source gets the credit

Store the first touch and the last touch, then report on both. First touch shows what introduced the buyer, and last touch shows what brought them back to enquire.

That is enough for a business selling high-value services. A buyer who spends four months on a decision also talks to colleagues and sees you at events, and no model can see those moments. Use the stated source to fill that gap, and run a holdout when a large channel needs proof.

Send the result back

Once won and qualified jobs sit in the CRM, send them back to the ad platforms. Google Ads takes offline conversions and Meta takes them through the Conversions API, so the bidding learns which enquiries became revenue instead of treating every form fill the same.

The monthly report

One page covers it, per channel and per enquiry month:

  • Spend.
  • Qualified enquiries and cost per qualified enquiry.
  • Quotes sent and quoted value.
  • Revenue won.
  • Return on spend, once the cohort has had time to close.

Reporting against revenue rather than activity is how we run every client. Across the portfolio, paid runs at a 20x average return on ad spend, and past results do not guarantee future outcomes.

Once revenue ties back to source, the budget meeting stops being about what got posted and becomes a decision about where the next dollar goes.

Written by David Eid. Published .