Bright Side Plumbing

ServiceTitan
Configuration Playbook

The click-by-click guide to perfect data quality, campaign attribution, and reporting. Every call, every job, every dollar tracked to its source.

13 Campaign Sources
50 Job Types
4 Business Units
$366K Revenue Tracked
Section 01

Why This Matters

Campaign attribution is the foundation of every marketing decision we make. Without it, we are flying blind.

Section 02

Campaign Setup

Every lead source must have a matching campaign in ServiceTitan. This is how we connect marketing spend to revenue.

Section 03

Job Type Configuration

50 job types are configured in ServiceTitan. Selecting the right one ensures accurate reporting and proper technician dispatch.

Section 04

Business Unit Setup

Four business units organize all work at Bright Side. Every job must be assigned to the correct BU for accurate P&L reporting.

Section 05

CSR Call Booking Checklist

This is the step-by-step process every CSR follows on every single call. No exceptions. No shortcuts.

📞 The 6-Step Booking Process

  1. Ask "How did you hear about us?"
    Listen to their answer and select the matching campaign from the dropdown. If they say "I Googled it," ask if they clicked an ad or found you in the regular results. "Ad" = PPC. "Regular results" = Google. "I saw the green checkmark" = Google LSA.
  2. Confirm customer name, address, and phone number
    For existing customers, verify the info on file is current. For new customers, spell back the name and read back the address to confirm accuracy. Always get a mobile number for text notifications.
  3. Select the correct job type
    Based on the customer's description, choose the most specific job type available. "My drain is clogged" = Drain Cleaning. "Water everywhere" = Leak Detection or Emergency Plumbing. When in doubt, ask clarifying questions before selecting.
  4. Assign to the correct business unit
    Most calls go to Service. If the customer specifically asks for a quote on a big project (repipe, sewer replacement, bathroom remodel), assign to Sales. If they reference their membership, assign to Maintenance.
  5. Add a detailed job description in the notes
    Write down what the customer said in their own words. Include: what the problem is, when it started, what they have already tried, and any access instructions. The more detail, the better the tech can prepare.
  6. Set the proper priority level
    Emergency (active flood, no water, sewage backup) = Urgent. Today or tomorrow request = High. Flexible scheduling = Normal. Estimate or consultation = Low.
Section 06

Technician Field Completion

The CSR gets the job started right. The technician finishes it right. Every field visit must end with a complete record in ServiceTitan.

🛠 The 5-Step Field Completion Process

  1. Update the job status in real time
    When you arrive, mark the job as "In Progress." When finished, set it to "Completed." If the customer cancels or reschedules on-site, set the appropriate status and add a note explaining why. Never leave a job in "Dispatched" status after you have been on site.
  2. Add all line items with proper pricing
    Every part, material, and labor charge must be added as a line item. Use the pricebook templates when available. Do not lump everything into a single "Plumbing Service" line item. Detailed invoices build customer trust and give us accurate cost-of-goods data.
  3. Capture the customer's signature
    Before leaving the property, have the customer sign off on the completed work. This protects both the customer and the company. No signature = no proof of service completion.
  4. Add photos and technician notes
    Take before and after photos. Document what you found, what you did, and any recommendations for future work. These notes feed into follow-up campaigns and help the next tech who visits this customer.
  5. Complete and finalize the invoice before leaving
    Do not drive to the next job with an open invoice. Close it out on-site. Incomplete invoices create billing delays, inaccurate daily revenue numbers, and extra office work for the team.
Section 07

Reporting & Data Quality Audit

Good data requires ongoing discipline. These audits catch gaps before they become blind spots.

Section 08

Integration Checklist

Third-party lead sources and advertising platforms must be properly integrated so that attribution flows automatically.

Section 09

Quick Reference Card

Print this. Pin it next to your monitor. Tape it to the dashboard of the van. These are the rules that protect our data.

★ The Five Rules of Data Quality

📢 Every Job Gets a
Campaign Source
🔧 Every Job Gets a
Job Type
🏢 Every Job Gets a
Business Unit
Every Job Gets a
Final Status
💰 Every Job Gets a
Complete Invoice

📞 CSR Quick Checklist (Every Call)

  • "How did you hear about us?", Select the matching campaign
  • Confirm name, address, phone, Spell it back, read it back
  • Select the most specific job type, Not "General" unless truly unclear
  • Assign the correct business unit, Service, Maintenance, Sales, or Install
  • Write a detailed job description, Customer's words, not yours
  • Set priority, Urgent, High, Normal, or Low

