whisper-money/app/Mail
Víctor Falcón 47cecf0bee feat(email): follow up after post-onboarding AI consent
Send a lifecycle email two days after a user opts into AI, but only when
the consent was given outside of onboarding (more than three days after
sign-up) so we don't email users who consented during their initial setup.

A daily scheduled command (email:ai-consent-follow-up) selects active
consents accepted two days ago, skips onboarding-era ones, and queues a
drip email. Deduplication reuses the existing UserMailLog drip system, so
no migration is needed. The email is localised via the user's
HasLocalePreference, like the other drip emails.
2026-06-26 19:41:14 +02:00
..
Drip feat(email): follow up after post-onboarding AI consent 2026-06-26 19:41:14 +02:00
BankTransactionsSyncedEmail.php fix: make transaction sync email use default sender (#265) 2026-04-07 13:50:42 +01:00
BankingConnectionAuthFailedEmail.php fix: split drip and default email senders (#263) 2026-04-06 12:16:47 +02:00
BankingConnectionExpiredEmail.php Notify users about expired bank connections (#404) 2026-05-20 09:20:13 +02:00
BrokenBankLogosReportEmail.php fix: split drip and default email senders (#263) 2026-04-06 12:16:47 +02:00
EnableBankingConnectionsCancelledEmail.php Cancel Enable Banking connections for free users (#289) 2026-04-15 16:23:03 +02:00
UpdateEmail.php fix: split drip and default email senders (#263) 2026-04-06 12:16:47 +02:00
UserLeadInvitation.php feat(leads): cohort-based launch invitations with per-user Stripe coupons (#333) 2026-04-30 15:10:28 +01:00
UserLeadReInvitation.php feat(leads): add user lead re-invite campaign (#432) 2026-05-26 08:35:31 +02:00
WaitlistOvertaken.php feat: selective retry of failed lead email jobs (#286) 2026-04-15 08:00:29 +01:00
WaitlistReferralNotification.php feat: selective retry of failed lead email jobs (#286) 2026-04-15 08:00:29 +01:00
WaitlistWelcome.php feat: selective retry of failed lead email jobs (#286) 2026-04-15 08:00:29 +01:00