Skip to main content

Why is the campaign field in ServiceTitan so often wrong?

ServiceTitan Published September 5, 2026
Short Answer

Because it is usually set once, by a person, under time pressure, and then inherited forever. A customer created under one campaign keeps that campaign on later jobs even though the later jobs came from somewhere else. Add default campaigns, an overgrown dropdown of stale entries and a catch-all referral bucket, and the field describes how the customer was first acquired rather than what produced today's job.

The field means acquisition, not this job

Most tenants end up with campaign behaving as a customer attribute that gets copied onto jobs. That is defensible for lifetime value analysis and misleading for monthly media reporting. A customer acquired three years ago through a directory listing who now calls because of a mailer will still show the directory in the campaign column.

If your paid media reports are built on that field alone, they systematically under-credit whatever channel drives repeat demand and over-credit whatever was running when your oldest customers were acquired.

The four ways it degrades

  • Inheritance. The campaign follows the customer record onto every subsequent job unless someone deliberately changes it.
  • Defaults. A default campaign on a booking source means every unclassified booking silently lands in one bucket that then looks like your best performer by volume.
  • Dropdown sprawl. Campaign lists grow for years and are rarely pruned. A CSR scrolling a list of two hundred entries under call pressure picks whatever is near the top.
  • The referral catch-all. Referral becomes the answer for everything nobody wants to classify, and grows until it is meaningless.

A diagnostic you can run this week

Compare the campaign distribution in job data against the call volume on your tracked numbers for the same period. Tracked numbers are provisioned per source and cannot be misremembered, so they are a decent independent check.

Where a campaign shows far more jobs than its tracked number produced calls, you are looking at inheritance or a default. Where a tracked number produced heavy call volume that barely appears in the campaign field, the intake process is not capturing it. Both are fixable, and neither is visible from inside the ad platform. This is why call-level data is worth joining to job data rather than reading side by side.

What to do instead of arguing about the field

Do not try to make the campaign field carry the whole attribution burden. Let it mean what it naturally means — how this customer entered your world — and derive job-level source separately, from tracked numbers, web session identifiers and form submissions matched to the job record.

Then report both, and label them differently. Acquisition source and job source are two useful facts. Collapsing them into one column is what makes marketing reports impossible to defend. Getting those two lanes separated is usually the first real win in a marketing intelligence build.

Topics: campaign tracking · attribution · data quality · marketing

Have a version of this question about your own business?

The useful answer usually depends on which systems you run and how they're connected. That's a conversation, not a blog post.

Related Answers

People who read this also asked

Browse the Answer Hub →

AI is easy to access. Making it useful is hard.

Bluefrog makes AI useful by integrating it with the way your business actually works — your software, your calls, your customers, your marketing and your revenue.

Technology development since 1997 · AI integration platforms since 2001