🛠 Tech Field Checklist (Every Job)

  • Mark "In Progress" on arrival, Update status in real time
  • Add every line item, Parts, materials, labor, all with correct pricing
  • Capture customer signature, Before you leave the property
  • Take before/after photos, Minimum 3 photos per job
  • Finalize the invoice on-site, Do not leave with an open invoice

📊 Manager Weekly Audit (Every Monday)

  • Check jobs with no campaign, Fix attribution retroactively
  • Review "General Plumbing Service" usage, Reclassify where possible
  • Spot-check incomplete invoices, Follow up with technicians
  • Review cancel rate by source, Flag sources above 20%
  • Verify integration health, Are LSA/Service Direct leads flowing in?
Data-Driven Findings

Configuration Gap Audit

Quantified analysis from 658 jobs over 90 days (Dec 15, 2025, Mar 13, 2026) via ServiceTitan API. Total revenue: $619,689.90. Each gap includes the data, the impact, and the fix.

🔴 GAP 1: "Existing Customer" Overuse (170 jobs / 26%)

170 jobs tagged "Existing Customer", inflated because HCP-migrated customers default to this tag, and SLP/SD customers get retagged on callbacks. This hides the true ROI of paid sources.

The Fix

  • Create "Original Lead Source" custom field on customer profiles. First-touch attribution stays forever, even when callbacks get tagged differently.
  • HCP Migration: When importing HCP customers, set Original Lead Source = "House Call Pro." New jobs still get current campaign tag, but acquisition source is preserved.
  • CSR Training: Before selecting "Existing Customer," check the customer profile for their original source. If they came from SLP, tag the callback to SLP.

🔸 GAP 2: "General Plumbing" Catch-All (264 jobs / 40.3%)

264 of 655 jobs (40.3%) tagged as "General Plumbing Service." This masks the actual service mix, we can't tell if a job was drain cleaning, leak detection, faucet repair, etc. Makes it impossible to optimize by service type.

The Fix

  • Tech verifies/updates job type on-site. CSR picks best-guess at booking, tech corrects on arrival based on actual work performed.
  • Multi-service visits: Tag to the PRIMARY (highest-revenue) service. A $2,000 drain cleaning + $200 faucet repair = Drain Cleaning.
  • Goal: Get "General Plumbing" below 15% of total jobs within 60 days.

🔴 GAP 3: 19 Dead Campaigns (Zero Jobs in 90 Days)

19 campaigns in ServiceTitan have generated zero jobs in 90 days. They clutter the CSR dropdown and increase the chance of mis-selection. Includes: Goodzer - MRKT 2, old/renamed campaigns.

The Fix

  • Archive or deactivate all 19 dead campaigns. Fewer options = fewer CSR mistakes.
  • Keep only campaigns that actively receive leads. Current active: Google LSA, Service Direct - MRKT 1, Service Local Pro - MRKT 2, Google Organic, Existing Customer, Networx, Voolt, Angie's List, House Call Pro, Google Ads (new 2026 campaigns).
  • Review quarterly. If a campaign goes 60 days with zero jobs, archive it.

🔸 GAP 4: LSA 25.3% Cancel Rate (Highest of Any Source)

Google LSA: 182 jobs, 46 canceled (25.3%). Compare to Service Direct at 8.3%. LSA is the #1 volume source but a quarter of leads cancel. That's ~$23K/quarter in potential lost revenue.

The Fix

  • Review canceled LSA jobs for patterns. Are they tire-kickers? Wrong service area? After-hours? Price shoppers?
  • CSR qualification: Add 2-3 qualifying questions for LSA calls before booking (service needed, homeowner?, timeline).
  • Target: Reduce LSA cancel rate to under 15% within 60 days.

🔸 GAP 5: 43 Stuck Jobs (Not Completed or Canceled)

43 jobs sitting in limbo, not Completed, not Canceled. These skew revenue reporting and clog the dispatch board. Some have active estimates awaiting customer decisions.

The Fix

  • Weekly job audit (every Monday), review all jobs older than 7 days not in Completed/Canceled.
  • Has active estimate? Set to HOLD. This keeps the sales pipeline alive, the estimate stays valid and the sales manager can follow up.
  • No service, no estimate, customer declined? Cancel with reason code (e.g., "Customer Declined," "No Response," "Wrong Service Area").
  • NEVER complete a job with $0 just to close it out. This breaks revenue metrics. Use Hold or Cancel instead.

