Marketing

Report booked revenue, not leads: linking marketing to money

The short answer

Lead counts and platform-reported conversions measure activity, not results. To report what marketing actually earns, capture the source of every enquiry, define CRM stages through to booked revenue, track calls, send booked outcomes back to Google Ads and Meta through offline conversion imports, and report contribution after marketing. A one-page monthly report built on those numbers tells a board far more than cost per lead.

Key takeaways

  1. Cost per lead rewards cheap enquiries. Cost per booked customer and contribution after marketing reward the channels that produce revenue.
  2. Capture the source of every enquiry, including phone calls, and never overwrite the original source in the CRM.
  3. Define each CRM stage in writing, with an owner and a date, or your conversion rates won't mean anything.
  4. Send booked outcomes back to Google Ads and Meta through offline conversion imports, so bidding learns from customers rather than form fills.
  5. Give the board a short, stable metric set: booked revenue, contribution after marketing, cost per booked customer, enquiry-to-booking rate and speed to first response.

Most marketing reports count the wrong things very precisely. Leads are easy to count, so they get counted. Platforms report conversions, so those go in the deck too. Neither tells a board whether marketing produced revenue at a margin worth paying for.

This article sets out how to connect marketing activity to booked revenue, and what a monthly report built on that connection looks like.

Why lead counts and platform conversions mislead

Booked revenue reporting means measuring marketing by the confirmed sales or bookings it produces, attributed to the source of each original enquiry, rather than by leads, clicks or platform-reported conversions. It links every enquiry to its outcome in the CRM, so cost and return can be compared by channel, campaign and service.

Leads are not equal

A lead is anyone who fills in a form or calls. That includes spam, duplicates, existing customers, job seekers and people outside your service area. A channel that produces 200 cheap leads can produce fewer customers than one that produces 90 expensive ones. Optimise for cost per lead and you buy more of the cheap ones.

Platforms mark their own homework

Each ad platform credits conversions to its own ads, using its own rules. In Google Ads, the conversion window sets how long after an ad interaction a conversion is still recorded: it defaults to 30 days for Search and Display, and can be set anywhere from 1 to 90 days. When two platforms both touched a customer, both can claim the same booking. Add the platform totals together and you can end up with more conversions than your CRM recorded.

Bidding follows what you count

Automated bidding learns from the conversions you report. If a form fill is the conversion, the platform looks for more people who fill in forms. If a booked job is the conversion, it has a reason to look for people who book.

Define the chain from enquiry to revenue

Before any tracking work, agree what each stage means. Write the definitions down and build them into the CRM so sales, front desk and marketing use the same ones.

StageExample definitionOwnerRecord
EnquiryAny form, call, chat or email from a potential customer, before checksMarketingCreated date, source
QualifiedA real person, in your service area, wanting a service you offerSales or front deskQualified date
OpportunityQuote, proposal or consultation offeredSalesQuote date and value
BookedCustomer has accepted, paid a deposit or booked an appointmentSalesBooked date and value
DeliveredWork completed or product shipped, final value confirmedOperationsCompleted date, final value
LostClosed without bookingSalesLost date and reason

Two rules make this work. Every record carries the date it entered each stage, so you can measure speed as well as volume. And lost reasons come from a short fixed list (price, timing, no response, not a fit, chose a competitor), never free text.

Step 1: Capture the source of every enquiry

Web forms

  • Use consistent UTM parameters on every paid, email and social link, with a written naming convention.
  • Store click identifiers. Google's offline conversion import matches on the Google Click ID (GCLID). Google's setup guide requires auto-tagging, plus a hidden form field that passes the GCLID into the CRM with the lead.
  • Write the original source, medium and campaign to contact fields that are never overwritten. Store the most recent source separately.
  • Ask "How did you hear about us?" as a cross-check, not as the primary source.

Phone calls

If your customers phone more than they fill in forms, untracked calls will distort every channel comparison. Google Ads can track calls from ads, and calls to a Google forwarding number shown on your website after an ad click, counting those that last at least a minimum length you set. Google lists Australia among the countries where forwarding numbers are available. Whatever you use, log every call against a CRM record with its source and outcome.

