<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Remint]]></title><description><![CDATA[In my audits I often find DTC brands leaving 30-50% of email revenue on the table. Remint shows where it leaks: flows, deliverability, copy, automation, AI that actually pays, and how to recover. 15 years of audits, flow building, design and development.]]></description><link>https://tips.remint.email</link><image><url>https://substackcdn.com/image/fetch/$s_!24xZ!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7427920-260f-42d9-b197-5833922a2119_256x256.png</url><title>Remint</title><link>https://tips.remint.email</link></image><generator>Substack</generator><lastBuildDate>Wed, 10 Jun 2026 02:22:17 GMT</lastBuildDate><atom:link href="https://tips.remint.email/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Christian Lundgren]]></copyright><language><![CDATA[en-gb]]></language><webMaster><![CDATA[remintemail@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[remintemail@substack.com]]></itunes:email><itunes:name><![CDATA[Christian Lundgren]]></itunes:name></itunes:owner><itunes:author><![CDATA[Christian Lundgren]]></itunes:author><googleplay:owner><![CDATA[remintemail@substack.com]]></googleplay:owner><googleplay:email><![CDATA[remintemail@substack.com]]></googleplay:email><googleplay:author><![CDATA[Christian Lundgren]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Why your AI emails don't sound like you]]></title><description><![CDATA[It is not the model. Your voice file was written from memory, not from approved copy. Here is the extraction method that fixes it.]]></description><link>https://tips.remint.email/p/why-your-ai-emails-dont-sound-like</link><guid isPermaLink="false">https://tips.remint.email/p/why-your-ai-emails-dont-sound-like</guid><pubDate>Fri, 05 Jun 2026 15:33:53 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/9a4f9bc1-cbaa-4024-aaeb-ec4feec3ad59_2400x1260.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>Why your AI emails don't sound like you</h2><p>Every voice setup I have seen that starts with a self-description drifts. The rules are accurate: they describe the voice the client thinks they have. Not the voice their approved emails actually demonstrate. That gap is where first drafts go wrong and revision rounds pile up.</p><h3>Why Extracted Voice Beats Described Voice</h3><p>In my experience, voice setups that start with a self-description drift. Not because the rules are wrong. Because the rules describe the voice you think you have, not the voice your approved emails actually demonstrate.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://tips.remint.email/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en-gb&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Remint is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>When you describe your voice in a document ("warm but direct, benefit-led, no corporate jargon"), you are writing in human language about writing behavior. Claude has to interpret that description and translate it into generation behavior. The interpretation step introduces error. "Warm but direct" means something specific in your head and something different when the model generates against it.</p><p>When you extract voice rules from approved output, something different happens. The rules come back in terms that describe writing patterns structurally: sentence rhythm, opener structure, recurring phrase patterns. When you paste that file into the next prompt, the model is reading a structural description of the voice, not a human description it has to interpret. From experience, the gap between instruction and output is smaller.</p><h3>Where Voice Calibration Sits in the Pattern</h3><p>The extraction prompt is governed by the same four-mechanism wrapper we apply to every prompt we publish: <strong>prerequisites</strong> (approved samples and brand context), <strong>self-validation</strong> (every rule cites a sample number), <strong>human gate</strong> (you approve the VOICE.md before it lands on disk), and <strong>improvement proposal</strong> (recurring violations from drift detection become operator-committed rule additions).</p><p>VOICE.md is then the declared prerequisite of every other prompt in the system. Subject line prompts, segment rewrites, pre-send QA: each one refuses to run unless VOICE.md is provided. The voice file is not optional context. It is a required input enforced at the prerequisites layer.</p><h3>The Two Layers Email Voice Actually Has</h3><p>The other failure mode in most voice setups is treating all email types as interchangeable. A welcome email and an abandoned cart email are not the same register. The same brand writes them differently: different warmth level, different urgency, different lead style. If you extract voice from five promotional emails and use that file for welcome copy, you get welcome emails written in a promotional register. Structurally correct, tonally wrong.</p><p>Email production voice has two distinct layers:</p><ul><li><p><strong>Brand identity layer:</strong> what stays consistent across every email type. Core vocabulary, sentence rhythm, prohibited phrases, opener DNA. This is extracted once and lives in the VOICE.md.</p></li><li><p><strong>Contextual register layer:</strong> how far each flow type moves on warmth, urgency, and lead style. Welcome sits at different coordinates than cart recovery for the same brand. This is documented separately in REGISTER.md and referenced per send.</p></li></ul><p>Building both is a one-time setup. Using them is one extra line in every prompt. From experience, the difference shows up in revision rounds: extracted voice files cut the back-and-forth on tone consistency from the first draft.</p><h3>Extraction Prompt: The Brand Identity Layer, Full Wrapper</h3><p>Use one representative approved email per primary flow type as input. Welcome, abandoned cart, promotional, and re-engagement if you have all four. The prompt extracts what is consistent across all of them: the brand identity. Patterns that only appear in one flow type are register, not identity, and get flagged as conflicts for the register map.</p><pre><code>## Prerequisites: required before running

- 5 to 10 approved email samples from this client, one per flow type
- A one-paragraph brand context (product, audience, primary offer)

If either is missing, do not proceed. Respond:
"Cannot run. Missing: [list approved emails / brand context as applicable].
Provide and re-run."

## Inputs

Brand context: [PASTE ONE PARAGRAPH ABOUT PRODUCT, AUDIENCE, OFFER]

Approved emails: [PASTE 5-10 APPROVED EMAILS, ONE PER FLOW TYPE,
SEPARATED BY --- BELOW]

## Task

Extract the brand identity layer: what stays consistent across ALL email
types. Write a VOICE.md file using exactly this structure:

---
## Tone
[one sentence: the consistent emotional register across all samples,
citing Sample numbers that demonstrate it]

## Sentence rules
1. [length and rhythm rule, with verbatim example in quotes and Sample number]
2. [paragraph structure rule, with Sample number]
3. [one other consistent structural pattern, with Sample number]

## Opener patterns
- [first-sentence style, with verbatim example in quotes and Sample number]
- [second pattern if present, or "one consistent pattern observed"]

## Recurring phrases
- "[exact phrase found across multiple emails]" (Samples N, N)
- "[exact phrase found across multiple emails]" (Samples N, N)
- "[exact phrase found across multiple emails]" (Samples N, N)

## What this voice never does
- [prohibition derived from consistent absence, with reasoning]
- [prohibition with reasoning]
- [prohibition with reasoning]

## Subject line pattern
[describe the pattern, citing Samples, or write
"not visible in samples" if subject lines not provided]
---

Rules:
- Brand identity only. Skip patterns that appear in only one flow type.
- Use verbatim examples where possible.
- If samples contradict each other on a pattern, write:
  CONFLICT: [what varies]. These belong in the register map, not here.

## Self-validation (run before returning output)

Before returning the VOICE.md, check:

1. Every rule cites at least one specific sample number
2. No rule is contradicted by another rule in the file
3. No subjective adjective ("punchy", "engaging", "conversational")
   appears without an operational test attached
4. The structure matches the schema above exactly
5. CONFLICT lines appear for any pattern that varies across samples

If any check fails, fix internally and re-check. If you cannot satisfy a
check after one attempt, return:
"Validation failed: [rule]. Cannot produce compliant VOICE.md."

## Human gate (before writing to disk)

After returning the VOICE.md block, state:
"Review the extracted VOICE.md above. Type APPLY to write it to disk as
VOICE-[YYYY-MM].md, or REJECT with specific corrections."

Do not write the file until APPLY is received.

## Improvement proposal (optional)

If you noticed a voice pattern in the samples that does not fit the four
sections above, append:

"PROPOSED RULE ADDITION (review before adding to the schema): [one line
describing the section or rule type that should be added]"

Do not modify the schema yourself.</code></pre><p>Any CONFLICT line the extraction returns is a signal to document that pattern in the register map. It means the brand genuinely calibrates that behavior by email type, and a single rule would either be too rigid or too vague to be useful.</p><h3>The Register Map, Same Wrapper</h3><p>Once VOICE.md is committed, run a second prompt against the same samples to derive the register coordinates per flow type. The register map does not need to be regenerated frequently. Only when the program adds a new flow type or when client feedback flags a specific flow as tonally off.</p><pre><code>## Prerequisites

- VOICE.md (the brand identity file from the extraction prompt above)
- The same email samples used for the extraction
- A list of flow types in the program

If any is missing, do not proceed. Respond:
"Cannot run. Missing: [list]. Provide and re-run."

## Inputs

VOICE.md: [PASTE VOICE.md CONTENTS HERE]

Email samples: [PASTE THE SAME SAMPLES USED FOR EXTRACTION]

Flow types in program: [LIST EVERY FLOW TYPE, ONE PER LINE]

## Task

For each flow type, identify register coordinates:

- Warmth level: high / medium / low, with one verbatim example sentence
- Urgency level: high / medium / low, with one verbatim example sentence
- Lead style: what the first sentence focuses on
  (benefit / consequence / story / question / direct CTA)
- CTA style: how the call to action is framed
  (soft / direct / urgent / implied)

Format as a table with one row per flow type. Coordinates, not rules.
They describe where this brand sits on each axis for each context.

## Self-validation

Before returning:
1. Every flow type from the input list has a row
2. Every cell cites a verbatim example sentence
3. No coordinate contradicts the VOICE.md identity layer
4. The table format is consistent

If a flow type has no representative sample, mark its row "INSUFFICIENT
SAMPLE" rather than guessing. Return the table even if some rows are
incomplete.

## Human gate

After returning the table, state:
"Review the REGISTER.md above. Type APPLY to write to disk, or REJECT
with corrections."

## Improvement proposal

If a register dimension keeps coming up that is not warmth/urgency/lead/CTA,
append:
"PROPOSED RULE ADDITION: [one line describing the new dimension]"</code></pre><p>The output is a table. Welcome might be high warmth, low urgency, benefit-led, soft CTA. Abandoned cart might be medium warmth, high urgency, consequence-led, direct CTA. The table goes into a REGISTER.md file stored in the same client folder as VOICE.md.</p><h3>Using Both Files in Every Downstream Prompt</h3><p>Once VOICE.md and REGISTER.md exist on disk, every other prompt in the system declares both as required prerequisites. The downstream prompts refuse to run without them.</p><p>Below is the usage prompt that consumes both files. Notice that the prerequisites block lists VOICE.md and REGISTER.md by name and stops if either is missing.</p><pre><code>## Prerequisites: required before running

