10# Email Lifecycle
11
12End-to-end lifecycle email — pick the right provider for the job, build the audience, draft the sequence, launch, and measure. Cross-provider patterns at the top; provider-specific tool calls below.
13
14## Out of scope — defer to other skills
15
16| Request | Send them to |
17| --- | --- |
18| Cold outbound to people who haven't opted in | cold-email-outreach |
19| Generating images for email creatives | image-generation |
20| Generating ad creatives that run alongside the lifecycle program | ad-creative-generation |
21| SEO research / blog content for the newsletter | seo-research |
22
23## Requirements
24
25- **Hyper MCP installed and connected.** [https://app.hyperfx.ai/mcp](https://app.hyperfx.ai/mcp)
26- **At least one of these providers** connected at [https://app.hyperfx.ai/apps](https://app.hyperfx.ai/apps):
27 - **Klaviyo** — ecommerce, Shopify-heavy lists, behavioral triggers off purchase / browse data
28 - **Resend** — product-led / SaaS / dev tools, transactional + lifecycle on the same domain
29 - **Beehiiv** — newsletters, paid-tier subscriptions, content-driven lists
30 - **Gmail** — small / personal lists, founder-mode broadcasts, ops emails
31
32If none of those tool prefixes (klaviyo_*, resend_*, beehiiv_*, gmail_*) appear in the agent's tool list, stop and tell the user to enable the Hyper MCP and connect the provider they intend to use.
33
34## Provider selection
35
36The wrong provider is the most common reason a lifecycle program fails. Pick first.
37
38| You are… | Use | Why |
39| --- | --- | --- |
40| An ecommerce / DTC brand on Shopify, BigCommerce, WooCommerce | **Klaviyo** | Native ecom event listeners (Placed Order, Started Checkout, Browsed Product), mature flow editor, tight Shopify sync. |
41| A SaaS / dev tool / API product sending product + lifecycle on the same domain | **Resend** | Same API for transactional + marketing, audience management, broadcasts, automation runs. Excellent deliverability for product mail. |
42| Running a content-led newsletter (free + paid tiers) | **Beehiiv** | Built around the newsletter-as-product model — segments, automations, paid tiers, referral program, post stats. |
43| Running a small ops list (≤500 contacts), founder-mode broadcasts | **Gmail** | Zero new infra, label-based segmentation, easy templating. Don't scale beyond ~500 — see [cold-email-outreach](../cold-email-outreach) for sender deliverability if you do. |
44
45You can run more than one. The pattern is: Klaviyo for marketing, Resend for transactional + product onboarding (when the brand also runs ecom). Or Beehiiv for the newsletter and Resend for the product. Decide once per program, not per email.
46
47## Tool surface
48
49| Phase | Klaviyo | Resend | Beehiiv | Gmail |
50| --- | --- | --- | --- | --- |
51| Audience setup | klaviyo_create_list, klaviyo_add_member_to_list, klaviyo_create_segment, klaviyo_create_profile, klaviyo_update_profile | resend_create_audience, resend_create_contact, resend_list_contacts, resend_update_contact | beehiiv_create_subscription, beehiiv_create_segment, beehiiv_add_tags, beehiiv_list_subscriptions | gmail_labels_create, gmail_labels_add, gmail_labels_remove |
52| Sequence build | klaviyo_create_campaign, klaviyo_update_campaign_message | resend_create_automation, resend_update_automation, resend_get_automation | beehiiv_create_post, beehiiv_list_automations, beehiiv_add_to_automation | gmail_drafts_create, gmail_drafts_update |
53| Send / launch | klaviyo_send_campaign, klaviyo_get_campaign_send_job | resend_send_email, resend_send_broadcast | beehiiv_create_post (publish), beehiiv_update_post | gmail_messages_send, gmail_drafts_send |
54| Measure | klaviyo_get_metrics, klaviyo_get_metric, klaviyo_get_campaign | resend_list_automation_runs, resend_get_automation_run | beehiiv_get_post_stats, beehiiv_get_subscription | gmail_messages_list |
55
56Full per-provider mechanics, gotchas, and concrete tool-call examples in [references/provider-mechanics.md](./references/provider-mechanics.md).
57
58## Critical rules
59
601. **Pick the provider before writing copy.** The mechanics of how a flow gets triggered, how a segment gets defined, and what data you can personalize against differ enough that "we'll figure out the provider later" wastes a day.
612. **Always start with the audience, not the email.** A welcome flow with no opt-in source is unsendable. A win-back with no inactivity definition is unsendable. Define the audience first; the copy is downstream.
623. **One purpose per sequence.** A "welcome + onboarding + product education + first purchase nudge" mega-flow is brittle and impossible to measure. Split into separate flows wired together.
634. **Honor unsubscribes globally, not per-list.** When a profile unsubscribes, suppress them across every flow in the workspace — not just the one they unsubscribed from. All four providers expose this; it's not optional.
645. **Test sends with a real seed inbox before going live.** Every provider supports a test send. Do not launch a 10-email sequence to a 50,000-person list without seeing every email render in Gmail / Outlook / Apple Mail / mobile.
656. **Stay under provider rate limits.** Especially for resend_send_broadcast (large blast → throttled), gmail_messages_send (~500/day soft cap), and klaviyo_send_campaign (account-tier dependent).
667. **Track conversion metric, not opens.** Apple Mail Privacy Protection makes open rates ~useless on iOS. Configure conversion events at the provider level (Klaviyo metrics, Resend automation completion, Beehiiv segment transitions) and report on those.
67
68## Workflow
69
70### Phase 1 — Define the lifecycle program
71
72Get the user to commit to:
73
741. **Trigger** — The event that puts a profile into this flow. Examples: "signed up for the newsletter", "made first purchase", "abandoned cart with > $50 value", "no order in 90 days".
752. **Audience filter** — Beyond the trigger, who qualifies. ("Newsletter signup, but only US-based". "Abandoned cart, but only first-time visitors.")
763. **Goal** — One concrete outcome the flow drives toward. Not "engage them more". Concrete: "first purchase within 14 days", "activate the integration within 7 days", "upgrade to paid within 30 days".
774. **Success metric** — Conversion rate to goal. Open and click are diagnostic, not goal metrics.
785. **Suppression rules** — Who should *never* get this flow even if they hit the trigger. (Existing customers shouldn't get the new-customer welcome. Recent purchasers shouldn't get the win-back.)
79
80If the user can't answer the trigger or the goal, the flow isn't ready to build.
81
82### Phase 2 — Pick the sequence pattern
83
84Five patterns cover ~95% of lifecycle work. See [references/sequence-patterns.md](./references/sequence-patterns.md) for full templates with copy, timing, and provider-specific notes.
85
86| Pattern | Trigger | Typical length | Goal |
87| --- | --- | --- | --- |
88| **Welcome / onboarding** | List signup | 3–5 emails over 7–10 days | First conversion (purchase, activation, paid signup) |
89| **Nurture** | Lead magnet download, content opt-in | 4–7 emails over 3–6 weeks | Product-qualified action |
90| **Abandoned cart** *(ecom only)* | Started Checkout, no Placed Order | 2–3 emails over 24–72 hours | Complete the purchase |
91| **Re-engagement** | Lapsed activity (e.g., no opens in 60d, no purchase in 90d) | 2–3 emails over 7–14 days | Re-open / re-engage |
92| **Win-back** | Lapsed customer (no purchase in 180d+) | 2–3 emails over 14–21 days | Repeat purchase |
93
94### Phase 3 — Build the audience
95
96Audience setup is provider-specific. Examples for the most common case (welcome flow):
97
98**Klaviyo** — create the list, then a flow trigger on "Subscribed to List":
99
100```
101klaviyo_create_list(list_name="newsletter-2026")
102# triggers + flows are configured in Klaviyo UI; the API surface here is
103# for adding profiles, building segments, and sending one-off campaigns.
104```
105
106**Resend** — create an audience, then an automation triggered by contact.created:
107
108```
109resend_create_audience(name="newsletter-2026")
110resend_create_automation(
111 name="welcome-2026",
112 trigger="contact.created",
113 audience_id="aud_...",
114 ...
115)
116```
117
118**Beehiiv** — subscriptions trigger automations directly when added to a segment / publication:
119
120```
121beehiiv_create_subscription(
122 publication_id="pub_...",
123 email="user@example.com",
124 utm_source="signup-form",
125)
126beehiiv_add_to_automation(
127 automation_id="aut_...",
128 subscription_id="sub_...",
129)
130```
131
132**Gmail** — labels are the segment. Start with a label per program:
133
134```
135gmail_labels_create(name="lifecycle/welcome-2026")
136# manual contact list maintained outside Gmail (Sheets, CSV) — Gmail
137# is best for ≤500 contacts, founder-led sends.
138```
139
140Provider-specific gotchas (e.g., Klaviyo's profile-merging behavior, Resend's audience-vs-segment distinction) are in [references/provider-mechanics.md](./references/provider-mechanics.md).
141
142### Phase 4 — Draft the sequence
143
144For each email in the sequence:
145
1461. **Subject + preview text** — Lifecycle subject lines should look like 1:1 mail when possible (lowercase, short). Different rules than cold email — a welcome from a brand the user just opted into can be slightly more branded.
1472. **Body** — One job per email. Welcome touch 1 = "thanks, here's what to expect"; touch 2 = "here's the one thing to do first"; touch 3 = "here's the proof / case study".
1483. **CTA** — One per email. Same rules as cold email — interest-based or single-action.
1494. **Personalization tokens** — Use whatever the provider exposes ({{first_name}}, {{event.product_name}}, {{custom_field.plan_tier}}). Never use a token without a fallback ({{first_name|"there"}}).
150
151Drafts-first by default — for any new sequence, build the first email and *test send it to yourself before moving on*. Provider previews look correct in the editor and broken in production more often than not.
152
153### Phase 5 — Launch
154
1551. **Test send to a seed inbox.** Every provider supports it. Use it for every email before activation.
1562. **Activate the flow.** Klaviyo: set status to Live. Resend: enable the automation. Beehiiv: publish the post / set automation to active. Gmail: just send.
1573. **Set a 7-day check-in.** Most lifecycle issues (broken token, wrong audience filter, send-time-pacing surprise) show up in the first week. Pull metrics on day 7 and again on day 30.
158
159### Phase 6 — Measure & iterate
160
161Pull the *conversion to goal* metric, not opens or clicks. Open rate post-MPP is noise.
162
163| Provider | Conversion metric source |
164| --- | --- |
165| Klaviyo | klaviyo_get_metric(metric_id=<conversion-event>) — e.g., Placed Order attributed to the flow |
166| Resend | resend_list_automation_runs(automation_id=...) — count completed runs that hit the goal step |
167| Beehiiv | beehiiv_get_post_stats(post_id=...) and segment-membership transitions |
168| Gmail | gmail_messages_list(query="label:lifecycle/<program> newer_than:30d") — look for replies / conversions |
169
170Iteration rule: don't tune copy until the audience is right. If the welcome flow has a 1.2% conversion and the same product organic conversion is 4%, the audience is misaligned (too broad, wrong source, suppression rules missing) — fix that first. Copy comes second.
171
172## Quality check (before launch)
173
174Read the whole sequence end-to-end as if you're a single person receiving it over the planned timing. Reject any sequence that fails:
175
176- The 5-email arc tells *one* coherent story.
177- Each email could stand alone if the previous ones bounced.
178- Every CTA leads somewhere that still works (no broken links, no canceled offers).
179- The unsubscribe link is visible (provider auto-adds, but verify in test send).
180- Tokens have fallbacks. No Hi , after a missing first-name.
181- Subject lines are different across the sequence — same subject 5x reads as a system glitch.
182- The send time isn't 3am in the recipient's time zone.
183
184## Reference workflows
185
186| Reference | When to read |
187| --- | --- |
188| [references/sequence-patterns.md](./references/sequence-patterns.md) | Building a welcome / nurture / abandoned-cart / re-engagement / win-back sequence — full templates with copy, timing, and benchmarks |
189| [references/provider-mechanics.md](./references/provider-mechanics.md) | Klaviyo flows, Resend automations, Beehiiv segments — concrete tool-call patterns and provider-specific gotchas |
190