Most small businesses can't answer one question
Ask a typical small-business owner "which marketing channel generated the most revenue last quarter?" and you'll get a guess. Sometimes a confident guess. Almost never a number backed by data.
The cost: every renewal of the same Google Ads budget, every Facebook campaign restart, every "give the SEO guy another six months" decision is made without information. Some of those channels are profitable and some are losing money. Without attribution, you can't tell which.
1. Dedicated call-tracking numbers
Every marketing channel that drives phone calls gets its own tracked phone number. Different number on the Google Business Profile, on Google Ads, on the website, on the truck wraps, on direct mail.
- CallRail — $45-$145/month for 5-50 tracked numbers. Industry default for service businesses.
- Twilio — pay-per-number ($1/month) + pay-per-minute. Cheaper at low volume, more setup work.
- All tracked numbers forward to your real business line — customers experience no difference.
- Every call gets logged with source channel, duration, recording (where legal), and outcome.
2. UTM-tagged campaign URLs
Every link in every campaign — Google Ads, Facebook Ads, email, SMS, QR codes — gets UTM parameters appended.
- utm_source = the channel (google, facebook, email, sms, qr).
- utm_medium = paid, organic, email, social.
- utm_campaign = the specific campaign (spring-tune-up-2026).
- utm_content = the specific ad/creative variant (where you're A/B testing).
- Google Analytics 4 or Plausible captures these and attributes web sessions to source.
3. "Source" field on every CRM record
Every new lead in your CRM gets a source field captured at intake. This is non-negotiable. "Where did you hear about us?" gets asked on every call and form. The answer goes in the CRM.
- Web form: hidden field populated from utm_source.
- Inbound call: tracked number tells you the source automatically.
- Walk-in or referral: CSR asks and records.
- Required field — no new lead enters the CRM without a source.
4. One weekly review
Every Monday morning, 15 minutes. Pull last week's closed jobs from the CRM. Sum revenue by source. Compare against ad spend by channel. One spreadsheet, one decision: keep spending, cut, or test something new.
This is the part most businesses skip. The data accumulates and nobody looks at it. The 15-minute weekly review is what turns the system from "we have tracking" to "we make better decisions."
- Revenue by source — sum of closed-job value, grouped by source.
- Spend by source — Google Ads, Facebook Ads, direct mail, sponsorships.
- ROAS by source — revenue divided by spend.
- Trend — is this source improving or declining quarter-over-quarter?
Cassidy HVAC scoping used this exact model
Before scoping the reactivation engine for Cassidy HVAC, we ran this attribution model for 30 days. Result: we discovered the dormant-customer list was the highest-ROAS "channel" in their business, but it was getting zero systematic attention. That insight is what justified the build. The HG Oil Holdings dashboard scoping used the same approach to identify back-office time as the largest hidden cost center.
