Email flow appendix · all sequences · all triggers · all landings

Every email · where it sends them.

The complete email funnel map across PostureVision and Dr. Hutcheson's clinical practice. Each row shows: the trigger that fires it, the subject line, the call-to-action, and the exact landing page the user arrives at. Companion to the site map · share with marketing + lead-seg sessions.

Sequence 01 · Welcome 5 emails over first 14 days · all signups

First-week onboarding
From: Brian @ PostureVision <brian@posture.vision>
Trigger: signup_completed event from `/auth/register`. Fires within 5 minutes.

Sequence 02 · Trial-ending 3-day + 14-day variants · trial users only

14-day card-on-file trial
From: Brian @ PostureVision · gentle reminder tone
Trigger: trial_started event with trial_type = "14day-card". Three reminders fire automatically before charge.
3-day no-card trial
From: Brian @ PostureVision · "no card was on file" framing
Trigger: trial_started with trial_type = "3day-no-card". Two emails — Day 2 reminder + Day 3 wrap.

Sequence 03 · Win-back 3 emails over 21 days · fires on inactivity

Inactive user reactivation
From: Brian @ PostureVision · soft observational tone
Trigger: 14 days since last daily_check_completed event. Continues until reactivation OR 21 days reached, whichever first.

Sequence 04 · Streak milestones fires on 7 / 30 / 90 day streak hits

Celebration + share moment
From: Brian @ PostureVision · genuine warm tone
Trigger: session_milestone_unlocked event with {streak_days: 7|30|90}. Same-day delivery.

Sequence 05 · Cancellation save flow fires on cancel-intent · in-app modal first, email follow-up

Save attempt at moment of cancel
From: Brian @ PostureVision · honest, low-pressure
Trigger: cancel_intent_clicked in-app · in-app modal fires first; this email fires 4 hours later if user is "Hot" lead-score and cancellation completed.

Sequence 06 · Friend invite & Rise Together fires on invite events · both sides

Friend invite lifecycle
From: PostureVision <hello@posture.vision> · transactional voice
Trigger: friend invite events from POST /friends/invite/email + POST /friends/invite/link redemptions.

Transactional emails fire automatically · no marketing tone

Email verification
Verify your email · PostureVision

Sent immediately after signup. Magic link · 24h expiry · resends available.

→ posture.vision/verify-email?token={x}
Password reset
Reset your password · PostureVision

Triggered by /forgot-password. Magic link · 1h expiry · single use.

→ posture.vision/reset-password?token={x}
Payment success
Receipt · PostureVision Premium

Stripe webhook → receipt email with PDF attached. No marketing.

→ posture.vision/settings/billing
Payment failed
Action needed: update your payment method

Stripe webhook → 3-attempt dunning sequence (Day 0 / Day 3 / Day 7). After Day 7 → involuntary churn.

→ posture.vision/settings/billing?attention=payment
Household member added
{Primary's name} added you to their household plan

When primary user adds a Couples/Family member · invite to claim seat.

→ posture.vision/household/claim?token={x}
Parental consent (COPPA)
Approve your child's PostureVision account

When parent invites a minor (is_minor=true) · consent flow before any data collection.

→ posture.vision/household/consent?token={x}

Dr. Hutcheson warm-list intro 1 email · existing patient list · CAN-SPAM compliant

"A tool I've been using"
From: Dr. Brian Hutcheson <brian@doctorhutcheson.com>
Trigger: manual send to Dr. H's existing patient list (existing business relationship per CAN-SPAM doctrine, FL CAN-SPAM compatible). Includes clear PostureVision identification + opt-out.
Compliance: Florida CAN-SPAM compatible under "existing business relationship" doctrine. Sent from his practice email address. Clear PostureVision identification in body. Unsubscribe link prominent. Counsel review required before first send.

Sender infrastructure · what's wired vs. pending

From-name strategy
· Marketing: Brian @ PostureVision <brian@posture.vision>
· Transactional: PostureVision <hello@posture.vision>
· Warm-list (existing patients only): Dr. Brian Hutcheson <brian@doctorhutcheson.com>
Reply-to always routes to hello@posture.vision (Linda + Brian both monitor).
Required DNS · before scale
· MX records for posture.vision
· SPF record (Resend)
· DKIM (Resend-managed)
· DMARC policy = quarantine first 30d, then reject
Resend manages most of this; needs DNS records at the registrar before sending in volume.
Resend integration status
· Account created: yes
· API key in Vercel env: pending
· Webhook to PostHog: spec'd, not built
· Templates in code: 0 of ~25 specified above
Lead-seg session owns
Per NEW_SESSION_PROMPT_LEAD_SEGMENTATION.md · sequences, copy approval, GHL workflow wiring, and per-email persona variants. Frontend session owns landing pages each email points to. Backend owns the trigger events that fire each sequence.