- VOICE.md for this client
- REGISTER.md for this client
- A brief with all six fields below filled in

If any prerequisite is missing, do not proceed. Respond:
"Cannot run. Missing: [list]. Provide and re-run."

## Inputs

VOICE.md: [PASTE VOICE.md CONTENTS HERE]

Register for this send: [PASTE THE RELEVANT ROW FROM REGISTER.md]

## Brief
Type: [welcome / abandoned cart / promotional / re-engagement]
Position: [e.g. first in a 4-part sequence / third of five]
Audience: [who receives this and what they know about the brand]
Offer: [if applicable]
Goal: [what this email needs to accomplish]
Length: [word count target]

## Task

Write the email in the voice described in VOICE.md, calibrated to the
register coordinates above.

## Output format

Subject: [subject line]
Preview: [preview text, max 90 characters]
Body: [email body only, no greeting, no sign-off]

## Self-validation

Before returning, check the draft against:
1. Every VOICE.md "What this voice never does" rule
2. Register warmth, urgency, lead style, and CTA style match the row
3. Body word count is at or below the Length value specified in Brief

If any check fails, fix internally and re-check. If you cannot satisfy a
check after one attempt, return:
"Validation failed: [rule]. Cannot produce compliant copy."

## Human gate

After returning the draft, state:
"Review the draft above. Type APPLY to queue for send, or REJECT with the
specific revision needed."

Do not move the draft to the send queue until APPLY is received.

## Improvement proposal (optional)

If during writing you noticed a recurring pattern not covered by the
self-validation rules above (e.g. a register coordinate pairing that
consistently produces a structural conflict with VOICE.md), append:

"PROPOSED RULE ADDITION (review before adding): [one line describing the
pattern]"

Do not modify the self-validation rules in this prompt. Only propose.</code></pre><p>The register row anchors warmth and urgency before generation starts. Without it, the model calibrates from VOICE.md alone, which describes the brand's tonal center of gravity, not where a specific flow type should sit on the scale. The result is a promotional email written at welcome-register warmth, or a re-engagement email with the urgency level of a cart recovery send.</p><h3>When to Update Each Layer</h3><p>The two layers update on different triggers.</p><p>From experience, AI-assisted programs drift faster than human-authored ones because generation volume is higher. Set a review cadence before you start generating at volume, not after you notice output degrading. For AI-assisted production, monthly is the cadence we use. For human-authored programs, quarterly is the cadence we use as a baseline.</p><p>Brand identity layer: update when brand guidelines change, when a major campaign cycle introduces a deliberately different positioning, or when a drift detection run flags consistent violations across multiple flow types. Not every brand refresh requires a full extraction. If only the prohibited phrases changed, edit VOICE.md directly and commit the change.</p><p>Register map: update when a specific flow type consistently gets revision notes about tone. If every abandoned cart draft comes back too aggressive, the urgency coordinate for that flow type is wrong. Pull three recent approved sends from that flow, re-run the register prompt for that row only, and commit the updated table.</p><p>Keep both files versioned: <code>VOICE-2026-05.md</code>, <code>REGISTER-2026-05.md</code>. When an output starts feeling off and you cannot identify why, the file version is in git history and you can trace it back to the specific file the drafts were generated against. Improvement is governed, reviewable, reversible.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://tips.remint.email/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en-gb&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Remint is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Your CLAUDE.md Is Working Against You]]></title><description><![CDATA[Email production pipelines often reach 200+ lines of CLAUDE.md by month three. Here is the decision tree and path-scoped rules structure that fixes it.]]></description><link>https://tips.remint.email/p/your-claudemd-is-working-against</link><guid isPermaLink="false">https://tips.remint.email/p/your-claudemd-is-working-against</guid><pubDate>Thu, 04 Jun 2026 13:03:07 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/7e40522c-dc4c-4b5e-ac55-fdaded54097b_2400x1260.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>Your CLAUDE.md Is Working Against You</h2><p>After three months in a live email production workflow, a CLAUDE.md file typically reaches 400 lines. Claude does not ignore the rules &#8212; it deprioritizes the ones buried deep enough that they lose the competition for attention. Here is the architecture that fixes it.</p><p>It made sense when you wrote it. Six months later it is 400 lines long and Claude is quietly ignoring the bottom half. Not because the rules are wrong. Because a model working through a live production session cannot consistently apply guidance buried that deep in a long file.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://tips.remint.email/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en-gb&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Remint is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h3>How it happens</h3><p>A client is running Claude as part of their email production pipeline. Newsletter sends, product launch announcements, promotional campaigns, welcome series variations. The workflow is working, so they keep extending it. Every time Claude produces something that misses (wrong tone on a product email, a claim that should not be in a newsletter, a subject line that does not match the brand register), they add a rule to CLAUDE.md. The file grows one sensible addition at a time.</p><p>By month three, a typical client workflow managing 500 or more email topics has a CLAUDE.md past 200 lines. Brand voice rules. Forbidden claims from previous bad outputs. Product naming conventions. Template contracts for different send types. Tone variations per audience segment. Cadence rules. All of it written down. None of it reliably followed.</p><p>Anthropic flags this in their Claude Code documentation: CLAUDE.md files over 200 lines degrade adherence. The model deprioritizes rules it encounters deep in a long file. The context window is finite, and in a session working through a product launch campaign alongside newsletter copy and automated send logic, CLAUDE.md is competing with everything else in that session for attention.</p><h3>The workaround that does not work</h3><p>The instinctive fix is splitting the file using <code>@import</code>: breaking content into separate files and pulling them in. It does not reduce the problem. Imported files still load in full at the start of every session. The context cost is identical. You have reorganized the problem, not solved it.</p><p>The fix that actually works is the one Anthropic documents: <code>.claude/rules/</code> with <code>paths:</code> frontmatter. Files in that directory load only when Claude touches a matching file path during the session. Not at session start. Not always. Only when relevant.</p><h3>The decision tree we use to audit a CLAUDE.md</h3><p>We built a Claude Code skill called <code>/trim-claude-md</code> that walks every section of a CLAUDE.md through this logic. The full skill is free to copy at the bottom of this article. Here is how it categorizes each section:</p><ol><li><p><strong>Does every session need this?</strong> Brand voice rules, forbidden vocab, hard invariants. Yes: stays in CLAUDE.md.</p></li><li><p><strong>Does it only apply when working in a specific area?</strong> Template rules, copy rules for a specific campaign type, segment-specific guidelines. No: moves to a <code>.claude/rules/</code> file scoped to that path.</p></li><li><p><strong>Is it a multi-step procedure?</strong> Setup runbooks, credential flows, one-time config. Moves to <code>docs/setup-*.md</code> or a standalone skill.</p></li><li><p><strong>Is it state or history?</strong> "As of March 2026 the welcome series has 4 emails", shipped features, row counts. Cut entirely. Belongs in commit messages. It is not a rule, it is history, and history rots inside CLAUDE.md.</p></li><li><p><strong>Is it hard enforcement?</strong> "Must validate before commit", "must run linter before push". Moves to a pre-commit hook in <code>.claude/settings.json</code>. Hooks are enforced. CLAUDE.md instructions are not.</p></li></ol><h3>What the split looks like for an email production workflow</h3><p>What belongs in CLAUDE.md and loads every session: brand voice rules, forbidden claims the client has validated, US versus British English, the hard no-most-customers rule. These apply everywhere. They stay.</p><p>What moves to a scoped rule file:</p><ul><li><p><strong>Email template rules:</strong> subject line length limits, preheader conventions, CTA copy guidelines, template token contracts. Scoped to <code>templates/**</code>. Loads only when a session touches a template file.</p></li><li><p><strong>Product announcement rules:</strong> product naming conventions, launch tone, pricing language, permitted claims in promotional sends. Scoped to <code>campaigns/**</code> or <code>launches/**</code>. A session writing a welcome series never loads this.</p></li><li><p><strong>Segment-specific copy rules:</strong> rules for a specific audience segment or list. Scoped to those output directories. Irrelevant to most sessions and invisible to them once scoped correctly.</p></li><li><p><strong>ESP and rendering notes:</strong> client-specific rendering rules, deliverability constraints, dark mode handling. Scoped to the relevant build or export directories.</p></li></ul><p>What gets cut entirely: dated state notes, shipped features lists, and any paragraph describing the current state of the workflow rather than a rule Claude should follow. These belong in commit messages or a plans folder.</p><h3>What the frontmatter looks like</h3><p>A rule file for product announcement copy:</p><pre><code>---
paths:
  - "campaigns/**/*"
  - "launches/**/*"
---

# Product announcement copy rules

