Calls, matched to revenue
One Number per Source, One Campaign per Number, One Invoice at the End of the Line
Most contractors can say how many times the phone rang last month. Far fewer can say which of those calls became a paid invoice, or which ad paid for the ring. Call tracking that lands inside ServiceTitan closes that gap, provided the website does its part.
October 26, 2026 · 10 min read
The short answer
ServiceTitan call tracking ties each tracked phone number to a marketing campaign, so a call that becomes a booked job can carry its source through to the invoice. You can use ServiceTitan's own Dynamic Number Insertion, which requires its Google Ads integration, or a certified app such as CallRail that syncs calls with source, campaign and keyword data.
On this page
- The call log that knows everything except why
- ServiceTitan's own phone and number options, as of October 2026
- What CallRail sends, in its own words and ServiceTitan's
- The website's job: every number swappable, every visit remembered
- From ring to invoice: the match that pays for itself
- Setting up call tracking without breaking the phones
- What we build, what it costs, and who answers
The call log that knows everything except why
Picture the Monday meeting. The office manager has a call count. The agency has a click count. The owner has a bank balance. Nobody has a line that runs between the three, so the meeting becomes a debate about whose number is bigger, and the radio spot keeps running because nobody can prove it does nothing.
Call tracking draws that line. Each source gets its own phone number: the Google ads, the Business Profile, the postcard, the van door. When a number rings, the call arrives stamped with where it came from. In ServiceTitan the stamp is a campaign, and ServiceTitan's Marketing API overview says campaigns "can be tracked by using unique phone numbers." The goal is simple to state: the booked job carries the same campaign as the call that produced it, so the invoice can be counted against the ad that started it.
For a home service company that matters more than it does for most businesses, because the phone is still where the money arrives. A furnace that quits at 10 p.m. does not wait for a contact form. If your marketing attribution ignores calls, it ignores the jobs that pay the bills, and the report your agency sends counts clicks and calls it revenue.
ServiceTitan's own phone and number options, as of October 2026
ServiceTitan offers three phone tiers, and each one handles tracked numbers a little differently. None of them is a website feature, but all of them decide what your website has to do. ServiceTitan publishes no prices for any of them, so we will not guess.
| What ServiceTitan says it is | What to know before you rely on it | |
|---|---|---|
| Basic Phones | The "entry-level phone integration," tracking and recording incoming calls on virtual tracking numbers | Static numbers per source work well for vans, mailers and listings |
| Phones Pro | "a cloud-based phone system fully integrated with ServiceTitan," "Powered by Dialpad" | Priced per seat; ask ServiceTitan for a quote |
| Contact Center Pro | ServiceTitan's own phone system | "currently in Early Access" and requires an Enterprise Hub network |
| Dynamic Call Tracking using DNI | Swaps tracking numbers on your website per visitor | Can be configured "only if you have Google Ads configured," one configuration per website; accounts in Canada must use Manual DNI |
DNI is the piece that touches the website. ServiceTitan's Google Ads help article says its Google Ads integration "isn't complete until Google Analytics and Dynamic Call Tracking using DNI are also configured." When a visitor from an ad calls a DNI number, ServiceTitan stores the visitor's GCLID. If the call is classified as a Lead, ServiceTitan "sends it as a conversion into Google Ads using the GCLID." Booked calls count, and so do unbooked calls over 60 seconds that were not excused. That definition is worth reading slowly, because it decides what Google learns to buy. The full story of that loop lives on our Google Ads conversion tracking page.
What CallRail sends, in its own words and ServiceTitan's
Plenty of contractors already run CallRail, with years of call history inside it, and they are not about to rip it out. They do not have to. CallRail carries a "Certified App" badge in the ServiceTitan Marketplace, and its listing says "Inbound calls tracked in CallRail sync to ServiceTitan and match to existing contacts (or create new ones), populated with source, medium, campaign, and keyword data." The same listing says CallRail "connects directly with the ServiceTitan Marketing Pro Ads Package."

