π§ TMA EMAIL EXECUTION PLAN
The founding Email Revenue Strategy β phase-by-phase, task-by-task, in execution order. Click any task to unfold: what it is Β· who does it Β· the exact fix Β· what's still missing.
Last updated: 21 Jul 2026, morning (post-first-fires). Produced 20 Jul 2026 by the Email Growth Team (tma-email-lead β tma-email-skeptic verified β ratified by Aga's builder verification + rulings). Owner of record: tma-email-lead.
π PROVENANCE LAW: every count on this page was pulled LIVE from the ActiveCampaign API on 20 Jul 2026 with a reproducible query (scripts + ID files in Β§8). Counts drift daily β re-check live before any send; never quote this page as current truth after ~27 Jul without a fresh pull. The debunked "22,885 cold lead-magnet backlog" must never reappear.
π CHECK-FIRST LAW (Aga, 20 Jul): before writing ANY new email or sequence, search ActiveCampaign for existing ones. Today's proof: the whole shoulder-mobility funnel already exists (984 free week: 4 emails Β· 985 course launch: 11 emails Β· historical sends ~13K); renewal genuinely doesn't (1 unrelated match).
β‘ LIVE STATE (21 Jul, updated PM): #1 #3 #5 β
DONE Β· #4 β
500 in (gate Thu) Β· #2 β
written+gated, awaiting Aga's review Β· #24 976 Cancelled Win-Back trigger fix β
DONE (17:27) Β· #2 send gated to ~Mon 28 Jul (promo cooldown per the 13-Jul post-promo decision; July-4 promo closed Sun 12 Jul) Β· next machine action: Thu 23 Jul results check β #6 waves.
π 21 Jul PM diagnostics folded in: Stripe failed-payment recovery DIAGNOSED + ADJUDICATED (#21 β config already optimal: Smart Retries 4Γ/1mo, all emails on, Card Updater on, Retain off; no config toggle. Matured June cohort: recovery only 6.6% by value β recovery lever = the built Jesse-voiced payment-recovery personal rail, LIVE 23 Jul, manual-send ~$160β320/mo MODELLED, lever #2; R1/voluntary cancels = lever #1) Β·"dead" defined = 58 days silent across 4 signals (#14/#15) Β· AC bill = Pro 100K, $761.14/mo. β ARCHIVE-FOR-SAVINGS DEAD (AC support 22 Jul): account is Commit-Annually LOCKED till 9 Apr 2027 (no mid-term downgrade) + downgrading to 50K collapses the discount 56%β35% = $840/mo, MORE than now. Archiving saves $0 β sunset only for deliverability, never cost. All screenshots saved to operations/email-audit-agent/plan2026-07/proof/.
β‘ RETENTION/LIFETIME PROGRESS FOLDED IN (21 Jul β full detail: SESSION_MASTER_SUMMARY_2026-07-20_21.md):
β’ 986 Welcome Lifetime Members: E2βE6 written + wired via AC API (reply-mechanic, on E1's template); automation set to start at E2; 57 of ~63 July-4th lifetime buyers injected at E2 (flowing E2βE6). Task: TASK-986-LIFETIME-TESTIMONIAL-ARC-2026-07-21.md.
β’ Win-back OFFER RULING: for 976 Cancelled Win-Back β reason-gated (only the price branch sees money); price branch = come-back ANNUAL SAVE30 β $109.90/yr (eff. $9.16/mo), fallback capped $12.97Γ3; $9.99/mo-forever RETIRED; no-timeβpause, bugsβfix-not-discount. Reply-based delivery (no link; reply β we send annual checkout + SAVE30). Nic: confirm SAVE30-on-annual only.
β’ Reply-fulfilment wired: reply_fulfil.py drafts Jesse-voice replies in Gmail for 986 arc replies (help + testimonial); hooked into the daily 05:35 machine; nothing auto-sends.
β’ Baseline retention truth: D7 ~20% / D28 ~6% (pre-promo); 50%-off healthy, lifetime toxic; retention is the binding constraint (preserves ~$300β600/mo).
π΄ UPDATE β 28 July 2026: the nurture estate has been re-diagnosed and consolidated
Live link-level data changed the picture. The best-selling nurture sequence is
758 Nurture Sequence 2 (1.240% offer clicks per send), not 751 Nurture Sequence 1 (0.319%).
973 Nurture Sequence 1 NEW COPY FROM CLAUDE converts at
0.007% β 177Γ worse β and the cause is
link architecture, not copy: it carries no proof link, no promo link, and lets blog links outnumber the offer 36 to 1.
Decisions taken:
- 973 Nurture Sequence 1 NEW COPY FROM CLAUDE β switched off to new entrants (28 Jul). Existing contacts finish the sequence. Copy to be salvaged, not binned.
- 979 Re-Engagement - For people who stopped opening Before Sunset β paused (28 Jul). 3,451 sends Β· 666 opens Β· 0 clicks across three live destinations. Treated as a CTA fault, handed to E2. Copy not to be touched until E2 reports.
- One nurture sequence, built on 758 Nurture Sequence 2's architecture and filled with 751 Nurture Sequence 1's content library.
- Remove the affiliate link from all nurture emails β 1,005 clicks currently go to recruit affiliates instead of selling. Move it post-purchase.
/50promo must be fixed before more traffic is routed to it β it still sells the banned Lifetime plan behind an evergreen countdown.
π΄ The rule that drives all of it: in every email the offer must be at least as prominent as any other link, and blog links must never outnumber offer links. That single ratio predicts sales performance across all five sequences measured.
Full analysis and the rebuild template: TMA-NURTURE-CONSOLIDATION-2026-07-28.html
Β§1 Β· The verified situation
The estate is structurally sound and email health is excellent (June sends: 0.04% bounce, ~0 complaints; Postmaster confirmed clean by Aga 20 Jul; authentication audit PASSED 20 Jul β SPF includes AC, domain-aligned DKIM acdkim1/acdkim2 found, strict DMARC satisfied). The full welcomeβnurture spine is wired and active (Β§3). The "30K+ not in any automation" is not neglect β it is customers correctly excluded, contacts between touches, and dead addresses awaiting cleanup. Nurture 2/3/4 are newly chained; the June groups are the first people ever travelling toward them.
Β§1b Β· The money question: dead contacts, the AC bill, and "archiving" (researched 20 Jul)
How AC bills us: our account pre-dates Nov 2025, so we pay only for ACTIVE contacts β people subscribed to at least one list who haven't unsubscribed or bounced. Unsubscribed and bounced contacts already cost nothing. (Sources: AC Help β "Do unsubscribed, unconfirmed, or bounced contacts count against my contact limit" Β· "Should I archive my unsubscribed and bounced contacts".)
So the "archive" is: β export a full CSV backup β β‘ unsubscribe the dead from all lists β they stop counting as billable contacts; records stay in AC (recoverable). Deleting adds nothing. This is tasks #14β15.
β
BILLING ANSWERED (AC support/Beatriz, 22 Jul) β the archive-for-savings play is DEAD: the account is Commit-Annually-Pay-Monthly, locked 9 Apr 2026 β 9 Apr 2027 (no mid-term downgrade; requests auto-defer to term end); contact count doesn't change the bill mid-term; and downgrading to 50K would CUT the migration discount (56%β35%) making it $840/mo vs today's $761 β $80/mo MORE. The 6 Aug 62%β56% step-down happens regardless. Therefore: sunset/archive (#14/#15) is justified on DELIVERABILITY ONLY (cleaner engaged list, stronger reputation) β no billing deadline, no money case. Revisit tiers near Apr 2027 renewal.
How do we know a contact is dead? Three signals, in order of certainty:
- Hard-bounced β the mailbox doesn't exist. Definitively dead (and already unbilled).
- Inactive tag (13,157 people) β our daily engagement tagger (754/755 Engagement Tagging) marks anyone with no engagement inside its window. RESOLVED 21 Jul (screenshots): Inactive ("dead") = 58 days of ZERO engagement across FOUR signals β no email open, no click, no themovementathlete.com visit, no app visit. Ladder: Recent activity β€7d β Engaged β€28d β Disengaged 28β58d β Inactive 58d+ (7+21+30). Part 2 resets the clock on any of the four signals. Conservative + defensible. Proof:
proof/ac-engagement-and-billing-2026-07-21/.
- Failed the final-goodbye test β got the 3-email "do you still want these?" series (977 Sunset) and didn't open any. That's our proof-of-death before archiving (task #15).
β SETTLED 22 Jul (AC support) β the archive-to-save-money play is DEAD: account is Commit-Annually LOCKED until 9 Apr 2027 β no mid-term downgrade (requests auto-schedule to term end), and being at 52K on a 100K plan changes nothing (fixed tier). Worse, downgrading to 50K collapses the migration discount 56%β35% β $840.45/mo, MORE than the current $761.14. So archiving nets $0 (even a loss). Sunset/archive still has DELIVERABILITY value (cleaner engaged list, better inbox placement) β do it for that, never for cost. No 6 Aug clock. Revisit at Apr 2027 renewal.
Β§2 Β· The 30,816 β every group, a named fate
Rule: one contact, one lane. Zero overlap between all pools and the held 7,629 β ID-verified 20 Jul.
Β§3 Β· The spine + the contact's life β START to END (Aga's rulings, 20 Jul)
750 Quiz Welcome ββββββββββββββ
967 Lead-Magnet Welcome βββββββ€βββΆ 973 Nurture 1 βββΆ 758 Nurture 2 βββΆ 759 Nurture 3 βββΆ 764 Nurture 4
988 App-Signup Welcome ββββββββ (verified: every link wired Β· CUSTOMER BUY β END goal throughout)
AFTER 764 Nurture 4 (Aga's ruling β NO EVERGREEN, the spine ENDS):
βββΆ Shoulder-mobility hand-raise: 2 short emails β "shoulder problems? put your hand up (click)"
ββ CLICKED βββΆ 984 Shoulder Mobility Week (free week, 4 emails β EXISTS)
β βββΆ 985 Shoulder Mobility Course Launch (sell, 11 emails β EXISTS)
ββ NO CLICK βββΆ nothing more. END OF THE CONTACT'S LIFE:
monthly-broadcast eligibility while they still open β
once Inactive: final-goodbye series β backup β unsubscribe-archive (stop paying)
- NO EVERGREEN: 978 TMA 28-Day Challenge β Evergreen is ruled OUT of the lifecycle (task #19 retires it; only 2 people inside).
- 759 Nurture 3 / 764 Nurture 4 show 0 entrants only because nobody has finished a nurture yet β all 43 historical exits from 973/758 were purchases, unsubscribes, or deletions (API-traced).
- Every contact now has a complete life: door β spine β last interest check β goodbye β archive. Nobody pools silently, nobody is billed forever for nothing.
- Industry note (researched 20 Jul): this matches best practice exactly β automated sequences END; engaged non-buyers stay on a LOW-frequency human broadcast rhythm (the industry's "evergreen replacement" β 1β2 curated sends/month, which our plan already has); the life ends on engagement death (no opens after the goodbye test), never on a calendar. Periodic hand-raise offers like the shoulder check are the textbook interest-based reactivation pattern β repeatable later with other topics.
Β§4 Β· Execution β 23 tasks, 4 phases, priority order Β· click a task to unfold it
PHASE 1 β Money now Β· first revenue + first routing
24Fix 976 Cancelled Win-Back's entry triggersAGAββ
DONE 21 Jul 17:27 (screenshot-verified)
What this is The other session's audit proved 976 Cancelled Win-Back has
two auto-triggers that fire too early: the tag "[TMA] Cancelled" and the list "198 Cancelled" are applied when someone
turns renewal OFF β while they are still a paying member (65 of 109 current still-active queue members are already on that list). Since we switched 976 ACTIVE this morning,
every new canceller (~34/week) can enter win-back while still paying β and 976's opening steps strip their Customer status. The win-back should only start at access-END.
The fix, step by step (builder-only β the API cannot edit triggers)
- Aga: β
DONE 21 Jul 17:27 β triggers now exactly: "Tag ROUTE:WinBack is added" + "Tag wb-eligible is added"; the two premature triggers deleted; automation still Active (screenshot-verified).
- Claude: β
DONE β verified zero still-paying members inside 976 and zero foreign entries today (all 33 = our batch). No cleanup needed.
Source: the win-back audit (approval pack `WINBACK-976-REASON-MATCHED-APPROVAL-PACK-2026-07-20.md`); trigger anatomy confirmed by your own screenshot.
Industry practice: win-back is an access-END sequence by definition β mailing "come back" to someone still subscribed both confuses them and destroys the sequence's data.
1R1 cancel-save Segment AAGAββ
DONE β Wave A sent 20 Jul
What this was The board-ordered first send: cancel-save emails to the cancellation queue. Owned in the R1 workstream (not this plan). Wave A sent 20 Jul, machine automated, B/C wave (~30 people) decided at the Wednesday 22 Jul scorecard. Listed here only so it never gets duplicated.
2Annual-offer email series β the 6,050 warm non-customersFLEETAGAAga 15 min + ~20 min setupβ
AGA-APPROVED + VERIFIED IN AC 21 Jul (drafts 4077/4078/4079) β ποΈ SENDS ~MON 28 JUL (promo cooldown)
What needs to be done Send a one-off series of
3 emails to the
6,050 people who open our emails regularly but never bought (customers, cancelled, and anyone mid-welcome/offer removed β exact ID list already saved). The emails pitch the
annual plan ($157) through the free-trial door. No discounts. Expected
~$700β1,500 in the first month (estimate, based on our real 26.5% warm open rates and ~1.5β2.5% click rates).
Industry practice: engaged-only targeting is THE post-2024 Gmail/Yahoo rule β mail the people who open and the whole domain lands in inboxes better; a short 3-email arc with ONE clear offer beats endless drips.
Who does what β the fix, step by step
- Claude: β
DONE (20 Jul night) β written, QA-gated (email-qa found 3Γ REVISE), full revision applied (CTA buttons diversified E1/E2/E3, dark-mode hardened into the builder, tidy-inversion fixed, asides/italics/underlines added, both challenger subject/preview clashes fixed). Viewer open in your browser:
p1-annual-broadcast-jul2026/index.html.
- Aga (15 min): read, redline anything, approve ("emails approved") β no rush: per the recorded post-promo decision (13 Jul, POST-PROMO-PAID-STRATEGY: "2-week promo-fatigue cooldown"), and the July-4 lifetime promo actually closing Sun 12 Jul midnight, the earliest send for this arc = ~Mon 28 Jul morning. Aga raised this herself 21 Jul ("we just hammered people with lifetime") β instinct confirmed by the record. E1 schedules 28 Jul, E2 +3d, E3 +4d.
- Claude: β
CONTENT PUSHED 21 Jul β the 3 emails live on Aga's draft shells: campaigns 4077 (E1) / 4078 (E2) / 4079 (E3), renamed "P1 ANNUAL β E1/E2/E3", subjects+preheaders set, byte-verified, pre-push backup saved. Footer corrected 21 Jul PM per the new NO-manual-address canon + all 3 PASS the new mandatory `email_lint.py`; corrected versions re-pushed & verified. Still DRAFTS β nothing sends.
- Remaining, ~28 Jul: Claude re-checks the 6,050 + applies the audience tag β Aga (~10 min in each draft): pick the tag audience + schedule E1 Mon 28 Jul morning, E2 +3d, E3 +4d.
- Safety: after email 1, Claude reads unsubscribes β under 0.5% β emails 2β3 proceed; over β stop and report.
Missing info: none β audience saved (`p1_audience_ids.json`), Postmaster clean, precedent rates known.
Done when 3 sends complete, revenue attributed on the cockpit email panel.
398 win-backs β 976 Cancelled Win-BackCLAUDEAGAAga: 1-min switch + GO Β· Claude: 30 minβ
FIRED 21 Jul 08:42 β 98/98 confirmed inside 976
What needs to be done 98 cancelled members who still open our emails and never went through win-back enter the existing
976 Cancelled Win-Back sequence (proven 30.2% opens).
Industry practice: win-back recovers 5β12% of dormant contacts at a fraction of new-acquisition cost β cancelled-but-still-reading is the single best reactivation segment there is. Your screenshot showed 976 is currently
switched OFF β that's the only blocker. All 98 re-verified 20 Jul and staged.
Who does what β the fix, step by step
- Aga: β
DONE 21 Jul β 976 switched Active + GO given.
- Claude: β
DONE 21 Jul 08:42 β 98/98 tagged, 0 errors, 98/98 ID-confirmed inside 976. Undo-list:
FIRED_winback98_reversal.json.
- Next: Claude reads results (bounces/complaints/unsubs) ~Thu 23 Jul.
Missing info: none.
Done when 98 entered, results clean.
4967 Lead-Magnet Welcome β test batch of 500CLAUDEAGAresults check ~Thu 23 Julβ
500/500 ENTERED 21 Jul β results check Thu, then waves (#6)
What needs to be done Start feeding the
3,950 verified never-sequenced leads into
967 Lead-Magnet Welcome (your live 8-email welcome, split test running). Because these addresses are old and unproven,
only 500 go first β if a chunk are dead, sending to all at once damages the sender reputation that ALL our email depends on.
Industry practice: a small proving batch before any cold volume is standard list-validation discipline β reputation damage is domain-wide and slow to repair, so cold volume is always earned stepwise.
Who does what β the fix, step by step
- Aga: β
approved 21 Jul.
- Claude: β
DONE 21 Jul β 500 newest entered into 967 via direct add, 0 errors, 500/500 ID-confirmed inside. Undo-list:
FIRED_967test500_reversal.json. Email 1 sends automatically.
- Claude (after 48β72h): reads results β bounces <2%, complaints <0.1%, unsubscribes <0.5% β clean = task #6 releases the rest; dirty = full stop + report.
Missing info: none for the test batch. Before the FULL release (#6): nothing further β the test batch IS the missing information.
Done when 500 in, results read, written verdict.
5238 warm old-nurture finishers β 758 Nurture 2CLAUDEAGAClaude 20 min Β· Aga 2-min GOβ
FIRED 21 Jul 08:42 β 238/238 confirmed inside 758
What needs to be done 238 people who finished the old Nurture 1 years ago, got nothing since, and STILL open our emails enter
758 Nurture 2 and continue down the spine like everyone else. Proven openers, active sequence, zero build.
Industry practice: recent engagement is the #1 routing signal β proven openers can be moved in bulk safely.
Who does what β the fix, step by step
- Claude: β
DONE 21 Jul 08:42 β all 238 re-verified clean, tagged ROUTE:Nurture2, 0 errors, 238/238 ID-confirmed inside 758. Undo-list:
FIRED_warm238_reversal.json.
- Next: results read ~Thu 23 Jul (same gate as tasks 3β4).
Missing info: none.
Done when 238 entered, results clean.
PHASE 2 β Fill the spine Β· every routable person circulating
6967 β release the remaining ~3,450 in daily wavesCLAUDE~4 send-days, checks between eachβΈ WAVES HELD 23 Jul β 967 test unsub 1.07% tripped the 0.5% gate (bounces 0.18%, opens 21.5% healthy); re-read ~Mon 27 after the 500 mature + Postmaster complaints glance; option on clean complaints: resume at 750/day
What needs to be done After the 500-person test batch (#4) comes back clean, the remaining
~3,450 enter 967 Lead-Magnet Welcome at max
1,500/day.
Industry practice: gradual volume ramping with results checks between waves is what mailbox providers expect β sudden spikes read as spammer behaviour.
The fix, step by step
- Claude, each morning: check yesterday's results first (any breach = automatic full stop + report) β enter the next 1,500 (undo-list per batch).
- Aga: nothing, unless a stop triggers.
Missing info: none once #4's verdict is written.
72,608 unknown-temperature finishers β 979 Re-EngagementCLAUDEAGAClaude 30 min Β· Aga 2-min approvalOPEN β waits for #9
What needs to be done The other
2,608 old-nurture finishers have no engagement tag β we don't know if they still read. They get the "are you still there?" sequence β
979 Re-Engagement β 500-person test batch first, then daily waves. Non-responders queue for end-of-life (#15).
Industry practice: one structured re-engagement attempt before suppression is the standard sunset ladder β never suppress without the attempt, never keep mailing after it fails.
The fix, step by step
- Timing: waits until your held 7,629 (#9) finish flowing through 979 so the sequence isn't double-loaded.
- Aga: approve (2 min).
- Claude: 500 first β 48β72h results β waves of 1,500/day, undo-lists throughout.
Missing info: the finish date of your held-group release (#9) β tell me when the last wave goes and #7 schedules itself behind it.
8Build 976b β reason-matched win-back for the 491FLEETAGAClaude 2h Β· Aga 15-min review + 20-min buildOPEN
What needs to be done 491 cancelled-but-still-opening members already used 976 once (AC lets a person enter an automation only once), so they need a new automation β
"976b" β with fresh emails. Copy is
matched to their stated cancellation reason from the exit survey: price-churned β the $9.99 angle Β· "wasn't using it" β restart-small Β· injury β recovery-first.
Industry practice: reason-segmented win-back consistently outperforms generic β matching the offer to the stated cancellation reason is the highest-lift personalisation in retention email.
~$250β500 MRR [estimate].
Check-first result β UPDATED 21 Jul: much of this is now BUILT (other session). Reason-matched machinery exists: `wb_tag.py` tags every unsaved expiry with `wb-eligible` + `wb-reason-{price|notusing|injury|other}` Β· reason-conditional copy blocks proposed in the approval pack (`docs/company/ANALYTICS/WINBACK-976-REASON-MATCHED-APPROVAL-PACK-2026-07-20.md`) Β· WTP analysis validates the $9.99 price angle (`TMA-WTP-EXIT-SURVEY-ANALYSIS-2026-07-20.md`). THIS task now = the HISTORICAL 491 only; the go-forward reason-matched flow rides the approval pack. Coordinate: same reason segments, same blocks, one 976b build serves both. Remaining: blocks through fleet gates + dedicated WB999 offer link (never /30trial/ β attribution).
Reason-coverage computed 22 Jul: only 10 of the 491 have a survey reason on file (2 price Β· 2 not-using Β· 6 other Β· 481 none) β the 491 get ONE general-angle arc; reason-matched blocks serve the go-forward wb-eligible flow (R1 queue reasons known). Segments file: `wb491_reason_segments.json`.
The fix, step by step
- Claude: splits the 491 by exit-survey reason; fleet writes the 3-email arc per segment; opens rendered emails for you.
- Aga (15 min): review + approve.
- Aga (20 min, guided click-by-click): clone 976's structure β new automation "976b Win-Back Round 2" β paste the emails β single trigger = new tag
ROUTE:WinBack2 (Runs Once) β same customer-exit goal β Active.
- Claude: tags the 491 β entered check β 48h results; hard stop at 0.1% complaints.
Missing info: exit-survey reason coverage β how many of the 491 actually have a stated reason on file (Claude computes during step 1; those without get the general-angle version).
9Held 7,629 β 979 Re-Engagement (release completes)AGA~5 send-daysAGA'S LANE
What this is The June reactivation's unsent tail β pulled out of 979 Re-Engagement on 23 Jun, never released. You run this (max 1,500/day; tooling: throttle_979_23jun.py release-next). Zero ID overlap with anything in this plan; #7 queues behind it.
Missing info for the plan: your finish date (unblocks #7 and #15).
PHASE 3 β Build the defenses Β· stop the bleed, fix the front door
10Renewal protection emails (the missing sequence)FLEETAGAAga: 5-min spec nodβ
SPEC DONE 22 Jul β SPEC_10_renewal_arc.md; Stripe timing VERIFIED, ~134 renewals next 45d, 71% of failed $ = annual
What needs to be done We lose ~34 subscribers/week and have
no email sequence protecting renewals ($7,912/mo book). Build one: value-reminder emails before renewal dates.
Industry practice: subscription operators treat the renewal window as a lifecycle moment with its own sequence, never silence β pre-renewal value reminders reduce both cancellations and refunds/chargebacks.
~$150β300/mo defended [estimate at 10% churn reduction].
Check-first result Searched AC 20 Jul: only one unrelated match (a 28-day-challenge email) β a renewal arc genuinely does not exist. β allowed to write.
β‘ Overnight #5 tie-in (21 Jul, Stripe analysis) 71% of failed Β£ is annual plans and
67% of failures are debit/prepaid cards (92% generic issuer declines β NOT fixable card-data errors). So this sequence should carry a
pre-renewal "is your card up to date?" nudge aimed at ANNUAL renewers β the only lever that PREVENTS these failures (Stripe's retry/updater config is already maxed). This makes #10 worth more than its churn-reduction estimate alone, and is the real payoff of the #5 diagnosis.
The fix, step by step
- Claude: spec (who, when relative to renewal date, what each email says) + collision check against the existing checkout day-5 and pre-renewal reminders so nobody gets doubles β fleet writes β rendered for you.
- Aga: review + approve β build from click-by-click β Active.
Missing info β PARTIALLY RESOLVED 20 Jul: AC has NO renewal-date field (field inventory checked; nearest: 41 trial_started Β· 46 Plan Name). The arc therefore times off purchase-date + plan length, or needs a small StripeβAC date sync (possibly Nic) β decided at spec stage.
11750 Quiz Welcome β inbox-placement fixCLAUDE~1h leftAUTH AUDIT β
PASSED β placement test + A/B next
What needs to be done The quiz welcome's first email opens at only 18β20%. Update 20 Jul evening: the authentication audit is DONE and healthy β SPF includes AC β, domain-aligned DKIM found (acdkim1/acdkim2) β, strict DMARC satisfied β. So the remaining suspects are Promotions-tab placement and content signals, not infrastructure. Remaining work: seed-inbox placement test (which tab does E1 actually land in?) β subject-line challengers (already planned) β A/B the ALREADY-WRITTEN 7-email rebuild (Memorial Day doc, QUIZ WELCOME tab) against the current 750. Only then does the rebuild ship. Industry practice: since the 2024 Gmail/Yahoo bulk-sender rules, aligned SPF/DKIM/DMARC + one-click unsubscribe are mandatory table stakes β placement gets fixed at the infrastructure layer before copy is ever the answer.
Who All Claude; DNS changes may need Nic; you get a findings report.
Missing info: none to start.
12982 Lifetime Upgrade β pull the genuine leads only (Thu 23 Jul)CLAUDEAGAThu AM w/ R1 B/CSCHEDULED THU 23 JUL β keep customers + keep 982 paused; remove genuine-lead residue only
β CANCELLED 22 Jul β Aga correction (this was based on two wrong assumptions) Lifetime is NOT banned β it's a live product;
982 is an UPGRADE automation Aga deliberately PAUSED during the post-lifetime-promo cooldown (don't pitch full-price lifetime right after a massive lifetime promo). She'll reactivate it.
The 845 inside are CUSTOMERS (as an upgrade automation should be) β Claude's "541 non-customers" split was WRONG: it filtered list-status=1 only, missing customers who are on the Current-Customers list but unsubscribed-from-mailings (sample: 16/40 alleged non-customers were on CURRENT CUSTOMERS, 6/40 on Failed-Transactions).
Do NOT remove, route, or archive anyone. Leave 982 exactly as-is. Lesson: never classify "customer" by a single list at status=1; use a reliable signal (Stripe sub / customer list at ANY status).
The fix, step by step
- Thu 23 Jul plan: β classify all 845 PER-CONTACT (bulk AC list-pull under-counts customers β phantom "non-customers"; only per-contact `contactLists` is authoritative β run in batches, it's ~845 calls) β‘ keep every customer in place β’ pull ONLY the verified genuine never-customer leads β route to 973 Nurture 1 (safety-pass cancelledβwin-back / already-in-sequenceβskip) β£ keep 982 paused β do NOT archive (lifetime not banned, Aga reactivates later) β€ report how the leads entered (trigger) so it stops. Undo-list saved; propose-only.
Missing info: none.
13End-of-life wiring: 764 Nurture 4 β shoulder hand-raise β goodbyeAGAFLEETAga 1-min screenshot + ~20-min build Β· Claude 2hOPEN β 764 ending CONFIRMED 21 Jul (ends dead)
What needs to be done Your ruling:
no evergreen β after 764 Nurture 4 the spine ENDS, and the contact's life gets a real ending. The last play is the
shoulder-mobility interest check: 2 short emails β "shoulder problems? put your hand up (click)".
Clickers β
984 Shoulder Mobility Week (free week β EXISTS, 4 emails) β
985 Shoulder Mobility Course Launch (the sell β EXISTS, 11 emails, historically sent to ~13K).
Non-clickers β nothing more: monthly-broadcast eligibility while they still open; once Inactive β final-goodbye β archive (#15).
The fix, step by step
- Aga: β
DONE 21 Jul β screenshotted; 764 just ENDS (no wait, no tag, no hand-off β dead end). That's the attach-point. Reassuring: 764 shows 0 entrants today (June cohorts haven't reached the end yet), so we wire the ending before anyone hits it.
- Claude: reviews the 84 existing shoulder campaigns for a usable hand-raise email; if none, the fleet writes the 2 short hand-raise emails (they're tiny). Also verifies 984 + 985's content is current (prices, links) before anything enters them.
- Aga: review the 2 emails + approve.
- Aga (guided, ~20 min): in the builder: 764's end β enter "Shoulder Hand-Raise" (new 2-email mini-automation) β link-click trigger puts clickers into 984 β 984's end enters 985 (check it already does) β non-clickers exit to nothing.
Missing info: β 764's current ending β
RESOLVED 21 Jul (ends dead) Β· β‘ whether a hand-raise email already exists among the 84 shoulder campaigns (Claude checks) Β· β’ whether 984's end already chains into 985 (check in builder).
Done when The full life is wired: door β spine β hand-raise β free week β course sale β goodbye. Nobody pools, ever again.
Industry practice: interest-based hand-raise reactivation (click-to-segment) is the textbook way to end a lifecycle β buyers self-select, everyone else feels zero pressure.
20Paywall/quiz-abandoner precision sequence (wire the dead 756/757)CLAUDEAGAnext: 1 Nic PI-metadata task β Aga activatesβ
BUILT 22β23 Jul β 756/757 "Part 1 & Part 2 β Abandoned Cart Reminder" wired as split tests (trigger = Subscription Cart Abandoned tag; excludes current + lifetime customers; buy-and-exit goals; Part 1 hands to Part 2). 3 recovery emails E1/E2/E3 written + refreshed to PASS email_lint Γ3; CTAs use %ABANDONED_CHECKOUT_URL%; AC custom field "Abandoned Checkout URL" (field id 56) created. β ONE blocker = a single Nic backend task (PI metadata + hourly reconcile β no n8n, no webhook change). Nic brief LIVE: tma-cart-abandon-brief.netlify.app Β· sizing β $200β350/mo
What needs to be done The funnel's named leak: people who reach the subscription checkout, give their email, and leave without paying β the highest-intent non-buyers on the whole list.
756/757 "Part 1 & Part 2 β Abandoned Cart Reminder" exist in AC but have NEVER run β 0 entered ever; the trigger was never wired. The fix is precision, not net-new.
Who does what β the fix, step by step
- β
Aga/Claude (DONE): 756/757 wired as split tests off the Subscription Cart Abandoned tag β excludes current + lifetime customers, buy-and-exit goals, Part 1 hands to Part 2.
- β
Email fleet (DONE): 3 recovery emails E1/E2/E3 written + refreshed to PASS
email_lint Γ3; CTAs use the %ABANDONED_CHECKOUT_URL% merge tag; the AC custom field "Abandoned Checkout URL" (field id 56) is created.
- β Nic β the ONLY blocker (one backend task, no n8n, no webhook change): the live checkouts run on Stripe PaymentIntents / Payment Element, NOT hosted Checkout Sessions β so
checkout.session.expired will never fire (that approach is dead). Plan: write buyer_email + offer + plan onto the PaymentIntent metadata on email-field blur; an hourly reconcile script finds PaymentIntents stuck >2h with a buyer_email that never paid β applies the Subscription Cart Abandoned tag + stamps field 56 (Abandoned Checkout URL) β skips existing customers. Full brief LIVE: tma-cart-abandon-brief.netlify.app β.
- Aga: activate once the tag starts flowing.
β
Quiz write-back false alarm CLEARED (23 Jul): the "quiz finished-stage write-back stalled ~mid-Jul" flag was a FALSE ALARM β the AC lists "Started the Quiz" (202) / "Finished the Quiz" (200) / tag 242 are DISCONTINUED, not broken. Live quizβAC write-back is HEALTHY: quiz users land in Stage 1 (Input Email) + Stage 2 (Registered in APP) + .TMA LEAD [APP+QUIZ] and enter 750 (TMA | Welcome Sequence After Quiz) β proven by a live contact 23 Jul. Sizing: realistic incremental win β $200β350/mo (the automations were ACTIVE-but-dead β 0 entered ever β precision, not net-new; this is the quiz-writeback win, separate from the dunning/payment-recovery topic).
Industry practice: abandonment emails sent within 24h are among the highest-converting lifecycle messages that exist β these are the highest-intent non-buyers on the entire list, and almost every serious subscription funnel runs this sequence.
21Dunning (failed-payment) coverage β DIAGNOSEDCLAUDEAga: 5-min Stripe toggleβ
ADJUDICATED 23 Jul β dispute settled by matured June cohort (dunning_adjudication_june_cohort.json): 22 renewal invoices failed β₯1 attempt, $1,666 at risk β recovered 4/$110 = 18.2% by count, 6.6% BY VALUE; $1,132 uncollectible (68%); $424 still open. Decision rule (recovery<25% by value AND write-off>$400/mo) β BUILD verdict β β
BUILT 23 Jul as the R1-style PERSONAL rail (NOT an AC automation β Aga's architecture question, analysis: Primary-inbox placement, ~1 fail/day volume, proven reply behaviour, reuses the R1 machine): `tools/retention/payment_recovery_lane.py` β sibling of r1_daily.py, zero R1 edits; 3 plain-text Jesse touches (day 1/4/8) w/ the Stripe portal login link; stale cases get one final note; auto-exit on payment; suppression + R1-queue collision guards; test accounts excluded. OPERATING MODEL (Aga's choice 23 Jul): MANUAL-SEND β launchd com.tma.paymentrecovery ARMED in drafts-only mode (daily 05:50); Aga reviews + sends from hello@ each morning (most days 0β2 drafts). 18 first drafts waiting now. ~$160-320/mo [MODELLED]. R1/voluntary stays lever #1.
What this was Verify failed-payment ("involuntary churn") coverage across rails before building anything.
β
DIAGNOSED 21 Jul direct from Stripe (Billing β Revenue recovery, 12-mo window Aug 2025βJul 2026). Proof: proof/stripe-revenue-recovery-2026-07-21/.
The verdict β the leak is REAL but already ~β
plugged
- Stripe recovery is fully ON: Smart Retries (card + ACH) Β· recovery emails (payment-failed, bank-debit-failed, card-expiring) Β· auto card-updater. After all retries fail β cancel subscription + mark invoice uncollectible. No custom Automations flow (defaults β fine).
- ProfitWell Retain = OFF β Aga switched it off on earlier advice; CONFIRMED correct (Stripe native does the same job without Retain's cut; no gap created).
- Numbers (Stripe web rail, 12 mo): 222 failed payments Β· Β£12,387 failed Β· Β£3,750 recovered Β· 30.3% recovery (trending DOWN to ~20%); 22.4% first-attempt failure rate. Per month β 18β19 fail β 5β6 recover β ~13 churn out β Β£720/mo lost (~$960/mo). ~9β15% of total churn (matches the industry involuntary-churn rule β real, but voluntary cancels/R1 are the bigger driver).
- Insufficient funds = 48% of failures (107/222) β the MOST recoverable (a timing problem, recovers on next payday).
- By rail: Stripe = web (card+ACH, above) = the one lever we control Β· PayPal = own recovery, UNCHECKED Β· Apple/Google = own dunning via RevenueCat, not our lever.
Honest correction to the $15K doc Its "$580β1,160/mo" estimate for this was
wrong β it assumed nothing was running (config was already optimal). The clean matured June cohort then refuted "no lever" for renewal dollars: recovery only
6.6% by value ($1,132 / 68% uncollectible; ~$644β1,288/mo written off). The realistic recovery win is the built
payment-recovery personal rail β $160β320/mo [MODELLED] β a manual outreach lever, not a config setting.
Verdict: config optimal (no toggle) β recovery lever = the built payment-recovery personal rail (ADJUDICATED 23 Jul)
- Retry schedule = Smart Retries, 4Γ within 1 MONTH (screenshot verified β
proof/β¦/05-retries-MANAGE-smart-4x-1month.png) β already Stripe's max window + ML-timed. The earlier "extend the window" idea is MOOT β nothing to extend.
- AC collision check β
DONE (API 21 Jul): list 157 "[TMA] LEADS - FAILED TRANSACTIONS RECOVERY" holds 551 contacts but feeds NO automation (0 of 32 automations is a dunning flow). No colliding second layer β Stripe is the sole dunning. The idea of building an AC ladder off list 157 is RETIRED β list 157 stays an audit log only; the recovery lever is the built payment-recovery personal rail (23 Jul), not an AC automation. (The 551 are a dormant bucket; if still cancelled they get caught by win-back.)
- Custom Stripe "Automations" flow = NOT worth it (Aga asked 21 Jul) β that feature is team-notifications/bespoke logic on top of recovery you already have; pointless for a 2-person team, adds maintenance surface.
- Only remaining thread (a look, not a toggle): the 22.4% first-attempt failure rate is high β worth a later diagnostic (card quality / older demographic / renewal-attempt timing / a segment of dead cards). Aga flagged she wants to look into it.
Nothing left to configure at the Stripe layer. The recovery lever is the built payment-recovery personal rail (manual-send, LIVE 23 Jul, lever #2); the bigger churn driver remains voluntary cancels (R1 save flow, lever #1).
Industry practice: dunning is the cheapest churn lever in subscription β pre-dunning + smart retries + a short recovery ladder; well-run dunning recovers 20β40%. Our config already runs all of that (Smart Retries at Stripe's 4Γ/1mo max β nothing to widen); the matured-cohort truth for us is recovery ~6.6% by value, so the incremental lever is the personal outreach rail, not a config change.
22Trial-starter conversion coverage β map the dark spotCLAUDENic: 2 eventsβ
AUDIT DONE 22 Jul β AUDIT_22; trialists ARE covered (975 Onboarding via TMA_plan_* tag, E1 ~48% opens); π΄ trial-CANCEL/expiry = the dark event (cancelled trialists keep getting onboarding); Nic ask: RevenueCat trial_cancelled/expiration β AC tags; bug: 975/986 double-entry found
What needs to be done People who start the 7-day app trial β what emails do they actually get? Today: unclear. The trial meter is broken (known), Intercom owns push, list 199 APP SIGNED_UP has 0 people, and 988 App-Signup Welcome covers pre-trial signups only. This audit maps every touchpoint a trial-starter receives across AC / Intercom / RevenueCat, names the dark spots, and proposes the minimal email backup IF trial events are reachable in AC.
Who Claude audits + coordinates with the Intercom workstream (no channel collisions); you get a coverage map + proposal only if there's a gap worth filling.
Missing info: whether trial-start/expiry events reach AC at all (likely Intercom/RevenueCat-only today β that itself is the finding). β
Audit 21 Jul: list 199 APP SIGNED_UP = 0 people β trial tracking IS dark in AC (Intercom/RC only); 988 App-Signup Welcome has 132. Confirmed the gap.
Industry practice: the trial-to-paid sequence is the single highest-leverage lifecycle sequence in subscription β even one well-timed value email inside a 7-day trial measurably moves conversion. Running trials in silence is the most expensive gap a subscription business can have.
19978 TMA 28-Day Challenge β Evergreen: β
KEEP (Aga ruling 23 Jul)βRETIREMENT CANCELLED β Aga: keep live, use as LEAD MAGNET; her "no evergreen" ruling was ONLY about the lifecycle END (spine β shoulder hand-raise, no forced loop) β never a ban on opt-in challenges. Industry: opt-in evergreen courses = standard best practice; only FORCED recycling of non-converters is the anti-pattern. Opportunity noted: 16 finished emails, no front door β future lead-magnet wiring.
What needs to be done Your ruling: no evergreen in the lifecycle. 978 is active with only 2 people ever inside (β
confirmed 21 Jul: entered=2). Claude exits the 2 (undo-list), Aga switches it Inactive. Its 16 emails stay in AC as assets (check-first law β never delete content). Industry practice: automated evergreen loops to non-converters depress engagement and teach mailbox providers your mail is ignorable β curated monthly broadcasts replace them.
Missing info: none.
PHASE 4 β Shrink to a healthy list Β· after the held group finishes
14Archive batch 1 β bounced & already-suppressedCLAUDEAGAClaude 30 min Β· Aga 2-min approvalOPEN
What needs to be done The provably dead β hard-bounced and already-suppressed contacts β get the suppression-archive: full CSV backup β unsubscribe from all lists (records kept, recoverable) β this lifts them off the mailable list for deliverability / sender reputation, NOT billing (the AC bill is locked till Apr 2027 β see Β§1b; archiving saves $0). No deletion needed. Industry practice: suppress, don't delete β suppression gives 100% of the deliverability benefit while keeping the records and their retargeting value.
The fix Claude builds the exact list + exports backup + states the deliverability impact (no billing saving β tier locked, see Β§1b) β Aga approves β Claude executes β counts confirmed.
β 22 Jul: no billing saving exists β AC is Commit-Annually LOCKED till 9 Apr 2027 + downgrade loses the discount (50K = $840 > $761). This archive batch is justified by deliverability only, not cost. Reframe #14/#15 accordingly; no 6 Aug clock.
15The final goodbye β archive the truly dead (~8β15K)CLAUDEAGAClaude 1h Β· Aga 5-min approval (Γ2)OPEN β after #9
What needs to be done Everyone Inactive whom no play revived gets one last chance β the
977 Sunset series (3 short "do you still want these?" emails) β then non-responders get the suppression-archive (backup β unsubscribe-from-all-lists). Expected: the paid list shrinks by
~8β15K, reputation strengthens, and every remaining contact is someone who actually reads (deliverability only β no billing change; the AC tier is locked till Apr 2027, see Β§1b).
Industry practice: the 3β6-month disengagement threshold + a short goodbye series before suppression IS the standard sunset policy β and only ~24% of senders have one at all; running it puts TMA in the top quartile of list operators.
The fix, step by step
- Waits for your held group (#9) to finish.
- Claude: builds the list (Inactive minus revived minus customers/cancelled-recent), proposes with counts + the deliverability rationale.
- Aga: approve β Claude feeds 977 Sunset in daily waves.
- 30 days later: Claude backups + proposes the final archive list β Aga approves β executed.
- Bonus (industry practice β archive, never delete): the archived file goes to the paid team as a Meta custom audience (cheap retargeting reaches dormant people in a different channel) and as exclusion audiences (stop paying to show ads to dead leads and current customers). Suppressed emails keep real value; deleted ones are gone forever.
Inactive window = 58 days no-engagement (4 signals). β 22 Jul: archiving saves $0 (AC locked till 9 Apr 2027; downgrade loses discount). So the 977 Sunset β archive is a deliverability play only. Still open: #9's finish date. No billing deadline.
16Doc truth pass β kill "22,885" everywhereCLAUDE20 minOPEN
What this is The 15K operating doc + Conversion TODO still carry the debunked "22,885 cold lead-magnet backlog". Claude replaces it with the verified numbers via estate-sync so no future session plans against a phantom.
17Make email revenue visible in Stripe (light the dark rail)CLAUDE2h (+Nic if needed)OPEN
What this is We can't fully prove which sales came from which email on the native app, so email revenue is partly estimated. This enforces link-tagging on every email + a small job matching email clicks to Stripe payments. After it, "email made $X" is a fact.
18Email scoreboard β built INTO the growth cockpitCLAUDEautomatic dailyβ
DONE 22 Jul β email_status.json + email_cockpit_sync.py + EMAILSYNC block + daily-job step 0d; live: 8,180 engaged Β· 18,696 in loops
What this is A 4-number email panel added to your existing growth cockpit (tma-growth-cockpit-2026), NOT a separate page: email revenue Β· reachable engaged list Β· list health Β· % of contacts in a loop. Built in the shared sandbox tree, non-marker regions, wired into the daily refresh_cockpit_daily.py job.
23Monthly broadcast rhythm β institutionalizedFLEETAGArecurring: Claude preps Β· Aga 10 min/sendOPEN β NEW (the evergreen replacement)
What needs to be done The permanent rail that replaces evergreen: 1β2 curated, human-approved sends per month to everyone still Engaged β value + one offer, angle-rotated so nothing saturates. This is where long-cycle buyers convert (people often buy 6β18 months after joining the list) and where future hand-raise offers (like the shoulder check) run for other topics.
The fix After the P1 series (#2) completes, Claude proposes each month's 1β2 sends as normal packets (fleet-written, gated, rendered) β you approve in ~10 min each β results land on the cockpit email panel automatically.
Missing info: none.
Industry practice: consistent moderate volume to engaged segments beats bursts β and complete silence decays sender reputation almost as much as blasting does. The engaged monthly rhythm IS how professional list operators keep the asset warm without automated loops.
Β§5 Β· The laws this plan runs under
EVERY send, automation switch-on, bulk entry, and archive/deletion is PROPOSE-ONLY to Aga β in writing, no exceptions. A proposal always carries: the exact audience + count (re-checked live) Β· the safety plan (test batch of ~500 first for anything cold, max 1,500/day, results checks, stop conditions) Β· the skeptic's verification Β· expected revenue labelled fact vs estimate.
CHECK-FIRST: no new sequence or email is written until ActiveCampaign has been searched for an existing one (Aga's law, proven same day by the shoulder funnel).
NOT doing: no lifetime offers ever Β· no evergreen (978 retired) Β· no mass-send to the 30,816 Β· no touching R1 or the held 7,629 (Aga's lanes) Β· no discount-led broadcasts Β· no deletion of email CONTENT, ever (archive automations, keep the emails) Β· no new email platform.
Team & gates: tma-email-lead (owner) Β· architect Β· deliverability (can block any send) Β· revenue-analyst Β· skeptic (nothing reaches Aga unverified). All copy through /email-fleet. Automations always number + name. No jargon in Aga-facing docs.
Β§5b Β· Adjacent work owned OUTSIDE this plan (do not duplicate)
Β§6 Β· Aga's to-do β everything that needs YOU, in order
- β
Switch on 976 Cancelled Win-Back + GO β DONE 21 Jul, both batches fired & confirmed
- β
Yes to #4 β the 967 test batch of 500 β DONE 21 Jul, 500/500 in
- β
Task #24 β 976 trigger fix β DONE 21 Jul 17:27
- β Review the 3 annual-offer emails (#2) at your leisure β send window opens ~Mon 28 Jul (2-week promo cooldown, recorded decision); approve any day this week β scheduling setup then
- β
Three 1-minute screenshots: 764 ending Β· 754/755 Inactive window Β· Settings β Billing β DONE 21 Jul. Findings: 764 ends dead (#13 attach-point) Β· "dead" = 58 days silent across 4 signals Β· AC = Pro 100K $761.14/mo, only 52,131 active.
- β
AC billing / archive-to-50K β ANSWERED 22 Jul: DEAD. Commit-Annually LOCKED till 9 Apr 2027; downgrade loses discount β 50K = $840/mo (MORE than $761). Archiving saves $0. Sunset only for deliverability. Nothing for Aga to do here.
- β
Stripe involuntary-churn (#21) β DIAGNOSED 21 Jul + BUILT 23 Jul: config optimal (no toggle); the payment-recovery personal rail is LIVE. Ongoing Aga action = review + send 0β2 drafts from hello@ each morning (first sends Thu 24 Jul). Real churn lever = voluntary cancels (R1, lever #1); this rail = lever #2. Later thread: look into the 22.4% first-attempt failure rate.
- β Review 976b emails (#8) + renewal emails (#10) when rendered β ~20-min guided builds
- β Approve:
#12 (982 clean-up β CANCELLED 22 Jul, leave 982 alone) Β· #19 (retire 978 Evergreen) Β· #14/#15 archives when proposed
- β Read the three verification reports when they land: #20 abandoner coverage Β· #21 dunning Β· #22 trial coverage (10 min total)
- β One ruling: AWOS carve-out for the #8/#10/#13 builds as estate repair (2 min)
- β Tell me the finish date of your held-group release (unblocks #7 and #15)
Β§7 Β· Expected outcome (β6 weeks out)
- ~$1,100β2,500/mo new + ~$150β300/mo defended [estimates β email alone doesn't close the $4K MRR gap; it builds the repeatable rail and stops the leaks] + the shoulder-course revenue lane wired for every future spine-finisher
- Every living contact in exactly one loop with a designed END Β· ~8β15K dead contacts sunset for deliverability (no billing change β AC tier locked till Apr 2027) Β· stronger sender reputation
- New leads route themselves forever: three doors β four nurtures β hand-raise β free week β course β goodbye
- The email panel lives in the growth cockpit and updates itself daily
Β§7b Β· CONTINUITY β if the chat is lost, nothing is lost
Everything needed to continue lives ON DISK, chat-independent, at operations/email-audit-agent/plan2026-07/:
- `thursday_gate.py` β the Thursday results check + wave release, self-documented. Any session (or Aga in Terminal) runs:
python3 thursday_gate.py check β glance at Postmaster β python3 thursday_gate.py release --confirm-gate-passed --commit once per day until the pool empties. It refuses to release without the gate attestation, skips anyone already inside, and saves an undo-list per wave.
- All audience ID files + undo-lists (wave pool 3,450 Β· the 2,608 for 979 Re-Engagement Β· all FIRED reversals Β· the P1 audience 6,050 Β· win-back 589 Β· shell backup) β copied out of the temp scratchpad into this folder.
- This doc = the task list + statuses; memory (`email_plan_first_sends_fired_2026-07-21` + `email_founding_strategy_2026-07-20`) = the narrative. A fresh chat reads: this doc β that folder β memory, and continues.
- P1 emails = campaigns 4077/4078/4079 in AC itself (drafts) + the builder-of-truth in `marketing/email-sequences/p1-annual-broadcast-jul2026/`.
Β§8 Β· Provenance β scripts & ID files (session scratchpad, 20 Jul 2026)
audit_leadmagnet_22885.py / audit_lead_population.py β lead_population_ids.json (12,770 gate-eligible; 4,300 never-sequenced β 3,950 after lane dedupe)
ac_estate_audit.py β ac_estate_result.json (52,131 / 21,315 / 30,816 + full automation inventory)
derive_deadender_pool.py β deadender_pool_ids.json (2,875: 238 warm / 2,608 unknown)
derive_winback2_pool.py β winback2_ids.json (589: 491 / 98) Β· staged: STAGED_winback98_batch.json + STAGED_warm238_batch.json
derive_p1_audience.py β p1_audience_ids.json (6,050 standard / 1,766 strict)
- Held group:
operations/email-audit-agent/reactivation/data/held_979_23jun.json (7,629; zero overlap with all pools)
- Structure: Aga's builder screenshots 20 Jul (750/967/988/973/758/759 endings Β· 976 triggers) Β· shoulder assets: 984 = 4 emails, 985 = 11 emails, ~13K historical sends Β· AC billing research: AC Help Center (legacy accounts billed on active contacts only)
- 21 Jul fires:
FIRED_winback98_reversal.json Β· FIRED_warm238_reversal.json Β· FIRED_967test500_reversal.json (all ID-verified inside their sequences 08:42β09:00) Β· staged for waves: STAGED_967_waves_3450.json Β· STAGED_979_unknown2608.json
- Auth audit 20 Jul: SPF (spf.acemsb4.com in root) Β· DKIM acdkim1/acdkim2 CNAMEs β acems1.com Β· DMARC p=reject satisfied Β· P1 arc:
p1-annual-broadcast-jul2026/ (builder + QA verdict + revision log in STATUS.md)