If you're paying for leads, you need to know which ones turn into work your team wants. Form submissions give you a starting count. The more useful questions come afterward: was the work a good fit, did it get booked, was it completed and did the customer pay?
ServiceM8's booking-source reports are a sensible place to start. From there, you can look at booking-page analytics and, if needed, a custom connection that sends later job outcomes to your advertising reports. Each answers a different question.
In this guide
Illustrative workflow
Follow the outcome, not just the click.
Use clear stage names before comparing reports or connecting advertising data.
Submitted
A new request reached the business.
Qualified
The request fits your agreed criteria.
Booked
Customer and business agreed the next appointment or service.
Completed
The work reached your defined completion point.
Invoiced
The amount was billed under your reporting rules.
Collected
Payment was received, allowing for adjustments.
Proposed reporting definitions, not guaranteed native ServiceM8 fields. Booking value, invoiced value and money collected are not interchangeable.
Agree on what each number means
Write down the stages your office will use consistently:
- Submitted lead: a new request reached the business.
- Qualified request: the team confirmed that the work fits agreed criteria, such as service area and service type.
- Booked work: the business and customer have agreed on the next appointment or service.
- Completed work: the job reached your defined completion point.
- Invoiced value: the amount billed under your reporting rules.
- Money collected: payment actually received, allowing for refunds or adjustments.
Use these as working definitions for your team, then map them to your ServiceM8 setup. They aren't a list of built-in fields or reports.
Keep quote visits separate from installation bookings, or explain clearly when you group them. Keep invoiced value separate from profit and money received, too.
1. Start with ServiceM8's booking-source reports
ServiceM8 documents source labels on online-booking links using the utm_source parameter. Its online-booking reports can show visits, conversion rate and revenue after job completion by booking source. The source-tagging method also applies to Simple Online Enquiries. See ServiceM8's booking-source guidance.
Keep your source names simple and consistent. If one link says “Facebook” and another says “facebook-organic,” decide whether they represent the same source or deliberately different placements. Keep a record of the links you distribute.
The source label tells you which tagged link accompanied the booking journey. It doesn't settle which advertisement deserves all the credit. Someone might share the link, return later or arrive through an untagged route.
Test a few links yourself. Follow the website button to the booking page, submit a clearly labelled test and check the source in the report. A tag on the first page may not carry through every later link.
2. Know what booking-page analytics actually count
For self-serve booking pages, ServiceM8 supports GA4 or Meta tracking. Its GA4 events include viewing a service, reaching checkout and completing a priced booking. A completed booking with displayed pricing can generate a purchase event; a completed form without a price is recorded as a lead. ServiceM8's analytics documentation explains these events.
Read that purchase event carefully. It records a priced booking. You still need separate evidence that the technician completed the work, the final invoice matched the booking price and payment cleared.
Name dashboard measures clearly: “online priced bookings” and “completed jobs” are easier to interpret than two columns both called “sales.” Investigate cancellations and changed scope before using booking value as a stand-in for final revenue.
Check how your website tracking connects to the hosted booking page. Consent choices, browser restrictions and the move between domains can affect what gets recorded. Before adding totals from two reports, make sure you aren't counting the same leads twice.
3. Connect qualified leads and completed jobs to ad reporting
A custom connection may be worthwhile if qualified leads or completed jobs aren't already reaching Google Ads through a setup you've checked. Decide which of those outcomes you need before choosing a connector.
Work through these questions with the person building it:
- Which exact event represents the outcome.
- Which lead, customer and job identifiers preserve the connection between records.
- Which permitted advertising identifiers or customer data are available for matching.
- What timestamp, value and currency belong to that outcome.
- How duplicates, corrections, cancellations and failed uploads will be handled.
- Who checks the destination's diagnostics and investigates missing results.
Google describes enhanced conversions for leads as a way to supplement offline conversion information with eligible first-party data. Use its current offline conversion guidance to scope the setup and applicable data requirements. Collecting contact details for a service request should not be treated as automatic permission for every advertising use.
Check the current guidance before building from an API tutorial. Google's May 2026 developer announcement makes Data Manager API the primary API for offline conversion imports and describes restrictions for new Google Ads API adopters from June 15, 2026. The correct implementation depends on the account and current supported route. Read Google's migration announcement.
What a lead-quality report can tell you
Here's a simple example using made-up numbers, not Goliath campaign results.
Imagine two sources each produce 20 requests. Source A produces 12 suitable enquiries and six completed jobs. Source B produces five suitable enquiries and two completed jobs. A headline of “40 leads” hides that difference in quality.
To compare profit, you'd also need spend, job values and costs on a comparable basis. Give open leads time to progress, especially when larger jobs take longer to quote and schedule.
Compare leads received during the same period and state when you last checked their outcomes. Leave open opportunities visible. If a source is unknown or a record won't match, keep that gap in the report and investigate it.
Now you can ask useful questions. Are poor-fit leads coming from outside your service area? Is the offer unclear? Does one service attract enquiries the team rarely accepts?
Follow a few leads all the way through
Follow a handful of test leads from the original request to the final outcome, or use real records with the appropriate data handling. Check that each report refers to the same job. Repeating an event shouldn't count the same milestone twice.
Then check an existing customer, two jobs for one customer, a cancelled booking, a price change and a missing source. These cases reveal whether the report measures jobs or merely counts customer records repeatedly.
Record the reporting period, time zone and which date you use to group results. A report grouped by lead-arrival date will not necessarily match one grouped by job-completion date. Google's conversion-import troubleshooting guidance also highlights date-basis differences and processing delays.
If the first handoff is unreliable, fix the ServiceM8 website integration and record mapping before expanding measurement.
Start with the decision you want to make
Start with a question you can act on, such as “Which source brings suitable installation leads?” Build a report you can trust to answer it. Tracking will still have gaps, and adding more of it won't automatically improve lead quality or return on ad spend.
Want a clearer view of the leads your campaigns bring in? Explore Goliath's Google Ads services. If lead details or job outcomes are getting lost between systems, our automation and integration services can help scope the missing connection.