[Campaign-specific guidance here]
</code></pre><p>Claude Code reads the <code>paths:</code> block and loads the file automatically when a session touches a matching path. If the session is writing newsletter copy and never touches a campaign file, this file is invisible to it.</p><h3>The pattern extends beyond email</h3><p>We have seen this in every production workflow where clients run Claude over time: CLAUDE.md becomes the catch-all for every correction ever made. Legal adds a clause. Brand adds a voice note. A developer adds a rendering constraint. A marketer adds a segment rule. The file grows.</p><p>Email workflows are particularly prone to this because of the volume of writing, the number of variations, and the long-running nature of the pipeline. A client running 500 email topics across multiple send types, with audience segments and product lines and seasonal tone shifts, generates more rules than almost any other Claude use case. The context file needs architecture, not just growth.</p><p>If a client workflow has been live for more than three months and output quality has quietly declined from where it started, check the CLAUDE.md line count first. If it is past 200, run the audit.</p><h3>The skill: free to copy and use</h3><p>The <code>/trim-claude-md</code> skill automates the full audit. It reads your CLAUDE.md, walks every section through the decision tree above, and produces a proposal file showing exactly what stays, what moves, and where. Nothing is written until you approve. One session to run it.</p><p>To install it in your Claude Code project:</p><ol><li><p>Create the directory: <code>mkdir -p .claude/skills/trim-claude-md</code></p></li><li><p>Copy the skill file from the gist below into <code>.claude/skills/trim-claude-md/SKILL.md</code></p></li><li><p>Run it from the project root: <code>/trim-claude-md</code></p></li></ol><p>The full skill is here, free to use on any project: <a href="http://gist.github.com/ChristianLundgren/d4be5560eec2c36385d6fe3e5fd3dccd">gist.github.com/ChristianLundgren/d4be5560eec2c36385d6fe3e5fd3dccd</a></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://tips.remint.email/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en-gb&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Remint is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[p=none Is Where Deliverability Programs Stall. Here Is How to Move Past It.]]></title><description><![CDATA[Many brands set DMARC to p=none and never move past it. Here is how the three policy options work and when to enforce quarantine or reject.]]></description><link>https://tips.remint.email/p/pnone-is-where-deliverability-programs</link><guid isPermaLink="false">https://tips.remint.email/p/pnone-is-where-deliverability-programs</guid><pubDate>Wed, 03 Jun 2026 12:25:14 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/3a3e0209-f4c9-435b-b29b-60be67debed7_2400x1260.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>p=none Is Where Deliverability Programs Stall. Here Is How to Move Past It.</h2><p>DMARC has three policy levels. Many brands that have a DMARC record in place are sitting at the first one, and they have been sitting there for months or years. <code>p=none</code> technically satisfies the Google and Yahoo 2025 bulk sender requirements. You published a record, you pass the compliance check, and your emails continue to deliver. What you have not done is protect your domain from being spoofed by senders you did not authorise.</p><p>That gap between "technically compliant" and "actually protected" is where deliverability programs stall. The path from <code>p=none</code> to <code>p=reject</code> requires work, but it is structured work with a clear sequence. This article walks through exactly what each policy level does, why many brands get stuck at the first, and the step-by-step process to move through all three without breaking legitimate mail in transit.</p><h3>Why This Matters</h3><p>Domain spoofing is the attack that DMARC exists to block. Without a policy that enforces action on failing mail, anyone can send email that appears to come from your domain. Your customers receive what looks like an email from your brand, except it is a phishing attempt, a scam, or a spam blast from an infrastructure you have no visibility into.</p><p>Your domain reputation takes damage from mail you did not send. Your customers lose trust in emails that look like yours. And you have no mechanism to stop it because your DMARC policy instructs receiving servers to do nothing about it except file a report.</p><p>The Google Sender Guidelines 2025 and the Yahoo Sender Requirements 2025 both mandate a DMARC record for bulk senders at any policy level. This pushed many brands to publish their first DMARC record in 2024 and early 2025. What the requirements did not mandate is moving past <code>p=none</code>, which is the minimum that satisfies the check. In my audits, brands that implemented DMARC in response to the Google and Yahoo announcement often stopped at <code>p=none</code> and have not reviewed their aggregate reports since.</p><h3>The Full Breakdown</h3><p>DMARC builds on top of SPF and DKIM. To understand what each policy level does, you need to understand what a DMARC failure actually means. An email fails DMARC when it fails both SPF alignment and DKIM alignment for the domain in the <code>From:</code> header. SPF alignment means the authenticated sending domain matches the domain in the <code>From:</code> header. DKIM alignment means the domain in the DKIM signature matches the domain in the <code>From:</code> header. A single pass on either SPF or DKIM is sufficient for DMARC to pass. DMARC only fails when both fail.</p><p>With <code>p=none</code>, a DMARC-failing email delivers to the inbox without obstruction. The receiving mail server checks DMARC, finds a failure, and then does nothing about it except send an aggregate report to the address specified in your <code>rua</code> tag. Those reports are XML files that tell you which IP addresses are sending mail that claims to be from your domain, how much of that mail is passing or failing authentication, and from which sending sources. <code>p=none</code> is a monitoring tool. It is not a protection mechanism.</p><p><code>p=quarantine</code> changes the outcome for failing mail. Instead of delivering to the inbox, mail that fails DMARC is routed to the spam or junk folder. It still reaches the recipient. It still has the potential to damage your brand and mislead your customers. But the delivery path is degraded, and the probability of someone acting on it drops substantially.</p><p>Quarantine is the right intermediate step because it reduces the blast radius of spoofed mail while you continue to verify that all your legitimate sending sources are properly authenticated.</p><p><code>p=reject</code> is the destination. Failing mail is rejected at the server level. It never reaches any folder, inbox or spam. This is complete protection against domain spoofing for properly authenticated rejection. The risk in jumping to <code>p=reject</code> without preparation is that if any legitimate sending source &#8212; a transactional email provider, a CRM, a third-party tool sending on behalf of your domain &#8212; is not properly authenticated, its mail will be blocked entirely. That is why the path from <code>p=none</code> to <code>p=reject</code> goes through a structured authentication audit rather than a direct flip of the policy tag.</p><h3>Step-by-Step Implementation</h3><ol><li><p><strong>Publish your DMARC record at p=none with aggregate report delivery configured. <br><br>What:</strong> Add a TXT record to your DNS at <code>_dmarc.yourdomain.com</code> with the value <code>v=DMARC1; p=none; rua=mailto:reports@yourdomain.com</code>. The <code>rua</code> tag is where aggregate reports are sent. Use a real inbox that someone monitors. If you do not want to manage raw XML, route reports through a DMARC analysis tool (Postmark's free analyser, Dmarcian, Valimail) that parses them into readable summaries. <br><strong>Why:</strong> Before you can enforce any policy, you need a complete picture of every source sending mail with your domain in the <code>From:</code> header. <code>p=none</code> gives you that data without risk to legitimate mail delivery. <br><strong>Common mistake:</strong> Omitting the <code>rua</code> tag. A DMARC record without a report destination is monitoring with no output. You will never know what the reports would have shown because you have nowhere to receive them.</p></li><li><p><strong>Run on p=none for 30 days and read your aggregate reports. <br><br>What:</strong> Let a full month of sending data accumulate in your aggregate reports. Review the reports to identify every IP address or sending source that is sending mail from your domain. You are looking for three categories: sources you recognise and have authenticated, sources you recognise but have not fully authenticated, and sources you do not recognise at all. <br><strong>Why:</strong> A 30-day window captures the full range of your sending infrastructure, including tools that may send infrequently &#8212; password resets, transactional notifications, quarterly digests. A shorter observation window risks missing a legitimate source and blocking it when you move to enforcement. <br><strong>Common mistake:</strong> Looking at reports once and declaring the source list complete. Aggregate reports are delivered daily or weekly depending on the receiving mail server. Review them at the end of the 30-day window, not the beginning, and consolidate across the full period.</p></li><li><p><strong>Authenticate every legitimate sending source. <br><br>What:</strong> For each source identified in your aggregate reports that you authorise to send mail from your domain, verify that SPF and DKIM are correctly configured. For your ESP (Klaviyo, Mailchimp, Braze, or equivalent), this typically means verifying domain authentication inside the platform settings. For transactional mail (SendGrid, Postmark, Amazon SES), check that your sending domain is authenticated with a valid DKIM key and that your SPF record includes the provider's sending IPs or mechanism. <br><strong>Why:</strong> Moving to <code>p=quarantine</code> or <code>p=reject</code> before authenticating every legitimate source will block or quarantine mail from those sources. The only way to enforce DMARC safely is to ensure that every source you want to pass authentication actually does pass it. <br><strong>Common mistake:</strong> Assuming that because your ESP sends email successfully, it is DMARC-aligned. Successful delivery and DMARC alignment are not the same thing. Check your aggregate reports specifically for DMARC pass/fail status per source, not just delivery status.</p></li><li><p><strong>Move to p=quarantine, initially with pct=10 or pct=25. <br><br>What:</strong> Update your DMARC record to <code>v=DMARC1; p=quarantine; pct=10; rua=mailto:reports@yourdomain.com</code>. The <code>pct</code> tag tells receiving mail servers to apply the quarantine policy to only 10 percent of failing mail. The other 90 percent still delivers as if <code>p=none</code> is in effect. Increase <code>pct</code> gradually: 10 to 25 to 50 to 100 over two to four weeks. <br><strong>Why:</strong> Gradual rollout via the <code>pct</code> tag is a safety mechanism. If there is a legitimate source you missed during the authentication phase, the partial rollout limits the damage from blocking its mail to a fraction of sending volume, giving you time to identify and fix the issue before it affects all delivery. <br><strong>Common mistake:</strong> Jumping directly to <code>pct=100</code> on the first quarantine update. The <code>pct</code> tag exists precisely to allow staged enforcement. Use it. The time cost of a staged rollout is two to four weeks. The cost of blocking a critical transactional mail source is customer-facing delivery failures.</p></li><li><p><strong>Verify quarantine-phase reports, then move to p=reject. <br><br>What:</strong> Monitor aggregate reports through the quarantine phase at each <code>pct</code> increment. Look for any legitimate sources appearing in the failing mail category. Once you reach <code>pct=100</code> quarantine with no legitimate sources failing, update the record to <code>v=DMARC1; p=reject; pct=100; rua=mailto:reports@yourdomain.com</code>. Use the same gradual <code>pct</code> ramp if you want the additional safety net. <br><strong>Why: </strong><code>p=reject</code> at <code>pct=100</code> is full enforcement. Failing mail is blocked at the server. There is no recovery path for a sender that is blocked by reject policy except fixing their authentication. Confirming a clean quarantine phase before stepping to reject gives you confidence that the only mail being blocked is mail you do not authorise. <br><strong>Common mistake:</strong> Treating <code>p=reject</code> as a set-and-forget final state. New sending tools get added to the stack. Subdomains get spun up. Acquisitions add new infrastructure. Review DMARC aggregate reports quarterly to catch new unauthenticated sources before they become a problem.</p></li><li><p><strong>Set up forensic reports (optional but useful for investigating specific failures). <br><br>What:</strong> Add an <code>ruf</code> tag to your DMARC record: <code>ruf=mailto:forensic@yourdomain.com</code>. Forensic reports contain redacted message-level data about individual DMARC failures, including headers that can help identify where failing mail is originating. Not all mail servers send forensic reports (Gmail does not by default), but those that do provide more granular detail than aggregate reports. <br><strong>Why:</strong> When investigating a specific spoofing campaign or a stubborn unidentified source in your aggregate data, forensic reports give you message-level context. Aggregate reports show patterns. Forensic reports show instances. <br><strong>Common mistake:</strong> Routing forensic reports to the same inbox as aggregate reports without a filtering rule. Forensic report volume can be high during active spoofing attempts. Keep them in a separate inbox or folder so they do not bury your aggregate report summaries.</p></li></ol><h3>The Framework</h3><p>Use this decision tree when assessing or building a DMARC implementation. Each branch represents the correct next action given your current state.</p><pre><code>DMARC POLICY DECISION TREE
============================

