Skip to main content
← Back to list
01Issue
FeatureIn ProgressSwamp ClubPublic
Assigneeskeeb

Relationships

↑ child of #2008⊘ blocks #2016

#2015 feat(nurture): the six nurture email templates, previewed before anything sends

Opened by keeb · 9/4/2026

Parent: the product-nurture epic.

Problem

Six flows need copy. The copy is the product here — the machinery only decides who gets a message; whether it lands is entirely about what it says.

What ships

Six markdown templates in content/emails/, rendered by the existing renderEmail shell (branded, mono, CTA button, {{variable}} substitution):

template segment promise
nurture-no-activation.md ARRIVED, NEVER RAN one command to a first result
nurture-model-no-workflow.md BUILDING PRODUCT FEATURES turn what you run by hand into a workflow, and share it
nurture-extension-published.md GROW CHAMPION congratulations, here is your extension's page, here is how to get it used
nurture-reactivation.md DRIFTED your quest is waiting
nurture-needs-help.md NEEDS HELP that run failed — here is the fix, or reply and we will look

Plus nurture-no-activation-cli.md — the same split flow 1 already makes. Someone who installed the CLI and never ran a command needs different words from someone with no swamp binary, and telling the second group to run a swamp command gives them nothing to do. That was the whole point of #1168 and it applies here unchanged.

Preview in the panel before anything sends. /admin/nurture renders each template against a real candidate's evidence. That is what makes this issue independently verifiable: you read the actual email that would go to an actual named person, and no send has occurred.

Copy rules that are already enforced: operative (never operator); Collective for organisation; lowercase swamp only for copy-pasteable tokens; literal font families (email clients do not resolve custom properties). The terminology test already sweeps content/.

A message must be safe under an ambiguity it cannot resolve. The no-activation flows fire on the absence of a bound device, and an operative running the CLI without swamp auth login looks identical. The copy carries that gracefully — a line that costs nothing if they are already up and running — rather than asserting they have done nothing.

No message promises a reply we will not give. "Need help?" means someone reads the replies. Pick and name the address before shipping the template.

Verification

  • tests/email/nurture_templates_test.ts — every template renders with no unresolved {{…}}, every one carries the unsubscribe footer, subject agrees with the heading (the existing email_test.ts guard), and every variable a template names is one the sender actually supplies.
  • Send each to a real inbox and read it on a phone. Rendering tests do not catch a bad sentence.

Out of scope

Arming anything. This issue ships copy and a preview, and mails nobody.

02Bog Flow
OPENTRIAGEDIN PROGRESSSHIPPED+ 1 MOREASSIGNED+ 5 MOREREVIEW+ 2 MORECODE_CONFORMANCE_REVIEW

In Progress

9/5/2026, 12:36:37 AM

Click a lifecycle step above to view its details.

03Sludge Pulse
keeb assigned keeb9/4/2026, 11:19:24 PM
keeb linked parent of #20089/4/2026, 7:41:10 PM
keeb linked blocked by #20169/4/2026, 7:41:48 PM

Sign in to post a ripple.