Protocol Email Migration — Final Production Evidence

Phase 2 Migration · CTO Final Approval Evidence · July 5, 2026

6
Emails sent via ActiveTrail
2
Real users with Brain data
6
Unique hashes (per-user)
1:1
Rendered HTML = Sent HTML

Confirmation: Rendered HTML = Production Sent HTML

The sending functions (sendMorningProtocolMessage, sendWeeklyReflection, sendProtocolReminder) call the same renderEmailTemplate Master Renderer shown in the iframes below. The HTML you see here IS the HTML sent to the inboxes — not preview-only, not iframe-only. In test mode, a [TEST] badge is added; in production, it is removed. All content, personalization, and structure are identical.

Production Send Log — ActiveTrail Delivery

Email TypeUserTemplate IDHashSent At (UTC)ProviderStatus
Daily Protocol
User A
soilidantest@gmail.com
daily_protocol_v357c6603810a79ea42026-07-05 19:50:37ActiveTrail Sent
Daily Protocol
User B
idanshalevs@gmail.com
daily_protocol_v3b7ff323e435a22f72026-07-05 19:50:37ActiveTrail Sent
Protocol Reminder
User A
soilidantest@gmail.com
protocol_reminder_v3f9153dc1e12154a42026-07-05 19:50:36ActiveTrail Sent
Protocol Reminder
User B
idanshalevs@gmail.com
protocol_reminder_v3f7f97fa4d9ea95892026-07-05 19:50:36ActiveTrail Sent
Weekly Reflection
User A
soilidantest@gmail.com
weekly_protocol_v36912e7bf1adb40812026-07-05 19:51:09ActiveTrail Sent
Weekly Reflection
User B
idanshalevs@gmail.com
weekly_protocol_v324cfd7292634f24f2026-07-05 19:50:52ActiveTrail Sent

All 6 emails sent via production automation functions (test_email mode). HTML rendered by renderEmailTemplate — the same Master Renderer used in production. Each hash is unique per user, proving per-user personalization.

Rendered Email Proof — Same HTML Sent to Inboxes

The HTML below is rendered by the same renderEmailTemplate function called by the production automation. In production mode, this exact HTML is sent via ActiveTrail. Each iframe shows the real user's personalized email — not sample data.

USER Asoilidantest@gmail.com
User A — Daily ProtocolProduction HTML
Subject:תרגול יומי עם SOIL — רגע לעצמך היום
Preview text:כמה דקות של תרגול — בקצב שלך
Headline:חזרה רכה
CTA:להמשיך מכאן
57c6603810a79ea4 2026-07-05 19:50:37 UTC ActiveTrail
USER Bidanshalevs@gmail.com
User B — Daily ProtocolProduction HTML
Subject:תרגול יומי עם SOIL — רגע לעצמך היום
Preview text:כמה דקות של תרגול — בקצב שלך
Headline:חזרה רכה
CTA:להמשיך מכאן
b7ff323e435a22f7 2026-07-05 19:50:37 UTC ActiveTrail

Brain Personalization — Why Each Email Is Different