START: Does a DMARC record exist at _dmarc.yourdomain.com?
|
+-- NO  --&gt; Publish p=none with rua= configured. Start 30-day observation.
|
+-- YES --&gt; What is the current policy?
            |
            +-- p=none
            |     |
            |     +-- Is rua= configured and are reports arriving?
            |           |
            |           +-- NO  --&gt; Add rua= tag immediately. Restart observation.
            |           |
            |           +-- YES --&gt; Have you reviewed 30+ days of aggregate reports?
            |                       |
            |                       +-- NO  --&gt; Wait. Review at 30 days.
            |                       |
            |                       +-- YES --&gt; Are all sending sources authenticated?
            |                                   |
            |                                   +-- NO  --&gt; Authenticate each source.
            |                                   |          Then step to quarantine pct=10.
            |                                   |
            |                                   +-- YES --&gt; Step to p=quarantine pct=10.
            |
            +-- p=quarantine
            |     |
            |     +-- What is pct?
            |           |
            |           +-- Less than 100 --&gt; Ramp pct by 25 every 1-2 weeks.
            |           |                    Monitor reports at each step.
            |           |
            |           +-- 100 --&gt; Are any legitimate sources appearing as failures?
            |                       |
            |                       +-- YES --&gt; Fix authentication. Hold at quarantine.
            |                       |
            |                       +-- NO  --&gt; Step to p=reject pct=100.
            |
            +-- p=reject
                  |
                  +-- Is rua= still configured and monitored quarterly?
                        |
                        +-- NO  --&gt; Add rua= or resume review schedule.
                        |
                        +-- YES --&gt; You are at full enforcement. Maintain.

NOTES:
- Never remove rua= at any policy level. Reports are your visibility.
- New sending tools require re-authentication before first use.
- Subdomains inherit nothing. Each subdomain used for sending needs its own
  SPF, DKIM, and DMARC configuration or an explicit subdomain DMARC record.
