You are paying Klaviyo to email 60,000 people who do not remember your brand. That is not a deliverability problem. That is a list management problem wearing a deliverability problem's coat. Every week, a founder or marketing director slides into my DMs with a variation of the same message: "Our emails are going to spam. Open rates are collapsing. We've tried everything — new sending domain, new templates, new subject lines. Nothing's working." They have tried everything except the one thing that actually fixes it. The answer is not a new domain. The answer is not a better subject line. The answer is that you have been emailing 80,000 people, 30,000 of whom have not opened a single email in 18 months, and mailbox providers — Gmail, Outlook, Yahoo, Apple Mail — have noticed. They have been noticing for months. And they have been quietly routing every email you send a little further from the inbox and a little closer to the spam folder, silently, without telling you, while your Klaviyo dashboard shows you an "open rate" calculated against a denominator that includes thousands of contacts who will never open anything you send again.
The unsexy truth about email deliverability is that it is almost never a technical problem in the way most brands assume. SPF, DKIM, and DMARC matter — they are the foundation, and if they are not configured correctly, nothing else you do will help. But in 99% of the deliverability cases I audit, the DNS records are fine. The issue is behavioural. Mailbox providers do not punish you for sending too frequently. They punish you for sending to people who do not want it. And the clearest signal that someone does not want your email is that they have not opened one in six months. When 30–40% of your list consistently ignores you, the algorithms read that silence as a spam signal — and they apply that judgment to your entire sending reputation, including the emails going to the 20,000 subscribers who do want to hear from you and would buy from you if only your email reached their inbox.
This post is the full technical breakdown of the list hygiene and sunset flow architecture we run on every new client in week one. Not a summary. Not a framework overview. The actual configuration — the suppression thresholds, the sunset email sequence, the re-engagement logic, the Klaviyo segment architecture, the DNS verification checklist, and the post-cleanup monitoring protocol. The list you should care about is not the one you have. It is the one that opens.
Most brand-side marketers conceptualise deliverability as a binary: either your email lands in the inbox or it goes to spam. The actual model is more nuanced and more punishing. Mailbox providers — primarily Google, Microsoft, and Apple, who collectively control the inbox for roughly 85% of email addresses — maintain a reputation score for every sending domain and every sending IP address. This score is not static. It is a rolling average of engagement signals, recalculated continuously as new sends go out and new engagement data comes in.
The signals that increase your reputation score are the ones you would expect: opens, clicks, replies, forwards, and saves. The signals that damage it are subtler: not-opens (a subscriber who receives your email and does not open it), spam complaints (the "report spam" button), and unsubscribes (which are better than spam complaints but still negative signals at high volume). The signal that most brands fail to account for is the sustained pattern of not-opens from a large segment of their list. Gmail's spam filter does not fire after one ignored email. It fires when the pattern is persistent — when a contact receives 20 emails over 6 months and opens zero of them. At that point, Gmail has high statistical confidence that this contact does not want your email, and it routes accordingly.
The mechanism that makes this catastrophic at scale is domain-level reputation aggregation. Google does not evaluate each email individually against each recipient's engagement history in isolation. It aggregates the engagement pattern from your entire sending domain and applies a reputation score that affects inbox placement for all sends from that domain, including your sends to highly engaged subscribers. When 35% of your list is chronically disengaged, that 35% is actively dragging down the inbox placement of the 65% who do want to hear from you. You are paying for the engaged subscribers to be penalised by the presence of the disengaged ones.
"You are not fighting Gmail. You are fighting your own list. Every unengaged subscriber you keep is a vote against yourself in the algorithm that decides whether your best customers see your email." Arsalan Faysal — Revenue Systems Architect
MAILBOX PROVIDER REPUTATION MODEL — HOW GMAIL SCORES YOUR DOMAIN ────────────────────────────────────────────────────────────────── POSITIVE SIGNALS (increase domain reputation score): + Open within 2 hours of send (strong positive signal) + Click on a link (strong positive signal) + Reply to the email (very strong positive — rare but weighted heavily) + Forward to another address (strong positive) + Move from Promotions to Primary (very strong — manual user action) + Add sender to contacts (very strong) + Mark as "not spam" after filter (recovery signal) NEGATIVE SIGNALS (decrease domain reputation score): − Email received, never opened (mild but compounds severely at scale) − Unsubscribe (moderate negative) − Spam complaint via "Report Spam" (severe — most damaging single signal) − Hard bounce (invalid email) (severe — indicates poor list hygiene) − Soft bounce pattern (repeated) (moderate — signals list decay) − Move from inbox to spam manually (severe) REPUTATION AGGREGATION MECHANICS: → Gmail evaluates domain reputation at the sending IP + domain level → Rolling 30-day and 90-day engagement windows weighted differently → Not-open rate from disengaged segment pulls down ENTIRE domain score → Spam complaint rate above 0.10% triggers active filtering throttling → Spam complaint rate above 0.30% triggers near-universal spam routing → Recovery from damaged reputation: minimum 90 days of clean sending
Before touching a single suppression or building a single sunset flow, you need an accurate picture of your list's health across four dimensions. Most brands look at their overall open rate and conclude that deliverability is or is not a problem. The overall open rate is the least useful number in your Klaviyo account for diagnosing deliverability. Here is the diagnostic framework we run before any remediation work begins.
Pull four segments in Klaviyo — no filters, no exclusions, just raw counts — and record the numbers. These four segments tell you the actual state of your list with enough precision to quantify the severity of the problem and the expected impact of suppression.
| Segment | Klaviyo Filter Logic | What It Tells You | Healthy Benchmark | Action Threshold |
|---|---|---|---|---|
| Highly Engaged | Opened email in last 30 days OR clicked email in last 30 days | Your genuinely active audience — the people delivering your revenue and your positive reputation signals | 20–35% of total list | If below 10% of list: critical — immediate suppression required |
| Engaged | Opened email in last 31–90 days, not in last 30 days | Active but cooling — still worth sending to, should be on a re-engagement nurture track to pull back to Highly Engaged | 15–25% of total list | Monitor open rate on this segment; if declining, move to sunset flow earlier |
| At Risk | Opened email in last 91–180 days, not in last 90 days | Drifting toward disengagement — last chance for re-engagement before suppression. Every email sent to this segment without re-engagement worsens your reputation score. | 10–20% of total list | Enroll in sunset flow immediately. Do not send regular campaigns to this segment. |
| Disengaged / Suppress | Has NOT opened any email in last 120+ days AND has received at least 3 emails in that window | Chronically disengaged — actively damaging your domain reputation with every send. Gmail has already classified these contacts as non-openers; no subject line change will fix this. | Should be 0% of active list | Sunset flow → suppress. No exceptions. |
Pull your spam complaint rate from Google Postmaster Tools — not from Klaviyo. Klaviyo's spam complaint data is incomplete because most email clients do not route spam complaint feedback back to ESPs. Google Postmaster Tools gives you the direct signal from Gmail's infrastructure. Register your sending domain at postmaster.google.com and monitor the Domain Reputation and Spam Rate dashboards. These are not estimates — they are the actual numbers Gmail uses when deciding where to place your emails.
The sunset flow is the mechanism that separates a professional list hygiene operation from an aggressive mass-suppression that discards potentially recoverable subscribers. The logic is simple: before suppressing any contact as disengaged, give them one final, explicit, honest opportunity to re-engage. Three emails. Spaced over 10 days. Designed with maximum simplicity and minimum friction. Anyone who clicks anything in those three emails gets moved back to the active list. Everyone who does not gets suppressed. The suppression is permanent unless the contact re-subscribes through an active consent point.
SUNSET FLOW — KLAVIYO CONFIGURATION
──────────────────────────────────────────────────────────────────
ENROLLMENT TRIGGER:
Person is in segment: "At Risk — No Open in 91–180 Days"
AND Person is NOT already in a sunset flow sequence
AND Person is NOT suppressed
FLOW FILTER (checked at each step):
IF person opens OR clicks any email in the sequence:
→ EXIT flow immediately
→ Add to segment: "Re-Engaged via Sunset Flow"
→ Remove from "At Risk" segment
→ Add to "Engaged" segment (last active = today)
→ Fire internal notification: "Re-engagement win: [email]"
IF person completes all 3 emails with zero engagement:
→ Add to Klaviyo suppression list (Marketing Suppressed)
→ Tag contact: suppressed_sunset_[YYYY-MM]
→ Remove from all active campaign lists
→ Log suppression date as custom property: sunset_suppressed_date
TIMING:
Email 1 → Send immediately on enrollment
Email 2 → Wait 4 days after Email 1
Email 3 → Wait 6 days after Email 2
Suppression → 48 hours after Email 3 (if no engagement)
The first email in the sunset flow is not a sale, not a promotion, and not a "we miss you" attempt dressed in guilt-trip language. It is a direct, honest acknowledgement that you have noticed they have not been engaging, and a simple, frictionless offer to either re-engage or officially opt out. The subject line should be the simplest it can be. The body copy should be the shortest it can be. Every design element that is not a click target is noise.
Four days after Email 1, if there has been zero engagement, Email 2 goes out. The framing shifts slightly: you are now telling the contact what is about to happen, not asking what they want. The purpose is to trigger the loss-aversion response — people are more motivated by the prospect of losing access to something than by the prospect of gaining it. If your brand has delivered any real value to these subscribers in the past, this email gives them a concrete reason to act before the window closes.
| Day | Primary Frame | CTA | Expected Re-engagement Rate | |
|---|---|---|---|---|
| Email 1 — Check-In | Day 0 | "Do you still want to hear from us?" | "Stay on the list" + Unsubscribe link | 3–8% of At-Risk segment |
| Email 2 — Stakes | Day 4 | "We're removing inactive subscribers on [date]" | "Keep my subscription" + Unsubscribe link | Additional 2–5% of At-Risk segment |
| Email 3 — Final Notice | Day 10 | "Last chance — we're removing you tomorrow" | "Don't remove me" + nothing else (no unsubscribe link needed at this point) | Additional 1–3% of At-Risk segment |
| Suppression | Day 12 | — | Automated suppression via Klaviyo flow action | Everyone remaining = permanently suppressed |
Email 3 is the last email this contact will ever receive from you unless they actively click to stay. Send it 6 days after Email 2. The subject line is the most direct it has been in the entire sequence. The body is shorter than Email 1. There is one call to action — "Don't remove me" — and nothing else. No unsubscribe link is needed at this point because the suppression happens automatically if they do nothing. Some legal frameworks require an unsubscribe link on all commercial emails regardless of context — confirm your jurisdictional requirements and add a plain-text unsubscribe at the bottom if required.
"The brands 'fighting deliverability' are the ones who treat every unsubscribe as a loss. An unsubscribe is free list hygiene. A spam complaint is expensive. A chronically unengaged subscriber who never unsubscribes is the most expensive thing on your list — they cost you your inbox placement with everyone else." Arsalan Faysal — Revenue Systems Architect
The sunset flow concept is straightforward. The Klaviyo implementation requires precision. The segment definitions, flow filter logic, and suppression actions must be configured in a specific way to prevent the most common failure modes: contacts who re-engage being suppressed anyway, contacts being enrolled in the sunset flow multiple times, and suppressed contacts being re-added to active lists by future imports or integration syncs.
KLAVIYO SEGMENT ARCHITECTURE — LIST HEALTH MANAGEMENT SYSTEM
──────────────────────────────────────────────────────────────────
SEGMENT 1: "Active — Highly Engaged"
Filter: Someone who has opened email in last 30 days
AND (opened email OR clicked email in last 30 days)
Update frequency: Real-time (Klaviyo default)
Use: Core sending list. All campaigns should include this segment.
SEGMENT 2: "Active — Engaged"
Filter: Someone who has opened email in last 31–90 days
AND has NOT opened email in last 30 days
Update frequency: Real-time
Use: Send campaigns but monitor open rate.
If open rate drops below 15%, enroll in re-engagement nurture.
SEGMENT 3: "At Risk — Sunset Candidate"
Filter: Someone who has received at least 3 emails in last 90 days
AND has NOT opened email in last 90 days
AND has NOT opened email in last 180 days (catches the full window)
AND is NOT suppressed
AND does NOT have property: sunset_suppressed_date (has value)
Update frequency: Real-time
Use: Sunset flow enrollment trigger.
DO NOT include in any regular campaigns while in this segment.
SEGMENT 4: "Re-Engaged via Sunset Flow"
Filter: Someone who has property: sunset_re-engaged = true
Update frequency: Real-time
Use: Track recovery rate from sunset flow.
These contacts should receive a welcome-back email
before being merged back into Active — Engaged segment.
SEGMENT 5: "Suppressed — Sunset"
Filter: Someone who has property: sunset_suppressed_date (has value)
Update frequency: Real-time
Use: Audit and reporting only. Do NOT send campaigns.
Do NOT import into any active lists from here.
SEGMENT 6: "Never Opened — New Subscriber"
Filter: Someone who has subscribed in last 30 days
AND has NOT opened any email ever
Update frequency: Real-time
Use: Monitor new subscriber activation rate.
If someone subscribes and opens nothing in 30 days,
they need a different welcome sequence — not suppression yet.
The most critical technical detail in the sunset flow configuration is the flow filter that prevents contacts from being suppressed after they have re-engaged. Klaviyo's flow logic evaluates filters at each step by default — but only if you configure them correctly. Without an explicit real-time check at the suppression step, a contact who opens Email 2 but whose re-engagement event has not yet been processed by Klaviyo's segmentation engine could be suppressed by the day-12 automation action.
sunset_re_engaged = true, send internal notification. → NO: Continue to next email in sequence. This conditional split is the safety gate that prevents re-engaging contacts from being suppressed.sunset_suppressed_date to today's date. (2) Update Klaviyo suppression list: add to "Marketing Suppressed." (3) Fire a Klaviyo metric event: Sunset Suppressed for reporting. Do NOT use the native Klaviyo "Unsubscribe" action — this creates an unsubscribe event that can interfere with re-subscribe logic if the contact later opts back in through a form. Use the suppression profile property instead, and exclude the property from all active campaign sends.sunset_suppressed_date has a value. Without this guard, a suppressed contact who makes a purchase (triggering a Shopify customer update) can be re-added to your active Klaviyo list by the integration sync, negating the suppression. In Klaviyo's integration settings, add a suppression exclusion rule: "Do not re-add to marketing lists if sunset_suppressed_date is set."The list hygiene work above assumes your technical sending infrastructure is correctly configured. If your SPF, DKIM, and DMARC records are missing or incorrectly set up, mailbox providers cannot verify that your emails are legitimately sent from your domain — and no amount of list hygiene will fix a fundamental authentication failure. Verify these records before running any sunset flow or suppression campaign. If they are misconfigured and you suppress your entire disengaged list, your deliverability will improve marginally — but the underlying authentication failure will cap your inbox placement regardless of how clean your list is.
| DNS Record | Purpose | Klaviyo-Specific Configuration | Verification Tool | Common Misconfiguration |
|---|---|---|---|---|
| SPF | Authorises Klaviyo's sending servers to send email on behalf of your domain | Add include:_spf.klaviyomail.com to your domain's TXT record. Full record example: v=spf1 include:_spf.klaviyomail.com ~all |
MXToolbox SPF Lookup — enter your sending domain | Multiple SPF records on one domain (DNS only allows one SPF TXT record — combine all includes into a single record) |
| DKIM | Cryptographically signs each email to prove it has not been tampered with in transit | Klaviyo generates DKIM keys in Account → Settings → Email → Domain. Copy the CNAME records Klaviyo provides and add them to your domain DNS. Klaviyo requires you to add their CNAME records — do not generate your own DKIM keys. | MXToolbox DKIM Lookup — enter selector and domain from Klaviyo's provided records | Adding DKIM records as TXT instead of CNAME (Klaviyo requires CNAME format) |
| DMARC | Tells mailbox providers what to do when SPF or DKIM fails — reject, quarantine, or monitor | Add TXT record: _dmarc.yourdomain.com with value: v=DMARC1; p=quarantine; rua=mailto:dmarc@yourdomain.com; pct=100. Start with p=none for monitoring, advance to p=quarantine after 30 days, then p=reject after 60 days. |
MXToolbox DMARC Lookup | Setting p=none permanently — this is a monitoring-only policy that provides no actual protection and signals to mailbox providers that you are not enforcing authentication |
| Custom Tracking Domain | Replaces Klaviyo's default klaviyo.com click-tracking domain with your own domain, improving sender reputation and link trust signals |
In Klaviyo: Account → Settings → Email → Tracking Domain. Add a subdomain like track.yourdomain.com as a CNAME pointing to klclick.com. Every link click is tracked through your domain, not Klaviyo's shared infrastructure. |
Send a test email and inspect the link URLs — they should show your tracking subdomain, not a Klaviyo domain | Skipping this entirely — using Klaviyo's shared tracking domain links your sender reputation to every other Klaviyo customer's behaviour on that shared domain |
The CFO objection is always the same: "We're paying for 80,000 contacts and you want to suppress 40,000 of them? We're cutting our list in half — how does that make business sense?" The answer is in the unit economics, and once you run the numbers it is not a difficult argument to make.
LIST HYGIENE REVENUE IMPACT MODEL ────────────────────────────────────────────────────────────────── BEFORE SUPPRESSION: 80,000 active contacts Total sends per campaign: 80,000 Open rate (current): 18% Opens per campaign: 14,400 Click rate (% of opens): 2.5% Clicks per campaign: 360 Conversion rate (% of clicks): 3.5% Purchases per campaign: 12.6 Average order value: $120 Revenue per campaign: $1,512 Revenue per email sent: $0.019 AFTER SUPPRESSION: 44,000 active contacts (45% suppressed) Total sends per campaign: 44,000 Open rate (post-suppression): 36% Opens per campaign: 15,840 ← MORE opens than before Click rate (% of opens): 3.2% ← Higher: engaged audience Clicks per campaign: 507 Conversion rate (% of clicks): 4.1% ← Higher: intent-matched audience Purchases per campaign: 20.8 Average order value: $120 Revenue per campaign: $2,496 Revenue per email sent: $0.057 ← 3x revenue per email sent NET IMPACT: List size reduction: -45% Klaviyo cost reduction: -45% (contacts-based pricing) Revenue per campaign increase: +65% Revenue per email sent increase: +200% Spam complaint rate change: -60 to -80% (disengaged contacts drive complaints) Domain reputation trajectory: Recovery begins within 30 days of suppression
The Klaviyo cost reduction alone often covers the engagement of a specialist to run the cleanup. Klaviyo's pricing is contact-based — suppressing 36,000 contacts from an 80,000-contact list moves a typical brand from the $700/month plan to the $400/month plan. Over 12 months, that is $3,600 saved on software that was being used to damage your sender reputation. The revenue increase from improved inbox placement compounds that number further: more opens from the same engaged audience, higher click rates because engaged subscribers have self-selected for relevance, and higher conversion rates because you are hitting people who have a demonstrated purchase history with your brand.
"The list you should care about is not the one you have. It is the one that opens. A 44,000-contact list that reaches the inbox is worth more than an 80,000-contact list that hits the Promotions tab — and it costs you less to send to." Arsalan Faysal — Revenue Systems Architect
Suppression day is not the end of the work. It is the beginning of the measurement phase. Domain reputation recovery from a previously damaged state takes a minimum of 30 days of consistent clean sending, and the full recovery to stable inbox placement in Gmail Primary (for brands that were previously in Promotions) takes 60–90 days. During this window, the monitoring protocol is tighter than normal operating rhythm — you are watching for signals that confirm recovery is on track and catching any regression before it compounds.
| Monitoring Metric | Tool | Check Frequency | Recovery Target | Regression Signal |
|---|---|---|---|---|
| Domain Reputation Score | Google Postmaster Tools | Daily for first 30 days; weekly thereafter | Medium or High rating (Postmaster Tools scale) | Drop from Medium to Low — immediately pause all sends except transactional and investigate new complaint sources |
| Spam Rate | Google Postmaster Tools | Daily for first 30 days | Below 0.05% consistently | Any send that produces a spam rate above 0.08% — investigate which segment or campaign triggered it |
| Open Rate by Segment | Klaviyo Campaign Analytics | Per campaign send | Active — Highly Engaged: 35%+ / Active — Engaged: 20%+ | Open rate declining two sends in a row — check if disengaged contacts have been re-added to active lists via integration sync |
| Bounce Rate | Klaviyo Campaign Analytics | Per campaign send | Hard bounce below 0.3% per send; soft bounce below 2% | Hard bounce spike — indicates imported contacts with invalid emails; check recent list imports and integration syncs |
| Inbox Placement Test | GlockApps, Mail-Tester, or Litmus Email Analytics | Weekly during recovery period | Gmail Primary inbox placement above 80% | Any test showing above 15% Promotions or above 5% Spam routing — review recent sends and segment configurations |
| Klaviyo Deliverability Health Score | Klaviyo Account → Deliverability | Weekly | Score above 90 (Klaviyo's internal benchmark) | Score declining week-over-week — check for suppressed contact re-enrollment, new spam complaint sources, or bounce rate increases |
The sunset flow and suppression campaign solve the acute problem. The ongoing hygiene system prevents the same problem from rebuilding itself over the next 12–18 months. Without an automated maintenance system, a brand that runs a clean suppression today will be back to the same disengagement ratio within 18 months — because new subscribers who never activate accumulate, because engaged subscribers drift into inactivity without a re-engagement trigger, and because no one on the marketing team is manually auditing the segment health week after week.
The maintenance system is three automated Klaviyo flows running in the background continuously: a New Subscriber Activation Flow that monitors whether new subscribers open anything in their first 30 days and triggers a different welcome sequence if they do not; a Rolling Engagement Monitoring Flow that checks all active subscribers at the 60-day no-open mark and enrolls them in a light re-engagement sequence before they hit the 90-day At Risk threshold; and the Sunset Flow itself, which now runs as a permanent background automation rather than a one-time campaign — automatically catching any subscriber who drifts to the 91-day no-open threshold and processing them through the three-email sequence before suppression.
Run these three flows permanently. Audit your four engagement segments monthly. Check Google Postmaster Tools weekly. And resist the pressure — from your CFO, from your growth team, from any agency that measures success by list size — to grow your subscriber count faster than you grow your engagement rate. A 20,000-contact list with a 40% open rate is a more valuable email channel than an 80,000-contact list with an 18% open rate. The math does not change because the number looks smaller. The revenue per send goes up. The Klaviyo bill goes down. And the inbox placement holds — because the algorithm sees what it needs to see: a sender whose subscribers actually want to hear from them.