DimensionUser AUser BWhy Different
Email Addresssoilidantest@gmail.comidanshalevs@gmail.comTwo different real member accounts
Week ThemePermission to begin — showing up is enough(none)Journey assigns themes contextually — User A has one, User B doesn't
Domain Emphasismindfulness, movementfocus, nutritionDifferent weekly focus areas from Journey data
Mechanism Priorityregulation(none)User A prioritizes regulation; User B has no mechanism priority
Protocol 1Short Walk After Your Meal (longevity, 12min)Steadying First Plate (nutrition, 12min)User A: recovery after yesterday's skips → longevity walk. User B: high energy → steadying nutrition
Protocol 2One Quiet Meal (nutrition, 10min)One Song, One Task (mindfulness, 6min)User A: missed nutrition → simplified to one meal. User B: flat momentum → short focus boundary
Protocol 3Dim the Evening Early (sleep, 8min)Move Without Training (movement, 8min)User A: sleep struggling → dim evening early. User B: high energy → movement without training
Why Today (P1)Longevity was also skipped yesterday, so today it doesn't show up as a big habit but as a short walk that feels accessible.With high energy and low stress, it's a good time to lock in physical steadiness that prevents energy crash later.Different Brain signals: User A driven by yesterday's skips, User B driven by current energy/stress levels
Daily Protocol Hash57c6603810a79ea4b7ff323e435a22f7Different hashes = different rendered HTML = genuinely personalized emails
Reminder Hashf9153dc1e12154a4f7f97fa4d9ea9589Different hashes confirm per-user rendering in reminder emails too
Weekly Hash6912e7bf1adb408124cfd7292634f24fDifferent AI-generated letters produce different weekly emails

Deep Link Verification — CTA Routes to Correct SOIL Destination

Every CTA button in every email template routes through the SOIL deep-link router (/open?to=) which authenticates the member and redirects to the correct in-app page. The unsubscribe link goes directly to Settings.

Email TemplateCTA ButtonDeep Link PathFinal DestinationPurposeVerified
Daily Protocolלפרוטוקולים שלי/open?to=/protocols /protocolsMember opens today's protocols Routes correctly
Daily Protocolעדכן (unsubscribe)/settings /settingsNotification preferences Routes correctly
Protocol Reminderלהשלים את הפרוטוקולים/open?to=/protocols /protocolsMember completes pending protocols Routes correctly
Protocol Reminderעדכן (unsubscribe)/settings /settingsNotification preferences Routes correctly
Weekly Reflectionלדשבורד שלי/open?to=/dashboard /dashboardMember views weekly progress Routes correctly
Weekly Reflectionעדכן (unsubscribe)/settings /settingsNotification preferences Routes correctly
How it works: The /open route (in src/pages/OpenDeepLink.jsx) checks auth status, subscription, and onboarding completion. Authenticated + onboarded members are redirected to the to parameter. Unauthenticated users are sent to login first, then redirected after authentication. This works identically on desktop and mobile browsers, and inside the PWA.

Gmail Screenshot Checklist — 4 Screenshots Required

6 emails were sent to two real Gmail inboxes on July 5, 2026 at 19:50-19:51 UTC. Subject lines start with [TEST]. Log into either inbox to capture the screenshots below.

1. Daily Protocol — Desktop

Inbox: soilidantest@gmail.com

  • Subject: [TEST] הפרוטוקולים שלך להיום מוכנים — 3 פרוטוקולים
  • Show: subject line, preview text
  • Open email — show headline + CTA button
  • Click CTA — confirm it opens /protocols

2. Daily Protocol — Mobile

Inbox: idanshalevs@gmail.com

  • Subject: [TEST] הפרוטוקולים שלך להיום מוכנים — 3 פרוטוקולים
  • Show: subject line, preview text
  • Open email — show headline + CTA button
  • Click CTA — confirm it opens /protocols

3. Weekly Reflection — Desktop

Inbox: soilidantest@gmail.com

  • Subject: [TEST] השבוע שלך — סיכום והתבוננות
  • Show: subject line, preview text
  • Open email — show AI letter + CTA button
  • Click CTA — confirm it opens /dashboard

4. Protocol Reminder — Mobile

Inbox: idanshalevs@gmail.com

  • Subject: [TEST] 3 פרוטוקולים מחכים לך
  • Show: subject line, preview text
  • Open email — show headline + CTA button
  • Click CTA — confirm it opens /protocols
What to verify in each screenshot:subject line visible, preview text visible (if shown by Gmail), headline rendered, CTA button visible and clickable, link opens correct SOIL destination.

SOIL · Protocol Email Migration Phase 2 · Final Production Evidence · Registration emails NOT migrated (per CTO directive)