- sp= tag controls subdomain policy if not set separately at the subdomain level.
</code></pre><h3>Real Example</h3><p>A B2B SaaS company I worked with in early 2026 had published a DMARC record eighteen months earlier in response to the initial Google and Yahoo announcement. The record was <code>v=DMARC1; p=none;</code> &#8212; no <code>rua</code> tag, no report destination. They had received zero aggregate reports in eighteen months because there was no inbox configured to receive them.</p><p>From the outside, their DMARC implementation looked complete: the record existed, the DNS lookup returned a valid value, and every compliance checker they ran returned green. Their domain had been spoofed for at least three months, which they discovered only when a customer forwarded a phishing email that appeared to come from their support address. A green compliance check is not the same as a working implementation.</p><p>The remediation work took six weeks. First, we added the <code>rua</code> tag and spent two weeks reading the aggregate reports that immediately began arriving. Three legitimate sending sources were not fully DMARC-aligned: their transactional email provider had DKIM configured but SPF alignment was broken because the <code>From:</code> domain was their root domain while the SPF record only covered the subdomain they used for transactional mail. Their marketing automation platform was passing DKIM but their SPF record had not been updated to include the platform's sending infrastructure after they migrated from a previous tool the previous year. And a third-party survey tool was sending from a subdomain with no DMARC record and no authentication at all.</p><p>We fixed authentication for all three sources, confirmed clean aggregate reports across two weeks of observation at <code>p=none</code>, then moved to <code>p=quarantine</code> at <code>pct=10</code> and stepped up to <code>pct=100</code> over three weeks. After another two-week clean observation period, we moved to <code>p=reject</code>. The spoofed phishing mail stopped appearing in their customers' inboxes within days of the <code>p=quarantine</code> step, before they had even reached full enforcement.</p><h3>Audit Checklist</h3><ul><li><p> A DMARC record exists at <code>_dmarc.yourdomain.com</code> &#8212; verify with a DNS lookup tool or <code>dig TXT _dmarc.yourdomain.com</code></p></li><li><p> The record includes an <code>rua=</code> tag pointing to a monitored inbox or DMARC report aggregation service</p></li><li><p> Aggregate reports are actually arriving and being reviewed at least monthly (not just configured and forgotten)</p></li><li><p> Your current policy is not <code>p=none</code> if you have been running aggregate reports for 30 or more days and your sending sources are authenticated</p></li><li><p> Every active sending source (ESP, transactional provider, CRM, third-party tools) has SPF and DKIM configured for DMARC alignment, not just for delivery</p></li><li><p> Any subdomain used for sending has its own DMARC record or inherits a policy via the <code>sp=</code> tag on the root domain record</p></li><li><p> Your SPF record includes all current sending infrastructure and does not include infrastructure from a previous ESP you migrated away from</p></li><li><p> Your DKIM keys are at least 1024-bit (2048-bit recommended) and have been rotated in the last 12 months if your provider supports rotation</p></li><li><p> You have a process to re-authenticate new sending tools before they send their first email, not after the DMARC reports flag them</p></li></ul>]]></content:encoded></item><item><title><![CDATA[SPF Is Not Optional in 2026. Here Is What It Actually Does.]]></title><description><![CDATA[SPF authenticates that your sending server is authorised to send on behalf of your domain. Here is how it works and why it matters for deliverability.]]></description><link>https://tips.remint.email/p/spf-is-not-optional-in-2026-here</link><guid isPermaLink="false">https://tips.remint.email/p/spf-is-not-optional-in-2026-here</guid><pubDate>Mon, 01 Jun 2026 12:29:18 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/0e9fbe34-0427-4840-8b20-1da37ce3e55a_2400x1260.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>SPF Is Not Optional in 2026. Here Is What It Actually Does.</h2><p>Every day, emails are rejected by Gmail and Yahoo because the sending domain has no SPF record, or has one that does not include the ESP they are actually sending through. This is not a technical edge case. It is one of the most common, most fixable deliverability problems I encounter in audits, and it is entirely preventable once you understand what SPF actually does.</p><h3>What Is Actually Happening</h3><p>SPF stands for Sender Policy Framework. It is a DNS record that tells receiving mail servers which IP addresses are authorised to send email on behalf of your domain.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://tips.remint.email/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en-gb&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Remint is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>When your ESP, Klaviyo, Mailchimp, or any other platform sends an email with your domain in the From address, the receiving server looks up your domain's DNS records and checks whether the IP address that just sent the email is on your authorised list. If the IP is there, SPF passes. If it is not, SPF fails.</p><p>Without an SPF record, there is no authorised list at all. The receiving server has no way to verify that the email claiming to be from your domain was actually sent by you or anyone you authorised. That is not a minor gap. It is a verification failure at the most fundamental level of email authentication.</p><p>SPF was designed to address a specific problem: anyone can send an email claiming to be from any domain. Nothing in the basic email protocol prevents that. SPF exists so receiving servers can check whether the server that delivered the message was actually authorised to claim that domain.</p><p>Google and Yahoo's 2025 bulk sender requirements made SPF mandatory for high-volume senders. Missing it is a non-compliance issue that can result in email being rejected outright, not just filtered to spam.</p><p>The most common SPF failure I see in audits is not a missing record entirely. It is a record that exists but does not include the ESP being used. A brand set up SPF three years ago when they were sending through one platform, then migrated to a different platform, and never updated the DNS record. The new ESP's IP addresses are not in the authorised list. SPF fails. Email lands in spam, or gets blocked, and no one understands why because the record technically exists.</p><p>SPF has one technical limitation worth knowing. It verifies the sending server's IP address, not the message itself. When a subscriber forwards your email, the forwarder's server re-sends from a different IP, which is not in your SPF record. The forwarded message fails SPF.</p><p>DKIM exists alongside SPF precisely because of this: DKIM signs the message and survives forwarding. Both are required for DMARC alignment. SPF is the foundation, and without it, the rest of the authentication stack is weaker.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:null,&quot;text&quot;:null,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h3>The One Fix</h3><p>Verify your SPF record and confirm it includes every sending source you are currently using.</p><p>Open your DNS management tool, find the TXT record for your domain that starts with <code>v=spf1</code>, and read through the authorised includes. Cross-reference that list against every platform that sends email on your behalf: your primary ESP, any transactional email service you use for order confirmations, any third-party tools that send notifications or automated emails from your domain.</p><p>If any sending source is missing from the SPF record, add its include. Every major ESP publishes its authentication setup instructions in its documentation. For Klaviyo, SPF is handled through the branded sending domain CNAME configuration; check your Klaviyo account's domain authentication settings for the exact DNS records required. For Mailchimp, the include is <code>include:servers.mcsv.net</code>. Add the appropriate include, save the record, and allow up to 48 hours for DNS propagation.</p><p>If you do not have an SPF record at all, create one. The format is a DNS TXT record at your root domain. A basic SPF record for a single ESP looks like <code>v=spf1 include:klaviyo.com ~all</code>. The <code>~all</code> at the end is a soft fail for IPs not in your list. The direction in current email security practice is toward <code>-all</code> (hard fail) once you are confident the record is complete and you have moved your DMARC policy off <code>p=none</code>.</p><p>Use an SPF validation tool &#8212; MXToolbox is the most common option &#8212; to confirm the record syntax is correct after making changes. Invalid SPF syntax does not fail gracefully. A malformed record can break SPF entirely, which is worse than having no record at all. Get this right before moving on.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:null,&quot;text&quot;:null,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h3>When SPF Is Configured Correctly</h3><p>When SPF is correctly configured, receiving servers can verify that your emails are coming from authorised sources before they decide where to deliver them. You have one component of the authentication foundation in place. Combined with DKIM and a DMARC policy, SPF forms the technical proof that an email claiming to come from your domain was actually sent by you or a service you authorised.</p><p>The practical outcome is that your emails are not rejected at the server level for a fixable authentication failure. That baseline matters more than any subject line test.</p><p>You cannot A/B test subject lines to fix a problem that exists before the email is delivered. Authentication issues surface upstream of everything else. In my audits, SPF is the most common gap, and it is usually the right first place to start.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://tips.remint.email/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en-gb&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Remint is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[HTML Does Not Hurt Deliverability. Your Sender Reputation Does.]]></title><description><![CDATA[The claim that HTML emails hurt deliverability is a distortion of a real but narrow problem. Here is what actually affects inbox placement.]]></description><link>https://tips.remint.email/p/html-does-not-hurt-deliverability</link><guid isPermaLink="false">https://tips.remint.email/p/html-does-not-hurt-deliverability</guid><pubDate>Thu, 28 May 2026 21:18:30 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/2899fbab-6772-4e3c-99fd-0927b3ab829b_2400x1260.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>HTML Does Not Hurt Deliverability. Your Sender Reputation Does.</h2><p>I have seen brands switch to plain text emails because they read that HTML hurts deliverability. Their inbox rates did not improve. Their brand experience dropped. The myth cost them something real, and it was built on a misreading of what mailbox providers actually measure.</p><h3>What Is Actually Happening</h3><p>The claim that HTML hurts deliverability has been circulating since the early days of spam filtering and it has not become more accurate with age. In 2026, it is still repeated as deliverability advice in forums, blog posts, and cold outreach playbooks. It is a partial truth, distorted so far from its origin that it functions as misinformation.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://tips.remint.email/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en-gb&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Remint is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Here is where the idea came from. In the early 2000s, when spam was primarily a volume problem and content-based filtering was the dominant approach, tools like SpamAssassin assigned scores to email content. Certain HTML patterns, particularly image-only emails with no text content, were correlated with spam. Spammers at the time frequently used single-image HTML emails to bypass keyword-based text filters. Image-only format became a spam signal.</p><p>The correlation was real. The causation was wrong. The format did not cause the spam problem. The format happened to be used by people who were running spam campaigns. An authenticated sender with a healthy list sending a well-coded HTML email to subscribers who wanted it was not, and is not, penalised for the format.</p><p>Modern mailbox providers at Google and Yahoo evaluate sender reputation and engagement as the primary inbox placement signals, per Google's Sender Guidelines 2025 and Yahoo's Sender Requirements 2025. Authentication matters: SPF, DKIM, and DMARC are non-negotiable in 2026. Engagement matters: if a significant portion of your list is not opening, clicking, or is actively marking your mail as spam, your reputation suffers. List hygiene matters. Domain and IP reputation matter.</p><p>HTML as a format is not in that list. The markup is not what Gmail's algorithms are measuring when they decide where your email lands. In every deliverability analysis I have run, format type has not been the variable that explains inbox placement differences. The variables that matter are on the sender side, not the template side.</p><p>Where HTML can cause a deliverability problem is through broken implementation. Excessively large HTML files can trigger issues in some environments. Poor code that produces enormous message sizes, or certain deprecated HTML patterns, can occasionally flag. But that is a code quality problem, not an HTML problem. A well-built HTML email from an authenticated sender with good engagement lands in the inbox.</p><p>I have tested this directly: the same sender, the same list, the same authentication setup, with a plain text send and an HTML send within the same week. Inbox placement rates are comparable. The format does not move the needle when the sender is healthy.</p><p>When the sender is unhealthy, switching to plain text does not fix the underlying problem. It just gives you a worse-looking email with the same deliverability issues.</p><h3>The One Fix</h3><p>If you are worried about deliverability, audit the actual deliverability variables. Do not audit your template format.</p><p>Start with authentication. Is your SPF record set? Is DKIM configured and aligned? Do you have a DMARC record published? These three are the foundation. Google and Yahoo's 2025 bulk sender requirements made them non-optional. If any of them are missing or misconfigured, that is your deliverability problem. A plain text email from an unauthenticated domain will land in spam faster than an HTML email from an authenticated one.</p><p>Then look at list health. What percentage of your list has not engaged in the last 60 to 90 days? What is your spam complaint rate? These are the engagement signals that mailbox providers use to build your sender reputation. A disengaged list sending to unengaged subscribers is a reputation problem. It does not matter whether the emails are HTML or plain text.</p><p>If both authentication and list health are clean, check your HTML code quality as a secondary step. Use render testing tools like Litmus, Email on Acid, or Testi@ to validate your email renders correctly across clients. A well-coded HTML email should have no deliverability issues originating from its format.</p><h3>What Good Looks Like</h3><p>When deliverability is working, it is not because of format choices. It is because the sender has clean authentication, a healthy engaged list, and a consistent sending pattern that builds domain reputation over time. HTML emails from that sender land in the inbox alongside plain text emails from the same sender, at comparable rates.</p><p>Treating format as the deliverability variable is a distraction from the variables that actually matter. Every week spent worrying about HTML is a week not spent on list hygiene, engagement re-activation, or authentication auditing. Those are the levers that move inbox placement.</p><p>The HTML fear also has a real cost. Plain text email loses the branded experience, the product imagery, the design language you have built. It trades a capability you actually have for an advantage that the evidence does not support.</p><p>That is a bad trade, and it is made repeatedly by brands that absorbed a myth without tracing it back to its source.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://tips.remint.email/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en-gb&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Remint is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The Best Send Time Advice Is From 2009. Here Is Why It Has Not Aged Well.]]></title><description><![CDATA[The best send time changes by list, audience, and ESP. Here is why Tuesday 10am is a myth and how to find the right time for your subscribers.]]></description><link>https://tips.remint.email/p/the-best-send-time-advice-is-from</link><guid isPermaLink="false">https://tips.remint.email/p/the-best-send-time-advice-is-from</guid><pubDate>Wed, 27 May 2026 21:12:11 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/ca2959bc-b8e8-4188-a86a-b225daf8a254_2400x1260.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>The Best Send Time Advice Is From 2009. Here Is Why It Has Not Aged Well.</h2><p>Tuesday at 10am has been the most confidently repeated email advice for fifteen years. It was wrong when it started, and it is provably wrong now. The fact that it persists says more about how email advice circulates than it does about when your subscribers open their email.</p><h3>What Is Actually Happening</h3><p>The Tuesday morning rule originated in benchmark reports published by early email platforms in the late 2000s and early 2010s. MailChimp and HubSpot both published aggregate send-time data showing that Tuesday morning had higher open rates across their customer bases. That finding got picked up, repeated, and eventually ossified into conventional wisdom.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://tips.remint.email/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en-gb&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Remint is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>There are two major problems with it, and both have gotten worse over time.</p><p>The first is the data source. Those recommendations were derived from aggregate open rate data. Open rates in 2026 are not a reliable signal of actual engagement. Apple Mail Privacy Protection, introduced in 2021, fires an open pixel for every subscriber using Apple Mail regardless of whether they actually read the email. By the time Litmus State of Email 2025 data was published, Apple Mail held a substantial share of the email client market.</p><p>Any open-rate-based recommendation built on data from 2025 or earlier carries some portion of this inflation. Any recommendation built on data from before 2021 predates the problem entirely and carries no adjustment for it.</p><p>The second problem is the aggregation itself. An average across all verticals and all list compositions is not advice for your specific programme. Klaviyo's 2025 benchmark data shows meaningful variation in engagement patterns across different industry verticals. A DTC brand selling premium skincare to a primarily working-parent female audience has a fundamentally different subscriber behaviour pattern than a B2B software newsletter targeting technical decision-makers. Both have subscribers. Neither behaves like an aggregate benchmark.</p><p>From my work with DTC brands, I find that send-time performance varies not just by industry but by list segment, by device type, and by where in the customer lifecycle the subscriber sits. A lapsed buyer segment responds at different times than an active engaged segment. A mobile-heavy audience has a different schedule than a desktop-heavy one. These are your variables. A 2009 industry average is not.</p><p>And the competitive factor makes the Tuesday rule particularly counterproductive. If everyone follows the same advice, Tuesday 10am becomes the most congested inbox moment of the week. You are competing for attention in the same window as every other brand that read the same article. That is not a strategy advantage. It is a traffic jam.</p><h3>The One Fix</h3><p>Stop guessing and start testing against your own list data, using a reliable metric.</p><p>The reliable metric is click rate, not open rate. Open rates are MPP-inflated and unreliable as a testing signal. Click rate reflects an action a subscriber actually took. It is not immune to noise, but it is substantially closer to actual engagement than a pixel that fires automatically for Apple Mail users.</p><p>Run a send-time test with a meaningful sample size. Split your next three or four campaigns across two different send times in the same week. Send half your list on Tuesday morning, half on Thursday afternoon. Measure clicks and conversions over 48 hours. Do it again the following week with different times. After four to six rounds you have real data on your list's behaviour, not an industry average from fifteen years ago.</p><p>Many ESPs have send-time optimisation tools that do this automatically at the individual subscriber level. Klaviyo's Smart Send Time feature, for example, analyses each subscriber's historical engagement pattern and suggests a send window based on when that specific person has previously engaged. That is a meaningfully better basis for send scheduling than any aggregate benchmark, including the ones published in 2025.</p><p>Use the tool if it is available to you. If it is not, run the manual test.</p><h3>What Good Looks Like</h3><p>When send time is based on actual list behaviour, campaigns stop competing in the same inbox window as every other brand that follows the same generic advice. Your subscribers get your email when they are more likely to be in a reading context. Click rates improve because the timing is calibrated to their behaviour, not to an industry norm.</p><p>The more important outcome is that you stop treating a single piece of 2009 wisdom as a permanent fixture. Send time is a variable. Like any variable, it should be tested, measured, and updated when your list composition changes.</p><p>A brand that acquired a significant segment of subscribers from a new channel has probably changed its audience behaviour pattern enough to warrant retesting. That is the right posture: periodic testing as the list evolves, not one inherited rule applied indefinitely.</p><p>Tuesday at 10am is not wrong for everyone. It may happen to be the right time for your specific list. But you should know that because you tested it, not because someone wrote it in a benchmark report before most of your current subscribers were on your list.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://tips.remint.email/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en-gb&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Remint is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Abandoned Cart and Abandoned Checkout Are Different Flows. Many Brands Run One for Both.]]></title><description><![CDATA[Abandoned cart and abandoned checkout are triggered differently and convert differently. Most brands run one flow for both and leave revenue on the table.]]></description><link>https://tips.remint.email/p/abandoned-cart-and-abandoned-checkout</link><guid isPermaLink="false">https://tips.remint.email/p/abandoned-cart-and-abandoned-checkout</guid><pubDate>Tue, 26 May 2026 13:56:52 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/baf66bed-49bd-401b-8698-d1d005ab834e_2400x1260.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>Abandoned Cart and Abandoned Checkout Are Different Flows. Many Brands Run One for Both.</h2><p>A subscriber who added something to a cart and left is not the same person as a subscriber who reached the payment page, entered their email address, and left. Running one recovery email to both groups is treating two very different buying signals as if they are the same problem. They are not.</p><h3>What Is Actually Happening</h3><p>In almost every ESP, you can trigger flows from two separate events: a cart add that does not progress to checkout, and a checkout initiation that does not result in a completed purchase. These are technically distinct events, and they represent distinct buyer psychology. The ESP knows the difference. Your copy should too.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://tips.remint.email/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en-gb&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Remint is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Abandoned cart, the first event, fires when someone adds a product to their cart but never moves further. They may be browsing, comparing options, saving items for later, or simply not ready. You may or may not have their email address depending on whether they are already a subscriber. The intent signal is real but shallow.</p><p>Abandoned checkout, the second event, is a different category entirely. The subscriber navigated to the checkout page and provided their contact details. They were close enough to purchase that they started the process. Their intent is demonstrably higher.</p><p>The email can reflect that. It does not need to re-introduce the product or rebuild the case for buying. The subscriber was already at the payment screen.</p><p>In my audits, many brands have one flow handling both. The trigger is either set to cart abandonment only, missing the checkout event entirely, or it is built on checkout abandonment but described internally as the "cart recovery" flow. In both cases, the higher-intent group receives messaging calibrated to the wrong point in the purchase process.</p><p>Klaviyo's 2025 benchmark data shows that abandoned checkout emails consistently outperform abandoned cart emails on revenue-per-recipient. The reason is the intent gap. Someone who made it to checkout was materially closer to buying. A direct email that acknowledges they were at checkout, makes completing the purchase simple, and does not waste their time re-persuading them on the product performs better than a generic "you left something behind" message built for a lower-intent audience.</p><p>The missed opportunity is not just in open or click rates. It is in the messaging architecture.</p><p>When one flow handles both groups, the copy is written at the lowest common denominator. It is cautious, product-focused, and soft on the CTA because it needs to work for someone who barely engaged as much as someone who was at the payment screen. That calibration hurts the higher-intent group more than it helps the lower-intent one.</p><h3>The One Fix</h3><p>Separate the two flows at the trigger level and write distinct copy for each. This is a one-time structural fix.</p><p>The abandoned cart flow can afford to be educational and trust-building. It is working with a lower-intent audience. Show the product, address common concerns, offer social proof. Give the subscriber what they need to decide.</p><p>The abandoned checkout flow should be direct. The subscriber knows the product. They were at the payment screen. Your first email can acknowledge that plainly: they left before completing their order, here is a link back to their checkout, here is what happens after they buy. No need to re-pitch the product.</p><p>The objective is friction removal, not persuasion.</p><p>If you are currently running a single flow for both groups, start by splitting the trigger. In Klaviyo, this means having an "Active on Site" flow with a checkout started metric and a separate flow on "Added to Cart" that excludes people who have already triggered checkout. The copy can evolve over time. Getting the separation in place is the structural fix that makes the right messaging possible.</p><p>The timing also differs. In my experience, abandoned checkout emails perform better with a shorter first-send window. Someone who was at payment and left is still mentally in purchase mode for a shorter period than someone who added an item to a cart.</p><p>Waiting 24 hours to send the first email in a checkout abandonment flow misses the peak recovery window. Many brands I work with have sent it within an hour and seen materially better conversion than the same message sent the next day.</p><h3>What Good Looks Like</h3><p>When the two flows are separated and the messaging is calibrated to intent level, the abandoned checkout flow typically becomes one of the highest revenue-per-recipient automations in the programme. Not because the audience is larger, but because the intent is higher and the copy is finally doing the right job.</p><p>The abandoned cart flow, now freed from needing to work for a high-intent audience, can be more patient and educational. It can take three emails over three days rather than trying to close urgently in the first send. Conversion rates on both flows improve when neither is written for the wrong audience.</p><p>From experience, the single most consistent finding in DTC email audits is that brands are conflating these two flows. The fix is a one-time structural change in the ESP. In the accounts I have rebuilt, the revenue impact shows up in the first 30 days of the abandoned checkout flow running properly.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://tips.remint.email/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en-gb&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Remint is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The Flow Brands Build Last Should Be the First One They Fix]]></title><description><![CDATA[The Flow Brands Build Last Should Be the First One They Fix]]></description><link>https://tips.remint.email/p/the-flow-brands-build-last-should</link><guid isPermaLink="false">https://tips.remint.email/p/the-flow-brands-build-last-should</guid><pubDate>Mon, 25 May 2026 13:07:09 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/d16e1245-1ce8-4fa5-a341-d26909428a7c_2400x1260.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>The Flow Brands Build Last Should Be the First One They Fix</h2><p>Brands spend weeks refining their abandoned cart sequence and leave their welcome series as a single email with a discount code. That is the most expensive sequencing mistake in email. The flow that performs best is the one getting the least attention.</p><h3>What Is Actually Happening</h3><p>The welcome series is the highest revenue-per-recipient flow across many DTC brands. Omnisend's 2025 email marketing data confirms this pattern consistently. The reason is not complicated: a subscriber is at peak intent the moment they join your list. Open rates in the welcome window are among the highest of any automated sequence. Engagement is higher. Purchase likelihood is higher. The relationship is brand new and the subscriber actively chose to hear from you.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://tips.remint.email/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en-gb&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Remint is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>That window closes. It does not stay open indefinitely while you decide what to do with it. By the time a subscriber has been on your list for three weeks and received nothing but a discount code on day one, the relationship has already settled into something much lower-engagement. You cannot restart that first week. The opportunity exists once per subscriber.</p><p>In my audits, I consistently find that brands have invested significant time in their abandoned checkout flow. Two or three emails, timed carefully, with personalised product content. They have a post-purchase sequence. They may even have a win-back flow for lapsed buyers.</p><p>And then their welcome series is one email that delivers a promo code and says something like "welcome to the family."</p><p>The logic that creates this pattern is understandable. Abandoned cart has clear, attributable revenue. You can see it in your ESP's flow analytics: this sequence recovered X in the last 30 days. Welcome series revenue is harder to isolate because it runs through the same first-purchase attribution as organic discovery. The money is there. It just does not always appear where people expect it to be.</p><p>The other factor is effort. A good welcome series takes real work. You need to think about what a new subscriber actually needs to know, in what order, over what timeframe. That is a more complex build than a two-email cart recovery sequence. So it stays in the backlog.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:null,&quot;text&quot;:null,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h3>The One Fix</h3><p>Before you touch your abandoned checkout timing, your post-purchase upsell sequence, or your win-back threshold, audit your welcome series against one question: does it do more than deliver a discount?</p><p>A welcome series that performs well at minimum covers four things across four to six emails sent over ten to fourteen days:</p><ul><li><p><strong>Email 1, immediate:</strong> deliver the promised incentive without making the subscriber hunt for it. Introduce the brand in one short paragraph.</p></li><li><p><strong>Email 2, day one to two:</strong> brand story. What makes the product, the process, or the people different. This is where trust starts to form.</p></li><li><p><strong>Email 3, day three to four:</strong> social proof. Bestsellers, reviews, anxiety reducers for new buyers.</p></li><li><p><strong>Emails 4 through 6, every two to three days:</strong> product education, FAQ handling, and an offer close with clear expiry.</p></li></ul><p>If your current welcome series is one email, the fix is not a complete rebuild. It is adding email two this week. That alone closes more of the welcome window than any other single action you can take in your flow architecture.</p><p>Then add email three. The welcome series compounds as you extend it, because each email you add catches the subscribers who were ready to buy on day three or day seven but had nothing from you at that moment. Every gap in your sequence is a subscriber who made a decision without you.</p><p>The Klaviyo 2025 benchmark data shows that welcome series with four or more emails consistently outperform single-email welcomes across revenue-per-recipient. In my experience, the difference is not small. A single email is leaving a compounding revenue opportunity on the table for every new subscriber who joins.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:null,&quot;text&quot;:null,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h3>What Good Looks Like</h3><p>When the welcome series is working properly, the programme stops relying on campaigns to convert new subscribers. First purchases happen inside the welcome window, before the subscriber has had time to disengage.</p><p>The abandoned cart flow, the post-purchase sequence, and every subsequent flow all perform better because the subscriber was properly introduced to the brand before they encountered them.</p><p>A well-built welcome series also reduces the pressure on promotional campaigns. When new subscribers are already converting in the first two weeks, you are not dependent on a sale email to recover them three months later. The relationship starts at a higher trust level and stays there.</p><p>From my experience, when a brand invests properly in the welcome series for the first time, it is often the highest single-flow revenue contributor in the first quarter after launch. Not abandoned checkout. Not post-purchase. Welcome. Because it is the one moment every subscriber passes through, and it is the moment where intent is at its peak.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://tips.remint.email/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en-gb&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Remint is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The Welcome Series Framework That Consistently Performs: Six Emails, Fourteen Days]]></title><description><![CDATA[Welcome series generates higher open rates and revenue-per-recipient than any other flow. Here is the six-email framework that consistently performs.]]></description><link>https://tips.remint.email/p/the-welcome-series-framework-that</link><guid isPermaLink="false">https://tips.remint.email/p/the-welcome-series-framework-that</guid><pubDate>Fri, 22 May 2026 12:39:18 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/1d94fcd8-6993-4ebc-ac88-0f218064e3ff_2400x1260.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>The Welcome Series Framework That Consistently Performs: Six Emails, Fourteen Days</h2><p>Here is the tension at the heart of welcome series strategy: the moment a subscriber signs up is the single highest-intent moment they will ever have with your brand, and that is exactly when many brands send one email and go quiet. A discount code delivery. A receipt. Then silence until the next campaign blast.</p><p>The welcome window closes fast. Omnisend and Klaviyo benchmark data consistently show welcome series open rates running 2 to 3 times higher than standard campaigns. Engagement levels drop sharply after the first week. Purchase likelihood peaks early and then fades.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://tips.remint.email/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en-gb&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Remint is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>You get one shot at this window and the question is not just how many emails to send. It is how to structure them across the full window so that intent converts rather than evaporates.</p><p>This article gives you the complete framework. Six emails, fourteen days, with the specific job each email does, the timing rationale behind each gap, and the common mistakes that collapse the sequence before it earns its keep.</p><h3>Why This Matters</h3><p>According to the Omnisend Email Marketing Statistics Report 2025, welcome series emails generate substantially higher open and conversion rates than standard broadcast campaigns. The data consistently shows that welcome emails sent immediately upon signup outperform those sent even a few hours later. The window is not metaphorical. There is a real and measurable degradation in engagement as time passes from the signup moment. Most brands are late.</p><p>The Klaviyo Benchmark Report 2025 reinforces this from the revenue side. Welcome flows rank among the highest revenue-per-recipient automations across the DTC brands tracked in the data.</p><p>In my audits of brand email programs, I find that welcome series performance is often the single biggest lever a brand can pull before touching any other flow. Abandoned cart gets rebuilt first at many brands. The welcome series stays as a one-email stub. That is the wrong order. Fix the highest-intent window first, then optimise the recovery flows.</p><h3>The Full Breakdown</h3><p>The core mistake I see in welcome series builds is conflating email count with coverage. A brand sends six emails in four days and believes they have built a thorough welcome sequence. They have not. They have hammered a subscriber who just raised their hand and created pressure where there should be relationship. The variable that matters most is not count. It is spacing.</p><p>The fourteen-day window is not arbitrary. The first 48 hours capture the peak-intent subscriber who signed up because something triggered them: a recommendation, a social post, a paid ad they clicked, a piece of content that landed. Emails in this window should be operational and brand-establishing.</p><p>After that window, the subscriber has returned to their normal behaviour and is reading emails in a different state of mind. The middle of the sequence, days three through seven, is where you build the case at a lower intensity. Education, proof, differentiation.</p><p>The final phase, days eight through fourteen, is where you make and close the offer with a subscriber who has already been through the relationship-building phase.</p><p>A four-email series is the minimum that does this work properly. One email is a receipt. Two emails can deliver the incentive and introduce the brand but have no room for the trust-building that drives second purchase. Four emails get you through incentive delivery, brand story, social proof, and one offer close.</p><p>Six emails let you add product education and an FAQ-handling email, which is where a lot of the conversion lift comes from in higher-complexity or higher-pricepoint products.</p><p>The spacing between emails matters as much as the emails themselves. When I rebuild welcome series for brands, the most common problem is not missing content. It is emails stacked too tightly in the first 72 hours and then a gap from day four to day twelve while the subscriber forgets who the brand is. The framework below is structured to avoid both failure modes: the pressure that comes from overcrowding, and the drop-off that comes from underpacing.</p><h3>Step-by-Step Implementation</h3><ol><li><p><strong>Email 1: Immediate send. Deliver the incentive, introduce the brand.What:</strong> This email fires the moment the subscriber confirms their opt-in. It delivers exactly what was promised: the discount code, the freebie download, the exclusive access, or the content piece. Beyond the incentive delivery, it introduces the brand clearly. One to two sentences on what the brand is and what the subscriber can expect from the series. No hard sell here.<strong>Why:</strong> The immediate trigger is the most important timing decision in the entire sequence. According to Omnisend 2025 data, immediate welcome emails see significantly higher open rates than those delayed even a short time after signup. The subscriber is in the browser tab. Their inbox is open. Send now.<strong>Common mistake:</strong> Burying the incentive code halfway down a long welcome email full of brand narrative. Deliver the code in the first viewport. Everything else is secondary to the promise you made when they signed up.</p></li><li><p><strong>Email 2: Day 1 to 2. The brand story.What:</strong> This email focuses entirely on differentiation. Not what you sell. Why you exist and what makes the brand different from everything else in the category. Founder story if it is relevant and compelling. Sourcing story if it is a differentiator. Mission if it is authentic and specific rather than generic.<strong>Why:</strong> The subscriber knows what you sell. They signed up. What they do not know yet is why they should buy from you rather than a competitor. This email answers that question while their interest is still high and the brand memory from Email 1 is fresh.<strong>Common mistake:</strong> Writing a brand story email that is really a product catalogue with a paragraph of copy at the top. The story email should not have more than one product mention, and that mention should serve the narrative rather than lead it.</p></li><li><p><strong>Email 3: Day 3 to 4. Social proof and bestsellers.What:</strong> Curated reviews, ratings, user-generated content, and the two or three products that convert best for new customers. This email should reduce the anxiety a first-time buyer has about whether the product will actually deliver. Real quotes, real numbers, specific outcomes rather than adjectives.<strong>Why:</strong> By day three, the subscriber has seen the brand and heard the story. Social proof is the evidence that backs the claims. It converts the interested subscriber into someone with enough confidence to consider buying. Bestsellers narrow the decision: instead of browsing a full catalogue, the subscriber is looking at the three things that work best for people like them.<strong>Common mistake:</strong> Using generic review excerpts. "Great product, love it" does not reduce purchase anxiety. Find reviews that mention the specific problem the product solves or the specific outcome it delivers. Those are the ones that do the work.</p></li><li><p><strong>Emails 4 and 5: Days 6 to 8. Education and FAQ handling.What:</strong> Two emails spaced two to three days apart that teach the subscriber something genuinely useful about the category, the product, or the problem the brand exists to solve. One of these emails should address the most common objections and questions you hear before a first purchase. Answer them directly and without defensiveness.<strong>Why:</strong> By this point the subscriber has the incentive, the brand story, and the proof. What is still stopping many of them from converting is residual uncertainty. They do not know how the product works in practice, or they have a question they have not found answered, or they are not sure the product applies to their situation. Education emails answer these without requiring the subscriber to go looking.<strong>Common mistake:</strong> Making the education email a thinly veiled sales email. If the educational content is genuine and useful, the conversion happens as a byproduct. If it reads like a sales pitch formatted as a how-to guide, it reads like a sales pitch.</p></li><li><p><strong>Email 6: Day 11 to 14. Offer close.What:</strong> This is the dedicated conversion email. If the subscriber has not purchased by now, this email creates urgency around the original incentive or introduces a new, time-limited reason to act. Direct copy, clear CTA, specific expiry on the offer. One job only.<strong>Why:</strong> After five emails of value delivery, the direct ask has earned its place. The subscriber knows the brand, has seen the proof, understands the product. The offer close is not a cold pitch. It is a reminder and a final nudge from a brand they have now had a relationship with for two weeks.<strong>Common mistake:</strong> Making the offer close email apologetic. Phrases like "just a quick reminder" or "in case you missed our discount" undercut the urgency. State the offer clearly, state the expiry clearly, and let it stand on its own.</p></li></ol><h3>The Framework</h3><p>Use this structure as a decision template when building or auditing any DTC welcome series. Each email maps to a specific subscriber state and a specific job.</p><pre><code>WELCOME SERIES FRAMEWORK
========================

