Stop Reporting Clicks: How to Track ChatGPT Ads to Booked Jobs
A media dashboard can tell you that 600 people clicked.
It cannot tell you whether your technicians did profitable work.
That failure is not unique to ChatGPT Ads. A frustrated PPC practitioner described an account this way on Reddit:
“Clicks were high, very high. Conversions, only 1. After thousands of dollars of ad spend.”
The post was about Google Ads, but the lesson applies perfectly to a new channel: traffic is not a business outcome. Read the discussion.
Bottom line
The correct measurement chain is: ChatGPT impression or click → landing page → inquiry → qualified lead → booked appointment → completed appointment → sold job → revenue. OpenAI measures the advertising interaction. Your operating system has to measure the business.
You need two systems of truth
A home-service campaign needs both:
The advertising record
This is OpenAI Ads Manager.
It should tell you:
- impressions
- clicks
- spend
- CTR
- average CPC
- average CPM
- attributed conversion events
The commercial record
This is ServiceTitan, Housecall Pro, Jobber, the CRM, or a disciplined internal system.
It should tell you:
- who contacted the business
- whether the inquiry was legitimate
- whether they were in the service area
- what service they wanted
- whether an appointment was booked
- whether the appointment happened
- whether work sold
- how much revenue and gross profit resulted
Neither system is enough alone.
Layer one: configure OpenAI measurement correctly
OpenAI supports measurement through:
- the OpenAI Pixel
- the Conversions API
- both together
The Pixel is browser-side.
The Conversions API is server-side.
When the same event is sent through both, OpenAI recommends using the same event ID so the platform can deduplicate it. See OpenAI’s conversion documentation.
Preserve oppref
OpenAI appends a click reference called oppref to eligible landing-page URLs.
The Pixel can store it in a first-party cookie and associate it with later events. When available, it can also be passed with server-side conversion events.
Do not accidentally strip it during:
- redirects
- URL cleaning
- form flows
- cross-page navigation
- booking handoffs
A beautifully configured campaign with broken click-reference handling produces weak measurement.
Add UTMs too
OpenAI supports static and dynamic landing-page parameters.
Use a clear convention, for example:
utm_source=chatgpt
utm_medium=cpc
utm_campaign=heart_furnace_replacement
utm_content=repair_vs_replace_a
OpenAI also supports macros such as campaign ID, ad-group ID, ad ID, and ad-account ID. See the reporting documentation.
UTMs help your own analytics.
oppref helps OpenAI attribution.
Use both.
Fire events on completed actions
Do not fire a lead event because someone opened the form.
Do not count a phone-button click as a booked appointment.
A useful event hierarchy may include:
- lead submitted
- appointment scheduled
- purchase or order created, where relevant
OpenAI’s conversion-optimization objective currently requires a supported standard event rather than an arbitrary custom event. See conversion-optimized campaign requirements.
Layer two: preserve the source inside intake
The most common attribution failure happens after the lead arrives.
The form sends an email.
The office calls the homeowner.
Someone books the job.
The source disappears.
That is unacceptable.
The lead source should enter the operating system with the customer.
At minimum, preserve:
- channel: ChatGPT Ads
- campaign
- service line
- landing page
- original timestamp
- call or form
- new or existing customer
Calls need their own attribution path
Home-service customers still call.
Use a campaign-specific tracking number that routes to the normal office.
ServiceTitan says it can create unique phone numbers for campaigns and connect resulting booked jobs to revenue. Its Marketing Scorecard ranks campaigns by revenue rather than only calls. See ServiceTitan’s marketing features.
That is the right mental model:
The call is not the outcome. The job and revenue are.
If ServiceTitan is not available, use another call-tracking solution and make sure the source survives into the CRM.
Define the funnel before launch
Agree on definitions with the client.
Inquiry
A distinct person contacted the business.
Qualified lead
A legitimate prospect requested the promoted service, is in the service area, and meets basic customer criteria.
Booked appointment
The business scheduled a real appointment.
Completed appointment
The appointment occurred.
Sold job
The customer agreed to purchase.
Completed revenue
The work was completed and revenue was recorded or collected according to the company’s reporting policy.
Do not let these definitions change after the results arrive.
Deduplicate people
One person may:
- click
- call
- submit a form
- call again
- schedule online
That is one prospect, not four leads.
The scorecard should count unique people and distinguish interactions from customers.
Without deduplication, a campaign can look productive while the office is simply receiving duplicate touches from the same small group.
Be explicit about attribution windows
Ads Manager supports:
- 7-, 14-, or 30-day click-through reporting windows
- 0-day or 1-day view-through reporting
A view-through conversion is reported when someone converts within one day of an eligible ad impression and no qualifying click receives credit. If both qualify, the click gets credit. See OpenAI’s measurement guide.
For an early local-services pilot, we generally prefer to report:
- click-through conversions separately
- view-through conversions separately
- CRM-attributed leads separately
- booked jobs and revenue from the operating system
Do not collapse everything into one impressive-looking “conversions” number.
OpenAI also warns that attributed conversions may take 24–48 hours to appear. Recent totals can change as processing completes.
The weekly scorecard
A useful client report can fit on one page.
| Metric | Definition |
|---|---|
| Media spend | Actual OpenAI advertising spend |
| Unique inquiries | Deduplicated calls and forms |
| Qualified leads | Legitimate service-area prospects for the promoted service |
| Booked appointments | Appointments scheduled |
| Completed appointments | Appointments that occurred |
| Sold jobs | Customers who purchased |
| Revenue | Booked, completed, or collected—clearly labeled |
| Media cost per qualified lead | Media spend ÷ qualified leads |
| All-in cost per sold job | Media + management + tools ÷ sold jobs |
Below that, include diagnostic metrics:
- impressions
- clicks
- CTR
- average CPC
- landing-page conversion rate
- call answer rate
- speed to lead
- booking rate
- close rate
The owner should see the business result first.
Common measurement failures
Sending traffic to the homepage
The homepage serves too many purposes and makes campaign-level conversion behavior harder to interpret.
Using one generic phone number
The call arrives, but source attribution depends on someone asking “How did you hear about us?”
That data is unreliable.
Firing events too early
Button clicks are counted as leads. Form views are counted as conversions. The platform gets bad signals.
Ignoring existing customers
A warranty call from an existing customer is not a newly acquired customer.
Counting platform conversions as CRM truth
Ads Manager may include modeled or view-through attribution. The CRM may use first-touch or last-touch. Analytics may use a different window.
Differences do not automatically mean one system is broken. OpenAI explains several reasons totals can differ, including windows, time zones, consent, storage, and deduplication.
Waiting until after launch
Measurement is not cleanup work.
Build and test it before the ad is eligible to serve.
Our measurement standard
ChatDemand’s job is not to produce a report that makes the campaign look good.
It is to answer:
- Did ChatGPT produce real prospects?
- Were they the right prospects?
- Did the business book and close them?
- What did acquiring them cost?
- Should the company continue, change, or stop?
Anything less is advertising theater.
Sources
- OpenAI Help: Conversion Measurement
- OpenAI Help: Measure Results
- OpenAI Help: Conversion-Optimized Campaigns
- OpenAI Developers: Measurement Pixel
- OpenAI Developers: Conversions API
- ServiceTitan: Home Services Marketing Software
- Reddit r/PPC: “Manual CPC bidding, what?”
Ready to test ChatGPT Ads in your market?
ChatDemand handles everything — from ad to booked job.
Check Your Market →