CallRail's own integration page adds that the call log is available in ServiceTitan and lets you "View source and keyword level detail," and it lists the integration's first release as August 2024. CallRail's support article on the mechanics blocks automated reading, so treat this part as reported: a search index summary says it sends calls to ServiceTitan's ExternalCallAttributions endpoint with the customer, forwarding and tracking numbers, the call start time and web-session attribution.
ServiceTitan's side of that handshake is public. Its Marketing Ads API has POST /external-call-attributions, described as attributing "an external call (possibly coming from Call Tracking Software) to a web session." The web session requires a landing page URL and a referrer URL, and it can carry click IDs (gclid, gbraid, wbraid, fbclid, msclkid) and UTM fields. Connecting CallRail happens in the contractor's own account: Settings > Integrations > API Application Access, "Connect New App," select CallRail, then hand CallRail the Client ID and Client Secret. Marchex, also certified, says it sends "available source and session attribution to the matching ServiceTitan call record."
The website's job: every number swappable, every visit remembered
A swap script can only change the numbers it can find. Call tracking often breaks without ServiceTitan or CallRail doing anything wrong. The usual culprit is a website that hid its phone numbers where no script could reach them, then reported that organic search drove every call.
- Numbers baked into images. A phone number inside a hero graphic or a van photo never swaps. Every number on the page should be live text.
- Click-to-call links that lie. The visible digits change but the
tel:link underneath still dials the main line, so the call lands untracked. Both have to swap. - Widgets that load late. A sticky mobile call button or a chat box that draws itself after the swap script ran keeps the old number. Test on a phone, not just a desktop.
- Two scripts in one fight. ServiceTitan DNI and CallRail both loose on the same page will overwrite each other. Our practice is one owner of the swap per site.
- A lost first visit. The click ID and UTM tags arrive on the landing page only. If the site drops them on the next page, the call that comes three pages later is anonymous.
- The main number in the HTML. We keep the real business number in the page source and let the script swap it for visitors, so listings and the site agree. Hestia in Athena keeps that number identical everywhere it appears.
Calls are half of it. A visitor who fills a form instead of calling needs the same session data sent with the lead, which is the job of web forms that post to ServiceTitan and of online booking. A site built on Next.js with a server-side connection can keep the landing page, referrer and click IDs from the first page view and attach them to whatever the visitor does next.
From ring to invoice: the match that pays for itself
An ad or a search
Google Ads, Local Services Ads, Meta, or a tracked phone number.
A call or a booking
The click ID or the tracked number travels with the lead.
A job and an invoice in ServiceTitan
The lead's source stays attached to the revenue it produced.
Revenue goes back to the ad platform
The platform learns which clicks became paid jobs, not just form fills.
The loop above is what call tracking is for. A call on a tracked number gets a campaign. The CSR books it, and the job should carry that campaign. The job is completed and invoiced. With ServiceTitan's Ads Optimizer, a "ServiceTitan Completed Jobs Conversion Action" sends the completed job's "Total Revenue" to Google as the conversion value. Now the bidding system learns from paid work instead of from rings.
Custom integrations can join the loop too. Since ServiceTitan's ST-74.1 release (August 14, 2025), the jobs API accepts a partnerLeadCallId to "add the current call.id to a job at creation," and the Telecom API lists calls and their recordings for reporting. That is how a booking assistant or a callback flow on the website can keep the call and the job tied together. One honest limit: ServiceTitan's main API has no webhooks today (V2 webhooks are "currently being developed"), so a custom report polls for new calls within the published rate limit rather than waiting to be told.
A call count is a weather report. A call matched to an invoice is a forecast you can bid on.
Setting up call tracking without breaking the phones
The order matters, because the phones cannot go dark while you rewire them. This is the sequence we follow, and it works whether ServiceTitan DNI or CallRail ends up owning the swap.
- 1
List every number you publish
Website header, footer and contact page, Google Business Profile, Local Services Ads, ad call extensions, vans, yard signs, mailers and invoices. Expect at least one number nobody remembers buying.
- 2
Pick one owner for the swap
ServiceTitan DNI if you run Marketing Pro Ads and Google Ads through it; CallRail if it already holds your history and reports. Write the choice down so the next vendor does not install a second script.
- 3
Create campaigns that match real sources
One ServiceTitan campaign per source you want to judge, each with its own number. "Website" is not a source; "Google Ads, furnace repair" is.
- 4
Connect the app in your own account
For CallRail, a ServiceTitan admin with the API permissions uses API Application Access and Connect New App, then passes the credentials to CallRail. Access depends on your ServiceTitan package and is approved by you, in your account.
- 5
Make every number on the site swappable
Live text, matching
tel:links, late-loading buttons included, and landing page data kept through the visit. Then test on a phone over cellular, not the office Wi-Fi. - 6
Place a test call from a tagged visit
Arrive through a link with UTM tags, call the number shown, and confirm the call appears in ServiceTitan with its source. Your live account is production, so tell the office first and mark the test clearly.
- 7
Read calls against jobs every month
Calls by campaign, booked rate, completed revenue. If a source rings a lot and books little, that is a script or an ad problem, and now you can see which.
What we build, what it costs, and who answers
DataCram is a web studio in San Antonio, Texas. We build the website side of this: the number swapping, the session capture, the forms and bookings that carry the same source as the calls, and the conversion tracking setup that ties them to the ad accounts. If you run ads with us, PPC advertising is managed against booked revenue, not ring counts.
Fixing an existing site
Integration work on the site you have is quoted after a free review. A two-system connection is typically one to three weeks, per our API integrations page.
A new site built for it
Custom builds start at a fixed $1,750, and a site with online booking or an estimate flow is about $9,000 on the web design pricing page. Financing is 0% with 25% down through website financing.
Proof you can click
On Bleuwave Home Services, an on-page assistant books straight into ServiceTitan, and a request-a-callback form is answered 24/7 by a real person.
Start with a free site audit and we will list every number your site shows and whether it can be tracked. The rest of the section, from booking to reviews, is on the ServiceTitan integration hub, and the launch checklist has a line for every number. Or call (210) 346-0848. We will not ask which ad you saw.
Questions contractors ask about ServiceTitan integration
Yes. CallRail is listed in the ServiceTitan Marketplace with a "Certified App" badge. Its listing says inbound calls tracked in CallRail sync to ServiceTitan and match to existing contacts or create new ones, with source, medium, campaign and keyword data. A ServiceTitan admin connects it under Settings > Integrations > API Application Access and gives CallRail the client ID and secret.
ServiceTitan's Dynamic Call Tracking using DNI can be configured only if its Google Ads integration is configured, and that integration is part of Marketing Pro Ads. CallRail's listing says it connects with the Marketing Pro Ads Package. Static tracking numbers on Basic Phones are a separate option. Exactly what your account includes depends on your ServiceTitan package, so confirm with ServiceTitan.
Not when they are handled with care. Our practice is to keep your main number in the page source and in your listings, and let a swap script show tracking numbers to visitors. That keeps your name, address and phone consistent for search engines while each visitor still sees a trackable number. We check your listings in a map pack audit.
They can both be installed, but two swap scripts on one page will fight over the same numbers, and one of them will lose quietly. We pick one owner for the website swap. The other system can still hold static numbers for vans, mailers or listings, so long as each number belongs to exactly one campaign.
Separately from your website numbers. ServiceTitan's LSA lead capture, in Early Access as of October 2026 and requiring its Google Ads integration, can bring Get Quote contact details into CRM or Bookings, but ServiceTitan notes that the phone number it receives "is a Google tracking number, not the customer's real number." Our Local Services Ads guide covers measuring LSA against booked revenue.
In ServiceTitan, report by campaign: calls, booked jobs and completed revenue per campaign. That only works if every published number belongs to one campaign and the website keeps its numbers swappable. A sample monthly report and the case against "source: website" are on our marketing attribution page.
Keep reading
- Google Ads and ServiceTitanWhy Google Ads Keeps Buying Phone Taps, and How ServiceTitan Revenue Changes Its MindSend booked jobs and invoice revenue from ServiceTitan back to Google Ads: the exact conversion actions, click IDs, enhanced conversions and setup steps.
- Attribution, case by caseThe Case of the Unattributed Furnace: Tracing Every ServiceTitan Job Back to What Paid for ItWhy "source: website" tells you nothing, how to tie every ServiceTitan lead to a campaign and its revenue, and a sample monthly report you can copy.
- LSA meets the job boardLocal Services Ads Bill by the Lead. ServiceTitan Knows Which Leads Paid.How Google Local Services Ads leads land in ServiceTitan, why the phone number belongs to Google, and how to weigh LSA spend against booked revenue.
- Online bookingThe Customer Picked Thursday at 10. Does the Dispatch Board Know?ServiceTitan's Scheduling Pro or a custom booking flow on your own site: how each installs, tracks and shows availability, and when each one wins.
- Web formsThe Lead Nobody Has to Retype: Website Forms That Arrive in ServiceTitan WholeSend estimate, callback, contact and emergency forms to ServiceTitan as bookings with the source attached. Field map, spam filtering, retries, prices.
- Custom site, server-side linkIf a Visitor Can Read Your API Secret, So Can Everyone: Custom Next.js Sites That Book Into ServiceTitan From the ServerA custom Next.js site that sends bookings to ServiceTitan from its own server: credentials hidden, click IDs kept, pages fast. How it works, limits, prices.
- Everything in ServiceTitan IntegrationSee the section
Find out which ads actually ring
Tell us what you run today. We will map every number you publish, show where calls lose their source, and quote the fix.
Which of these sounds like you? (pick any)
Rather talk now? Call (210) 346-0848.