Everything else

Chat, email, walk-ins and referrals need a source too, even if it's a pick-list chosen by the person taking the enquiry. An enquiry with no source is a hole in every report that follows.

Step 2: Send booked outcomes back to the ad platforms

Once the CRM knows which enquiries became customers, give that information back to the platforms, so their reporting and bidding reflect real outcomes rather than form fills.

Google Ads

  • Offline conversion import uploads conversions that happen after the click. Google's FAQ says conversions with a GCLID can be uploaded up to 90 days after the click, which is as long as Google keeps the GCLID, and recommends a separate conversion action for each funnel stage.
  • Enhanced conversions for leads is Google's upgraded version of offline conversion import. The Google tag captures hashed user-provided data, such as the email address or phone number from your lead form. When the lead converts, you upload the hashed details from your CRM, with GCLIDs where you have them, and Google matches them to attribute the conversion to your ads. Google recommends it for new setups.
  • Uploads run through Google Ads Data Manager or the API. Google's documentation says offline conversion imports and enhanced conversions for leads uploads move to the Data Manager API from 15 June 2026, so check that any older integration has been updated.
  • Housekeeping: Google's guidance for Smart Bidding is to upload daily. You also need to opt in to enhanced conversions for leads and accept its terms.

Meta

  • Conversions API for CRM integration sends CRM stage events back to Meta. Meta says its Conversion Leads optimisation goal currently works only with Lead Ads instant forms, and recommends sending the Meta lead ID with each event.
  • Meta asks for uploads at least once a day. It says the stage you optimise for should happen within 28 days of the lead being created, with a conversion rate between 1% and 40%.
  • For offline sales that didn't start in a lead form, Meta's documentation covers sending offline events through the Conversions API, with customer details such as email and phone hashed before they are sent.

A privacy check

Uploading customer data, even hashed, is a use of personal information. Make sure your privacy policy and collection notices cover it, and send only the fields the platform needs. We check setups against the platforms' rules, but we aren't lawyers, so take advice where you need it.

Step 3: Measure contribution, not just revenue

Revenue tells you what came in. Contribution tells you what was left after the costs of delivering the work and winning it.

Contribution after marketing = booked revenue − variable delivery costs − marketing cost

Variable delivery costs include materials, direct labour, merchant fees and discounts. If you can't get an exact figure per job, agree a margin by service line with your finance team and refine it later.

Worked example: two channels

All inputs are assumptions for one month. Everything else is calculated from them.

MetricChannel A: social lead formsChannel B: search ads
Spend (assumption)$6,000$9,000
Leads (assumption)20090
Cost per lead$30$100
Enquiry-to-booking rate (assumption)8%30%
Bookings1627
Cost per booked customer$375$333
Average booked value (assumption)$3,000$3,600
Booked revenue$48,000$97,200
Contribution before marketing at 45% (assumption)$21,600$43,740
Contribution after marketing$15,600$34,740
Contribution per $1 of spend$2.60$3.86

On cost per lead, Channel A looks more than three times better. On contribution, Channel B returns $1.26 more for every dollar spent. A lead report would have moved budget the wrong way. The e-commerce margin reporting example applies the same logic to an online retailer, where discounts and returns change the picture again.

The minimal metric set for the board

A board doesn't need forty metrics. It needs a handful that connect spend to outcome, each with a definition that doesn't change from month to month.

MetricDefinitionWhy it matters
Marketing-sourced booked revenueBooked value from enquiries with a marketing source, net of cancellationsThe headline outcome
Contribution after marketingBooked revenue less variable delivery costs and marketing costShows whether growth is profitable
Cost per booked customerMarketing cost ÷ new bookingsReplaces cost per lead
Enquiry-to-booking rateBookings ÷ qualified enquiries, by channelLead quality and sales follow-up
Speed to first responseMedian time from enquiry to first human contactA lever you fully control
Pipeline createdValue of quotes or opportunities opened this monthLeading indicator for next month
Payback periodMonths of contribution needed to recover the cost of acquiring a customerMatters where customers buy again

A monthly reporting template

