Canonical source of truth for Solid's lifecycle email logic. This file defines states, triggers, subject lines, exemptions, and suppression behavior for the rolling-access model. If this file and Marketing/email.md conflict, this file wins.
Marketing/email.md is the strategy companion, not the final arbiter.-- Solid as the consistent sign-off.W1, A1-A3, G1-G2). Transactional emails are outside the cap entirely.Primary journey: Waitlist → Admitted → Activated → Engaged. Everything else is an off-ramp, overlay, or recovery state layered on top of that path.
Signed up, completed setup, workspace not yet activated. Dashboard shows "Solid is at capacity." Goal: keep them warm, reinforce the category framing, collect signal on who to admit next.
| ID | Trigger | Subject | Goal |
|---|---|---|---|
| W1 | Immediate on signup | "You're set up" | Confirm setup worked, set expectations, drive to dashboard for pre-selections |
| W2 | Day 3-5 | "The part nobody shows you" | Teach the two failures (walled gardens + fragmentation). Category education, not product pitch. Filters for beachhead users |
| W3 | Day 10-14 | "What we've been building" | Show momentum. Real demo clip or screenshots. Proof that something concrete exists |
| W4 | Day 21-28 | "What early builders are saying" | Social proof from admitted users. If unavailable, show a real build example. Soft referral nudge |
| WU1 | Every 2-3 weeks after W4 | Product updates | Real news only. One piece of genuine news + one visual per email. If nothing real to share, don't send |
On the waitlist 30+ days and stopped opening emails. One re-engagement attempt, then suppress from active sends. Don't delete them. They can be reactivated with a major announcement as a one-time broadcast.
| ID | Trigger | Subject | Goal |
|---|---|---|---|
| WC1 | 30+ days, no opens | "Still interested in Solid?" | One shot. Include opt-out link. If no open or click, suppress from active sequences |
Workspace activated (by code or backend). In Solid, this means they still need to choose a plan, add payment, verify phone, and confirm subscription before entering the workspace. The access email is the onboarding. Get them to finish subscription and reach their first build as fast as possible.
| ID | Trigger | Subject | Goal |
|---|---|---|---|
| A1 | Immediate on activation | "Your Solid workspace is ready" | Already spec'd in onboarding.md. Plain text feel. Single CTA: open the dashboard, finish subscription, and start |
| A2 | Day 1-2 after admissionOnly if no build started | "A good first build to try" | Suggest one specific, achievable first project (15-20 min). Give them a reason to finish subscription and reach the revision moment where quality becomes visible |
| A3 | Day 3-4 after admissionTwo variants: built vs. not built | "Now try changing it" / "Need help getting started?" | If built: trigger the revision experience that proves the quality claim. If not: offer help finishing subscription or getting started |
Workspace is ready, but they never came back to choose a plan or complete subscription. Usually timing, not disinterest. Short runway to activate, then move on. Don't revoke access unless capacity requires it, and if so, warn them first.
| ID | Trigger | Subject | Goal |
|---|---|---|---|
| G1 | 48h after admission, no return visit | "Your Solid workspace is ready when you are" | Quick reminder with dashboard link. Acknowledge busy timing. Point them back to the subscription step |
| G2 | 7 days after admission, no return visit | "Still planning to use Solid?" | Last nudge. Offer to keep the workspace ready or close the loop. Invite a reply. Then suppress |
Has subscribed, entered the workspace, and completed their first conversation or build. Goal: deepen usage, build habit, turn them into advocates. All triggers are relative to first build date.
| ID | Trigger | Subject | Goal |
|---|---|---|---|
| ACT1 | Day 5-7 after first build | "Three things most people don't try" | Surface 2-3 features they haven't discovered. Practical, not promotional. Screenshots help |
| ACT2 | Day 10-14 after first build | "Quick question about your experience" | Ask one specific question. Plain text, invites reply. Gets testimonial material + product feedback. Deepens relationship |
| ACT3 | Day 18-21 after first build | "What [Name] built this week" | Showcase another user's build. Normalizes continued usage, gives ideas for next project |
Subscribed, tried it, drifted away. Don't spam. Find out what happened or let go gracefully. After S3, suppress from active sequences and move to product updates only.
| ID | Trigger | Subject | Goal |
|---|---|---|---|
| S1 | 7-10 days after last activity | "How's it going with Solid?" | Casual, not desperate. Check if they ran into something. Invite support chat or reply |
| S2 | 14-21 days after last activity | "Something new since you last built" | One specific improvement or compelling build from another user. Concrete reason to come back |
| S3 | 30 days after last activity | "Still planning to build with Solid?" | Graceful exit. Often reactivates silent users or surfaces churn reasons. Then suppress |
Using the product regularly. Reduce email frequency. They're already in the product. Don't over-communicate. Goal: keep informed, deepen loyalty, create referral sources.
| ID | Trigger | Subject | Goal |
|---|---|---|---|
| EN1 | Every 2-3 weeks | Product updates | New features, improvements. Same as waitlist updates but with more depth. Include CTA to try the feature |
| EN2 | Every 2-3 weeks (alternating) | Community spotlight | Interesting builds, user stories, clever use cases. Inspiration, not education |
| EN3 | Each billing cycle reset | "Your month with Solid" | Data-only monthly summary. Suppress if last month was $0 and trigger the at-risk check instead |
| R1 | Once, around week 4-6 of active use | "Know someone who should be building on Solid?" | Single founder-led referral nudge. Personal intro or link. If referred, prioritize them for activation. One email, one ask, not a campaign |
| E1 | Usage milestoneWhen usage suggests higher tier benefit | Contextual upgrade | When they'd benefit from a higher tier. Contextual, not generic. Framed as "more room," not "spend more" |
Sub-segment of Engaged. Consistently high usage relative to plan. Same email cadence as Engaged, plus expansion triggers. These users are your best referral and testimonial candidates.
| ID | Trigger | Subject | Goal |
|---|---|---|---|
| PU1 | Same as Engaged | Product updates + community | Same cadence as Engaged. They're already the most engaged. Don't over-email |
| E1 | Hitting plan budget ceiling | Contextual upgrade | Higher priority than for Engaged users. They're feeling the ceiling. AI savings on higher tiers make the budget go further |
Was building regularly, now inactive for 2+ weeks. This is a trust state, not a guilt state. Don't say "we miss you." Surface problems or get out of the way.
| ID | Trigger | Subject | Goal |
|---|---|---|---|
| AR1 | Usage drop detected | "Anything I can help with?" | Short, human. Not "we miss you." Check if they hit a wall. Invite reply or support chat |
| AR2 | 3 days before renewalOnly if no usage in 21+ days | "Your plan renews on [date]" | Highest-trust email in the system. Proactively warn about renewal, link to manage plan, no urgency or pitch |
Cancelled their paid plan. Post-churn sequence: listen first, then share improvements, then make one offer, then stop. No guilt, no desperation. Their workspace and work stay intact.
| ID | Trigger | Subject | Goal |
|---|---|---|---|
| C1 | Day 3 after cancellation | "Was there something we could have done differently?" | Neutral check-in. No pitch. Just listen. Ask for a reply |
| C2 | Day 14 after cancellationOnly if something relevant shipped | "What's changed since you left" | Real product update. Only send if genuinely relevant changes shipped. No filler |
| C3 | Day 30 after cancellationOptional | Re-engagement offer | Only direct conversion ask in the sequence. Extended access, discount, or incentive. Keep it brief |
| C4 | Day 60 after cancellation | "Last note from Solid" | Final email. One-click reactivation link. Then permanently suppress from win-back sequences |
The tail of the churned sequence (C3-C4). After C4, permanently suppress from all marketing emails. They only hear from Solid again if they resubscribe or if legally required. Major broadcasts (funding, Product Hunt) are the sole exception.
One-time sends to the full list, not part of any sequence. Every broadcast must have a segment-aware CTA. The same news goes to someone on the waitlist for 2 months and someone who uses Solid daily, but the action you want from each is different.
Weekly cap. No more than 1 marketing email per week to any user, except account-setup and activation/onboarding emails (W1, A1-A3, G1-G2). Transactional emails are outside the cap.
Suppression rules. After WC1 with no engagement, suppress to broadcasts only. After G2 or S3, suppress to product updates only. After C4, permanently suppress from all marketing. If a monthly summary would show $0 usage, suppress it and trigger AR1 instead.
Transactional boundary. Payment receipts, payment failures, plan changes, and top-up confirmations are not lifecycle emails. They do not move users between marketing states and should not depend on marketing suppression logic.
Source of truth. This file is the canonical state machine. Marketing/email.md should match it, not override it. If something changes here, the companion doc should be updated to reflect the change.
Subscription gate. Solid has a required subscription step between ADMITTED and ACTIVATED. When admitted, the user must select a plan, add payment, verify phone, and confirm before entering the workspace. This means GHOST in Solid is "never came back to subscribe," not "never logged in."
Voice rule. Use founder voice throughout. Direct emails should sound like a note from one person who knows the product well. Prefer first-person singular in body copy; keep -- Solid as the consistent sign-off.
Language rules. User-facing copy must follow onboarding.md: no "waitlist," "early access," "apply," or "request access." Use capacity framing: "workspace," "ready," and "when." State names like WAITLIST and GHOST are internal only; the subject lines and snippets in this file already follow the public framing.
Referral approach. The single referral nudge (R1) at week 4-6 is intentionally light. Solid rejects gamification, so no referral ladders, points, or leaderboards. The incentive is simple: if an engaged user refers someone strong, prioritize that person for activation.