Email 1 | Immediate | Incentive delivery + brand intro
------------------------------------------------------------
Subscriber state: peak intent, just opted in
Job: deliver the promise, introduce the brand clearly
Content: incentive (code / download / access), 1-2 sentences on what the brand is
Length: short. Under 200 words of body copy.
CTA: one. Use the incentive.

Email 2 | Day 1-2 | Brand story
------------------------------------------------------------
Subscriber state: interested, memory of Email 1 fresh
Job: answer "why this brand over others"
Content: founder story, sourcing story, or mission (pick the most authentic one)
Length: medium. 250-350 words.
CTA: one. Secondary product or about page.

Email 3 | Day 3-4 | Social proof + bestsellers
------------------------------------------------------------
Subscriber state: considering, not yet decided
Job: reduce purchase anxiety, narrow product choice
Content: 3-5 specific reviews + top 2-3 products for new customers
Length: medium. Let the reviews lead.
CTA: one per featured product or one to bestsellers page.

Email 4 | Day 6-7 | Education
------------------------------------------------------------
Subscriber state: familiar, still non-converting
Job: teach something genuinely useful, build category authority
Content: how-to, use-case guide, or comparison relevant to the product
Length: medium-long. 300-400 words.
CTA: relevant product or resource.

Email 5 | Day 8-9 | FAQ and objection handling
------------------------------------------------------------
Subscriber state: uncertain, specific friction point blocking conversion
Job: surface and answer the 3 most common pre-purchase questions
Content: Q+A format. Direct answers. No hedging.
Length: short-medium. Questions lead, answers are brief and confident.
CTA: one to the product or a quiz / recommendation tool.