One page, in the same order every month:

  1. Headline: booked revenue, contribution after marketing and cost per booked customer, against last month, the same month last year and target.
  2. By channel: spend, qualified enquiries, bookings, booked revenue and contribution for each channel, in one table.
  3. Funnel health: enquiry-to-qualified and qualified-to-booked rates, speed to first response, and the top three lost reasons.
  4. Pipeline: opportunities created, and the value expected to book next month.
  5. Data quality: share of enquiries with a known source, share of calls logged, and any tracking faults found.
  6. Decisions: what changed last month, what happened, and the two or three changes proposed for next month.

The data-quality line is not optional. If a third of enquiries have no source, every channel figure above it is understated, and the board should know that before it reallocates budget.

A reporting dashboard can assemble this automatically from the CRM, ad platforms and accounting system. A spreadsheet updated monthly is a perfectly good place to start.

Where to start

  1. Agree stage definitions and lost reasons with sales, front desk and marketing.
  2. Fix source capture on forms, then on calls.
  3. Add stage dates and booked values in the CRM, using system integrations wherever data is currently re-keyed.
  4. Set up offline conversion imports for Google Ads and Meta.
  5. Run the one-page report for three months before moving budget on it.

The dental group enquiry-to-booking example shows how this works when enquiries leak between ads, website, phones and a practice system. We set up this tracking and reporting as part of paid media and broader growth and marketing work, and a Diagnostic will show where your data breaks today.

Altitude Creative is a Geelong-based AI, business systems and growth marketing company working with established organisations across Australia. Our insights are written to be useful on their own: every third-party fact links to the source listed below. About Altitude Creative

Questions, answered.

What is offline conversion import?

It is a way to tell an ad platform which clicks or leads later became customers, using data from your CRM. In Google Ads you upload conversions matched by the Google Click ID or, with enhanced conversions for leads, by hashed email or phone details. The platform can then report and bid on real outcomes rather than form fills.

Why don't our Google Ads and Meta conversions match the CRM?

Each platform credits conversions to its own ads under its own rules and windows, so a customer who touched both can be counted twice. Your CRM counts each booking once. Use the CRM as the source of truth for revenue, and use platform figures to compare campaigns within each platform.

Is cost per lead ever useful?

Yes, as a diagnostic inside a single channel, for example to spot a sudden jump in cost. It is a poor way to compare channels or set budgets, because lead quality and booking rates vary so much. Use cost per booked customer and contribution after marketing for those decisions.

Most of our enquiries come by phone. Can we still do this?

Yes. Google Ads can track calls through Google forwarding numbers, and imported call conversions let you upload which of those calls became sales. Log every call in the CRM with its source, and make the outcome a required field before a call record can be closed.

Want this applied to your business?

Book a 30-minute call. You'll leave with a clearer view of where to start.

Sources

Third-party facts on this page, checked 14 October 2026.

  1. About conversion windows, Google Ads Help. support.google.com/google-ads/answer/3123169?hl=en
  2. Set up offline conversion imports using Google Click ID (GCLID), Google Ads Help. support.google.com/google-ads/answer/7012522?co=ADWORDS.IsAWNCustomer%3Dfalse&hl=en
  3. Offline conversion imports FAQs, Google Ads Help. support.google.com/google-ads/answer/10029210?hl=en
  4. About enhanced conversions for leads, Google Ads Help. support.google.com/google-ads/answer/15713840?hl=en
  5. Upgrade offline conversion import to enhanced conversion for leads, Google Ads Help. support.google.com/google-ads/answer/14274408?hl=en
  6. About phone call conversion tracking, Google Ads Help. support.google.com/google-ads/answer/6100664
  7. About importing call conversions, Google Ads Help. support.google.com/google-ads/answer/6301373
  8. Google forwarding number, Google Ads Help. support.google.com/google-ads/answer/2382961?hl=en
  9. Conversions API for CRM integration, Meta for Developers. developers.facebook.com/documentation/ads-commerce/conversions-api/conversion-leads-integration
  10. Sending offline events using the Conversions API, Meta for Developers. developers.facebook.com/documentation/ads-commerce/conversions-api/offline-events