Marketing Attribution for Insurance Brokers: Knowing Which Renewal Reminder Actually Worked
Here's a conversation I have with almost every insurance broker I sit down with: "we run Google Ads, we send renewal emails, we do SMS reminders, and Steve from the local real estate office sends us a few referrals a month — but I honestly couldn't tell you which one is doing the heavy lifting." 💖 That's not a data science problem. It's a plumbing problem. You don't need a BI dashboard or a six-figure martech stack to fix it — you need every touchpoint to leave a fingerprint, and one place to write down what that fingerprint was the moment a lead actually calls or fills in a form. That's genuinely most of the job.
What most brokers get wrong
Crediting whatever happened last
A client renews their home and contents policy. The staff member who took the call notes "phone call" as the source and moves on. What actually happened is the client got a renewal email six weeks out, ignored it, got an SMS reminder two weeks out, ignored that too, then finally rang in after a second SMS the day before expiry. If you only ever record the last touch, every one of those reminders except the final SMS disappears from your data — even though the first email is what put the renewal date in their head in the first place.
Not tracking anything and just guessing
The more common version isn't bad attribution — it's no attribution at all. Budget decisions get made on vibes: "nobody ever mentions the Google Ads, so let's cut that spend." But almost nobody says "I saw your ad three months ago and finally called today." They just call. Without a source field logged at enquiry, you're not making a data-informed decision, you're making a guess and calling it strategy.
The usable setup — no enterprise software required
1. A UTM convention for every channel. Keep it dead simple and consistent — utm_source / utm_medium / utm_campaign for anything with a link:
- Renewal email:
utm_source=email&utm_medium=renewal&utm_campaign=oct_renewals - SMS reminder 📱:
utm_source=sms&utm_medium=renewal&utm_campaign=oct_renewals - Google Ads: leave auto-tagging on (gclid) and also label campaigns clearly by product — e.g. "landlord_insurance_gc"
- Referral partners: a unique link or short code per partner —
utm_source=referral&utm_campaign=steve_realty— never lump all referrals together
2. One "source" structure in your CRM or spreadsheet, filled in at enquiry. Columns: Date | Client | Policy type | First touch source | Last touch source | Campaign tag | Referral partner (if any) | Outcome (quoted / bound / lost). Two source columns, not one — that's the whole trick.
3. First touch vs last touch, used together, not instead of each other. First touch tells you what got someone into your world in the first place — worth knowing for deciding where to spend acquisition budget. Last touch tells you what tipped them into actually acting — worth knowing for deciding which reminder cadence to keep. Personal lines renewals lean on last touch (the nudge that finally gets the call). Commercial new business leans on first touch (the referral or ad that started a much longer conversation). Track both and you stop cutting the channel that's quietly doing the priming work.
How it actually works, mechanically
Every link you send out — in emails, SMS, ads, referral partner pages — carries a UTM tag, which just means Google Analytics (or whatever's tracking your site) knows exactly which campaign and channel sent that visitor. When they fill in an enquiry form, that source data can flow straight into a hidden form field, so it lands in your inbox or CRM automatically. For phone calls, which insurance brokers get a lot of, you've got two realistic options: a call-tracking number per channel (a small monthly cost, worth it once volume justifies it), or simply training whoever answers the phone to ask "how did you hear about us?" and log the exact answer immediately, not a vague guess an hour later. Once a lead is in the door, someone — you, an office manager, whoever owns the spreadsheet — fills in the first-touch and last-touch columns and updates the outcome once the policy is quoted or bound. Once a month, tally by policy type: which source shows up most as first touch, which shows up most as last touch, and where the two overlap most often. That monthly quarter-hour is the whole system.
Mistakes to avoid:
- Only tracking new business enquiries and ignoring renewals — renewals are where most of your premium actually sits, and they're the easiest touchpoints to tag since you control every reminder.
- Overwriting the first-touch field every time a new touch comes in, so the original source that brought the client in gets lost forever after the second interaction.
- Sending internal reminder emails and SMS without unique campaign tags, so they all collapse into "direct" or "unknown" in your reporting and look like they're doing nothing.
- Trusting a client's verbal "how did you hear about us" answer as gospel without cross-checking it against your actual UTM or call-tracking data — memory is unreliable, especially months after the first touch.
Worth being upfront about the limits here: this is not true multi-touch attribution modelling with weighted credit across every touchpoint — that's the kind of thing enterprise platforms charge a lot of money for, and even then it's often more precise-looking than it is precise. A simple first-touch/last-touch spreadsheet won't tell you that Google Ads deserves exactly 34% of the credit for a bound policy. What it will tell you, reliably, is which channels keep showing up at the start of the journey and which keep showing up at the end — and for a decision like "should I keep paying for this," that's genuinely enough. 🚀
Frequently asked questions
Do I need a CRM to do this, or can a spreadsheet work?
A spreadsheet is genuinely fine for most brokerages, especially anything under a few hundred enquiries a month. The two-source-column structure works identically in Excel, Google Sheets, or a CRM's custom fields. Move to CRM-based tracking once manual entry starts eating real admin time or you've got multiple staff logging leads and need it centralised.
How do I track phone calls back to a specific channel?
Either a call-tracking number per channel (a different number on your Google Ads landing page versus your website versus a referral partner's page), or simply asking and logging the answer at the time of the call. The honest caveat: self-reported answers are less reliable than tracked digital data — people misremember or say "I just Googled you" when they actually clicked a specific ad. It's still far better than not asking at all.
Should each referral partner get their own tracking code?
Yes — lumping all referrals into one generic "referral" source is one of the most common ways brokers lose useful data. Give each partner a unique link or UTM code so you can see which relationships are actually converting versus which just feel active because you talk to that person often.
How often should I actually review this data?
Monthly for small campaign tweaks — pausing an underperforming ad set, adjusting SMS timing. Quarterly for real budget decisions, because insurance sales cycles are slow, especially commercial lines, and a month of data can make a genuinely good channel look like it's underperforming simply because the deals it started haven't closed yet.
Keep reading 🤍
I help Gold Coast and Brisbane businesses grow with branding, websites and marketing that actually works.
Work with me ✦