🔴 GAP 6: Campaign Misattribution (Proven via API Audit)

Cross-referencing SLP customer names against ST campaign tags proved 7 SLP-acquired customers had jobs tagged as Service Direct. CSRs select campaign at booking based on what the customer says, not verified source. Callbacks default to "Existing Customer."

Fix Options (ranked by effectiveness)

  • Option 1: Unique tracking numbers per Google Ads campaign. Auto-tags via ST phone integration. No CSR judgment needed.
  • Option 2: Dynamic Number Insertion (DNI) on website. Different number per traffic source, auto-attributed in ST.
  • Option 3: "Original Lead Source" custom field (see Gap 1). First-touch preserved even when callback campaign changes.
  • Option 4: Nexus cross-reference script. Match inbound number against lead source database for automated verification.

🔵 GAP 7: No Job Closing Workflow

No documented process for closing jobs where no service was performed. Canceling jobs with active estimates breaks the sales pipeline (estimates become invalid, sales manager can't follow up on conversions).

Standard Job Closing Workflow

  • Has active estimate awaiting decision? → Set to HOLD. Keeps estimate valid. Sales manager follows up.
  • No service, no estimate, customer declined?CANCEL with reason code.
  • Service performed but $0 invoice?FIX THE INVOICE. Never complete with $0.
  • Estimate rejected by customer? → Cancel with "Estimate Declined" reason.

🔵 GAP 8: SLP-Specific Attribution Problem

SLP sends leads from 3 programs: "Brightside PLMB" ($155/call), "100 Year PLMB" ($155/call), "Low Cost Brightside" ($50/call). But all should map to one ST campaign: "Service Local Pro - MRKT 2" (ID: 56753933). Callbacks get scattered across other campaigns.

The Fix

  • When SLP customer calls back: CSR checks customer profile, re-tags to SLP campaign, not "Existing Customer."
  • 75% of SLP leads (53 of 71) never became ST customers. This is a conversion problem, not just attribution.
  • Track SLP ROI monthly: Revenue from "Service Local Pro - MRKT 2" jobs vs. SLP billing charges.

🔵 GAP 9: Tech Job Type Verification

CSRs make a best-guess job type at booking, but this often stays as "General Plumbing" and never gets corrected. Techs see the actual problem on-site but don't update the job type.

The Fix

  • Add to tech arrival checklist: "Verify job type matches actual work. Update if different."
  • If job type is "General Plumbing," tech MUST change it to the specific service (Drain Cleaning, Leak Detection, Water Heater, etc.).
  • Multi-service visits: Use the highest-revenue service as the primary job type.

🔷 GAP 10: Revenue Reporting Accuracy

ST's native Marketing ROI report exists but depends on correct campaign attribution (Gaps 1, 6, 8). With current misattribution, ST's own reports undercount some sources and overcount others.

The Fix

  • Fix attribution first (Gaps 1, 6, 8). Then ST's native reports become trustworthy.
  • Meanwhile: Use API-based revenue scripts (st_rev_breakdown.py) for accurate cross-referenced reporting.
  • Revenue field: Use job.total (float) from the Jobs API, this is the authoritative invoice amount. Do NOT use the invoices endpoint (returns total as string, causes calculation errors).
  • Verified totals (90 days): $619,689.90 across 658 jobs, 249 with revenue.

Gap Audit Priority Matrix

FIX NOW (Week 1-2)
  • Archive 19 dead campaigns
  • Clear 43 stuck jobs
  • Job closing workflow training
FIX SOON (Week 3-4)
  • CSR attribution training
  • Tech job type verification
  • General Plumbing reduction
BUILD (Month 2)
  • "Original Lead Source" field
  • Tracking number auto-attribution
  • LSA cancel rate reduction

Audit date: March 13, 2026 | Data: 658 jobs, 90-day window | Source: ServiceTitan API v2

🌟

The Bottom Line

Every piece of data we capture in ServiceTitan feeds our ability to make smarter marketing decisions, identify the best lead sources, cut waste, and grow revenue. When the data is clean, we know exactly where every dollar comes from and where the next dollar should go.

13 Campaigns 50 Job Types 4 Business Units $620K Tracked