Email 6 | Day 11-14 | Offer close
------------------------------------------------------------
Subscriber state: brand-aware but unconverted
Job: create urgency, drive the first purchase
Content: offer reminder or time-limited incentive, specific expiry, clear CTA
Length: short. Under 150 words of body copy.
CTA: one. The offer.

SPACING RULE: Never stack two emails less than 24 hours apart after Email 1.
SEQUENCE EXIT: Tag and suppress anyone who purchases at any point. The series
is for non-converters. Buyers enter the post-purchase flow immediately.
</code></pre><h3>Real Example</h3><p>A DTC skincare brand I worked with in early 2026 had a three-email welcome series running on a five-day cadence. Email 1 delivered the discount code. Email 2 was a product catalogue sent two days later. Email 3 was a "your code expires soon" reminder on day five. Their conversion rate from the welcome series was below what the Klaviyo Benchmark Report 2025 shows as average for the skincare category.</p><p>The audit identified two problems. First, the brand story email was missing entirely. The subscriber went from incentive delivery to product catalogue with no context about what made this brand different. In a category with dozens of direct competitors, that absence was costly.</p><p>Second, the five-day total window left a twelve-day gap with no contact before the next campaign send landed. Subscribers who did not convert in the welcome window were receiving brand communications again after nearly two weeks of silence, and by then the connection had faded.</p><p>We rebuilt the series to six emails over fourteen days following the framework above. Email 2 was rewritten as a pure brand story with no product push. Email 3 introduced the top three products for first-time buyers with real review excerpts that named specific outcomes. Emails 4 and 5 covered the two most common questions the support team received from pre-purchase customers. Email 6 was a clean offer close with a five-day expiry. One job. One CTA.</p><p>Within sixty days, the conversion rate from the welcome series increased by roughly a third compared to the previous three months. The biggest single driver was closing the gap between day five and day fourteen. Subscribers who would previously have fallen into silence were still receiving relevant contact from the brand and converting at a meaningful rate across the Email 4 to Email 6 window.</p><h3>Audit Checklist</h3><ul><li><p> Email 1 fires within five minutes of signup confirmation, not on a batched schedule</p></li><li><p> The incentive or promised content is in the first viewport of Email 1, not buried below the fold</p></li><li><p> There is a dedicated brand story email (not a product catalogue with an intro paragraph)</p></li><li><p> At least one email in the series features specific, outcome-oriented reviews rather than generic positive sentiment</p></li><li><p> No two emails are sent less than 24 hours apart (except Email 1, which is immediate)</p></li><li><p> The series runs at least ten days, with coverage extending to day twelve or fourteen for the offer close</p></li><li><p> Subscribers who purchase at any point in the series are tagged and moved out of the welcome flow into post-purchase</p></li><li><p> The final email has a single CTA and a specific offer expiry rather than an open-ended "shop now" prompt</p></li><li><p> The series has been reviewed against current Klaviyo Benchmark data for your product category to sanity-check open and conversion rates</p></li><li><p> Every email in the series has one primary job. If you can name two equal jobs, split the email or cut the weaker one</p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://tips.remint.email/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en-gb&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Remint is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Your Email Program Is Probably Missing Three of Its Four Parts]]></title><description><![CDATA[Many brands only run campaigns. The full email program has four layers: campaigns, flows, transactional, and lifecycle. Here is what each one does.]]></description><link>https://tips.remint.email/p/your-email-program-is-probably-missing</link><guid isPermaLink="false">https://tips.remint.email/p/your-email-program-is-probably-missing</guid><pubDate>Thu, 21 May 2026 11:38:48 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/9026c6b3-331c-49b9-bdaa-34d6d02c3cf1_2400x1260.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>Your Email Program Is Probably Missing Three of Its Four Parts</h2><p>Many brands think they have an email program. What they actually have is a newsletter they send on Tuesdays and a discount code they fire when someone abandons a cart.</p><p><strong>That is not an email program</strong>. <strong>That is one tool, used occasionally, in a system designed to have four.</strong></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://tips.remint.email/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en-gb&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Remint is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h3>What Is Actually Happening</h3><p>Email marketing in 2026 is four distinct types of communication, each with a different trigger, a different audience relationship, and a different revenue role. Run all four and you have a system. Run one and you have a broadcast channel dressed up as a strategy.</p><p>The four types:</p><ul><li><p><strong>Campaigns:</strong> manually sent broadcasts to a segment. Promotions, newsletters, product launches, time-sensitive announcements. You decide when they go, you decide who gets them.</p></li><li><p><strong>Flows:</strong> triggered automatically by subscriber behaviour. Welcome series, abandoned checkout, post-purchase, win-back. Set up once, run indefinitely. Revenue-per-recipient is highest here.</p></li><li><p><strong>Transactional emails:</strong> order confirmations, shipping notifications, password resets. The most-opened email a brand typically sends. Also, from my audits, frequently the ugliest and least on-brand.</p></li><li><p><strong>Lifecycle emails:</strong> sent based on where someone is in the customer relationship. First purchase milestones, anniversary emails, re-engagement sequences before a subscriber goes cold. These are the most often missing entirely.</p></li></ul><p>In practice, many brands run campaigns reasonably well. They build one or two flows, usually abandoned cart and maybe a post-purchase sequence. They have transactional emails because the ESP ships them by default.</p><p>Lifecycle is almost entirely absent.</p><p>The problem is not awareness. I find in my audits that many brand owners know flows exist and know they could do more with them. The gap is prioritisation.</p><p>Campaigns feel urgent and visible. You can see the revenue attributed to a promotion in 24 hours. Flows are quiet, persistent, and compound over time. That makes them easier to deprioritise and harder to justify building when the quarter is tight.</p><p>From what I see across client work and consistent with the patterns in the Litmus State of Email 2025, brands investing across all four email types generate meaningfully more revenue per subscriber than those focused on campaigns alone. That gap does not close. It widens as the subscriber base grows, because flows scale at zero marginal cost per additional subscriber.</p><h3>The One Fix</h3><p>Run an email type audit before you build anything new.</p><p>Open your ESP. List every active send you have, including automated flows and transactional. Group each one into campaign, flow, transactional, or lifecycle. Then look at which category is empty or close to it.</p><p>For the brands I audit, flows typically have two to three active sequences at most. Lifecycle will be empty. Transactional will be functional but unbranded.</p><p>Pick the single highest-leverage gap and address it before adding to what already exists. For a brand with no welcome series, that is the answer. For a brand with a welcome series but nothing after the first purchase, a post-purchase sequence is it.</p><p>For a brand sending generic transactional emails to a list that gets eight campaigns a month, bringing transactional email up to brand standard will have a disproportionate return, because open rates on that type are exceptionally high.</p><p>Do not try to fix all four at once. Identify the category where you are leaving the most on the table, build one thing in it, let it run for 30 days, then evaluate. That is the compounding nature of automation working for you rather than against you.</p><h3>What Good Looks Like</h3><p>When all four types are working, the program stops feeling like a series of individual decisions and starts functioning like a system. Campaigns drive short-term revenue and keep the relationship active. Flows capture intent at the moment it exists, automatically. Transactional emails reinforce the brand at the highest-trust touchpoints. Lifecycle emails surface at the right relationship milestone without anyone manually triggering them.</p><p>The result is a subscriber who never goes very long without a relevant touchpoint, regardless of whether you ran a campaign that week. That consistency is what separates programs that plateau from programs that compound.</p><p>Revenue-per-subscriber grows because more of the subscriber's journey is covered, not because you are sending more campaigns.</p><p>From my experience working with DTC brands, the shift usually happens when someone stops asking "what should we send this week" and starts asking "which parts of our subscriber journey do we not have coverage on." Those are fundamentally different questions. The second one is the right frame.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://tips.remint.email/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en-gb&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Remint is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Welcome to Remint]]></title><description><![CDATA[15 years in.]]></description><link>https://tips.remint.email/p/welcome-to-remint</link><guid isPermaLink="false">https://tips.remint.email/p/welcome-to-remint</guid><pubDate>Tue, 19 May 2026 17:27:33 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!z5Kg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2750641-accb-462b-8d10-77b7607c7377_2471x1182.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!z5Kg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2750641-accb-462b-8d10-77b7607c7377_2471x1182.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!z5Kg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2750641-accb-462b-8d10-77b7607c7377_2471x1182.png 424w, https://substackcdn.com/image/fetch/$s_!z5Kg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2750641-accb-462b-8d10-77b7607c7377_2471x1182.png 848w, https://substackcdn.com/image/fetch/$s_!z5Kg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2750641-accb-462b-8d10-77b7607c7377_2471x1182.png 1272w, https://substackcdn.com/image/fetch/$s_!z5Kg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2750641-accb-462b-8d10-77b7607c7377_2471x1182.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!z5Kg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2750641-accb-462b-8d10-77b7607c7377_2471x1182.png" width="1456" height="696" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c2750641-accb-462b-8d10-77b7607c7377_2471x1182.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:696,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4351238,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://tips.remint.email/i/198383480?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2750641-accb-462b-8d10-77b7607c7377_2471x1182.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!z5Kg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2750641-accb-462b-8d10-77b7607c7377_2471x1182.png 424w, https://substackcdn.com/image/fetch/$s_!z5Kg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2750641-accb-462b-8d10-77b7607c7377_2471x1182.png 848w, https://substackcdn.com/image/fetch/$s_!z5Kg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2750641-accb-462b-8d10-77b7607c7377_2471x1182.png 1272w, https://substackcdn.com/image/fetch/$s_!z5Kg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2750641-accb-462b-8d10-77b7607c7377_2471x1182.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>15 years in. Here is what this publication delivers.</p><p>I have been designing and developing emails since before responsive layout was standard practice. Before dark mode was a production concern. Before AI entered the workflow.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://tips.remint.email/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en-gb&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Remint is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>In that time I have worked with brands across industries, built automation architectures from scratch, and watched a lot of confident advice age badly.</p><p>This publication shares what I have actually learned.</p><h2>What we cover</h2><p>Ten pillars guide the content here. Each maps to a real, active area of email practice.</p><p><strong>Email Fundamentals.</strong> The mechanics everything else depends on: list health, permission frameworks, send cadence, and the baseline decisions that compound over time.</p><p><strong>Flow Architecture.</strong> How to structure automated sequences that actually perform: welcome flows, post-purchase journeys, re-engagement campaigns, and the architecture connecting them.</p><p><strong>Email Design Principles.</strong> Layout, visual hierarchy, and the patterns that make emails readable across devices and clients.</p><p><strong>Copywriting for Email.</strong> Subject lines, preview text, body copy structure, and the specific techniques that move people from open to click.</p><p><strong>Email Development.</strong> Most emails are built for best-case rendering. The technical reality is messier: Outlook&#8217;s Word-based engine, inconsistent dark mode implementations, and client quirks that no design tool warns you about. This pillar covers what you actually need to know to build emails that hold up.</p><p><strong>Dark Mode.</strong> A dedicated pillar. Getting things right in email clients with dark mode is very tricky. This covers what actually works in production.</p><p><strong>ESP Behaviour.</strong> How the major platforms operate behind the scenes: Klaviyo, HubSpot, ActiveCampaign, Mailchimp. What they do and how it shapes your results.</p><p><strong>Deliverability.</strong> IP reputation, domain authentication, list hygiene, and the signals that determine inbox placement.</p><p><strong>Analytics and Testing.</strong> What to measure, how to run tests that produce real signal, and how to build a testing practice that compounds over time.</p><p><strong>Myths and Contrarian Takes.</strong> Email advice repeated until it becomes received wisdom. Most of it does not survive scrutiny.</p><p>And a new pillar that reflects where email production sits in 2026: <strong>AI in email production.</strong></p><p>This is not about AI-generated campaigns or personalisation at scale. It is about the production workflow: image generation, code assistance, content scaffolding, and where AI tools remove genuine friction.</p><p>In my work with clients, the same pattern repeats. Simple fixes that would lift performance sit undone. Better content stays unwritten because the production cost feels too high. Money left on the table, consistently.</p><p>AI tools are changing that equation. This pillar covers where they help, where they fall short, and how to build a workflow that gets more out of every send.</p><h2>Who this is for</h2><p>Email designers and developers who want to sharpen their craft.</p><p>Marketing managers running email in-house who want to understand what is actually happening under the hood.</p><p>Agency operators building scalable email systems.</p><p>If you are looking for generic marketing content, this is not the place. Every post makes a specific, defensible point. </p><h2>What to expect</h2><p>Articles on each pillar, with real examples and sourced data.</p><p>Alongside the articles, I post Notes: shorter observations from active client work, quick findings from testing, and things that do not warrant a full piece. Think of them as working notes from a live practice.</p><p>New posts go out regularly. No filler, no padding.</p><p>Christian Lundgren
Co-founder, Remint</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://tips.remint.email/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en-gb&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Remint is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item></channel></rss>