Academy › Payments › Reminders. One queue for every message the billing
cadence produces, on whichever channel is actually working that week. New versus today: reminders
are email-only rows queued against due_date with WhatsApp reported back as
reminders_skipped_channels — this ties the schedule to the billing states, adds the Cloud API lane
beside the existing sent_manual wa.me fallback, and surfaces payment_reminders.error.
Primary action: send the queued messages.
Frame 1 · Desktop, 1280 px
Schedule
Tied to the billing state, not to a free-form date.
| Day | Billing state | Template | Category |
|---|---|---|---|
| Day 26 | Renewal due next | package_renewal_notice | utility |
| Day 1 | Request issued | package_payment_reminder | utility |
| Day 3 | Past due | package_past_due_notice | utility |
| Day 7 | Freeze notice | package_freeze_notice | utility |
Rendered body
Nattaya P. · package_payment_reminder · WhatsApp
Approved utility template. Variables are filled from the payment request, never typed by staff.
Queue
12 queued · 1 failed · 26 Aug – 7 Oct 2026
| Student | Template | Channel | Scheduled | Status |
|---|---|---|---|---|
| Mika S. | package_renewal_notice | 26 Aug · 09:00 | Sent | |
| Arisa T. | package_renewal_notice | WhatsApp · wa.me | 26 Aug · 09:00 | Sent manual |
| Nattaya P. | package_payment_reminder | WhatsApp · Cloud API | 1 Oct · 09:00 | Queued |
| Tom W. | package_payment_reminder | 1 Oct · 09:00 | Queued | |
| Ben K. | package_past_due_notice | WhatsApp · Cloud API | 3 Sep · 09:00 | Failed template not approved |
| Priya R. | package_freeze_notice | WhatsApp · Cloud API | 7 Oct · 09:00 | Queued |
Frame 2 · Abby on a phone, 390 px
Reminders
12 queued · 1 failed
Done. Nothing to do on this one.