Email Marketing Infrastructure

From broadcast to precision —
rebuilding email for 26,000 contacts.

Open rates were flat. Bounce rates were high. Every contact was getting the same email regardless of who they were or where they were in the buying journey. Here is how we fixed the infrastructure underneath — and what happened to the numbers.

6–8% 1.2%
Bounce rate reduced
+15–17%
Open rate increase
+6%
Click rate increase
Full Email Infrastructure Rebuild 4 weeks B2B SaaS · 150–200 employees HubSpot · NeverBounce · Clay Anonymised

The Situation

A growing database. Declining results.

A B2B SaaS company had been building their email list for years. By the time we audited it, the database had 26,000 contacts spanning 10+ countries, multiple product lines, and a wide range of job titles and seniority levels.

Open rates were flat. Bounce rates were climbing. The team had been sending the same email to everyone — same timing, same content, same message — regardless of whether a contact was a prospect, a customer, a partner, or someone at a completely different funnel stage.

The problem was not the email copy. It was the infrastructure underneath. Invalid contacts were dragging down deliverability. Emails were going out at the wrong time for each country. There was no persona grouping, no funnel-stage personalisation, and no connection between lead score and content.

Before — Audit Findings

What the audit found

ProblemDetail
Total contacts in database26,000 — accumulated across multiple years
Email validityUnknown — no verification had ever been run
Bounce rate6–8% per campaign — sender reputation at risk
Country data coverageNear zero — no timezone-aware sending possible
Persona groupingNone — all contacts received identical emails
Funnel stage personalisationNone — no connection between lead score and content
Lifecycle stage automationManual updates only — inconsistent and delayed
Send timingOne global send time regardless of contact location
Unsubscribe trendGradually increasing over prior 6 months

The root cause: the email system had been built for volume, not precision. As the database grew, the gap between what was being sent and what each contact actually needed kept widening.

The Fix

What we built — and why this order matters

The order matters. Personalising emails to invalid contacts wastes every step downstream. We cleaned before we personalised.

Deliverability First
Verify Before Anything Else
  • Ran full database through NeverBounce email verification
  • Result: 21,000 valid contacts confirmed out of 26,000
  • 5,000 invalid contacts removed — protecting sender reputation before the next send
  • Suppressed bounced, invalid, and risky addresses from all active lists and sequences
Enrichment at Scale
Country Enrichment — 90% Coverage
  • Enriched country data for all valid contacts using enrichment tools
  • Result: 19,000 of 21,000 contacts enriched with country (90% coverage)
  • Covered 10+ countries across EMEA, North America, and APAC
  • This directly enabled timezone-optimised sending — impossible without country data
Segmentation Foundation
Prospect / Partner / Customer Separation
  • Contact type segmentation was already in place — used as the foundation for all downstream personalisation
  • Customers excluded from all prospect nurture sequences — no more cold outreach to paying accounts
  • Partners routed to partner-specific communications only
  • Prospects segmented by funnel stage using existing lead scoring model
Send Time Optimisation
Country-Based Send Timing
  • Built send-time logic using enriched country data
  • Each country group now receives emails at their optimal local open window
  • Removed the single global send time that was hitting US contacts at midnight and APAC at 3am
  • This single change contributed significantly to the open rate improvement
Persona Personalisation via Clay
Job Title → Persona Grouping
  • 90% of contacts had job title populated — used as raw material for persona mapping
  • Used Clay to group job titles into 5–6 defined personas
  • Each persona mapped to a specific messaging angle and content type
  • All personalisation logic built in Clay, then synced back to HubSpot contact properties
  • Result: every email now speaks to the contact's role, not just their first name
Funnel-Stage Content
Lead Score → Buyer Journey Content
  • Existing lead scoring model used to determine funnel stage for each contact
  • Top-of-funnel prospects received awareness and education content
  • Mid-funnel contacts received comparison and consideration content
  • Bottom-of-funnel prospects received decision-stage and offer content
  • Right message to the right person at the right stage — automated, not manual
Lifecycle Automation
Lead Score → Lifecycle Stage (Automated)
  • Built automation to update lifecycle stage based on lead score thresholds
  • Score changes now trigger automatic lifecycle stage progression in HubSpot
  • Eliminated manual lifecycle updates entirely — contact moves through the funnel automatically
  • Contact always receives content appropriate to their current stage — not where they were 3 months ago

After — What Changed

Before and after

MetricBeforeAfter
Total contacts26,00021,000 verified valid
Bounce rate6–8% per campaign1.2%
Open rateFlat baseline+15–17% increase
Click rateFlat baseline+6% increase
Country data coverageNear zero90% (19,000 contacts)
Persona groupingNone5–6 personas defined and active
Send timingOne global timeCountry-optimised per send
Lifecycle stage updatesManual — inconsistentAutomated via lead score
Unsubscribe trendGradually increasingGradually decreasing
Funnel-stage personalisationNone3-stage content by buyer journey

The Key Insight

What most teams get wrong about email performance

"Most companies blame the copy when open rates are low. The real problem is almost always the infrastructure — who you're sending to, when you're sending, and whether the message matches where they actually are in the buying journey."

The biggest unlock was treating email as an infrastructure problem, not a content problem. Once the foundation was right — valid contacts, correct timing, persona-matched content, funnel-stage alignment — the results followed automatically.

1
Verify before personalising — sending personalised emails to invalid contacts wastes every step downstream. Deliverability is the foundation.
2
Enrich before segmenting — you cannot send at the right time without country data. You cannot persona-map without job title. Enrichment enables everything else.
3
Segment before personalising — persona grouping in Clay transformed 40+ job title variations into 5 clear messaging tracks. Personalisation at scale requires this layer.
4
Connect lead score to content — the scoring model already existed. Connecting it to content delivery and lifecycle automation made it do real work for the first time.

What This Unlocked

Business outcomes

📉
Bounce rate: 6–8% → 1.2%Sender reputation protected. Deliverability issues stopped before they became permanent.
📈
Open rate: +15–17%Country-optimised timing and persona-matched subject lines drove the lift across all segments.
🎯
Click rate: +6%Funnel-stage content meant contacts were receiving offers relevant to where they actually were in the buying journey.
🔄
Lifecycle automation liveContacts now move through the funnel automatically as their lead score changes. No manual updates needed.
👥
5–6 personas activeEvery email now speaks to the contact's role and function — not just their first name.
📊
Unsubscribe rate decliningBetter relevance reduced friction. Contacts receiving the right content at the right time stopped opting out.

Recognise any of this?

If your email metrics are flat, your bounce rate is climbing, or you are sending the same message to everyone regardless of persona or funnel stage — this is the exact work I do.

Book a free 20-min HubSpot teardown →

Fixed scope. Fixed price. You will know exactly what is broken before committing to anything.