AutomationPython · GitHub Actions cronPrivate codebase
Support Ticket Notifier
Scheduled Notion → push + WhatsApp notifier for support tickets.
Role · Author — integration design, delivery pipeline and scheduling.
- 3
- Channels
- 3
- Runs / day
- 4
- Ticket states
- Notion
- Source
Overview
A scheduled service that tells students when their support tickets move. It reads ticket databases in Notion, fans out OneSignal push, WhatsApp Cloud API template messages and a signed webhook into the learning platform, then advances each ticket's status so nobody is notified twice.
Architecture
Scheduler
GitHub Actions cron triggers each run.
Worker
A single Python process with a notification module per channel.
State
Notion status fields act as the idempotency marker between runs.
What it does
Ingest
- Queries Notion ticket databases for resolved, in-progress, cancelled and unresolvable tickets
Fan-out
- OneSignal push targeted by external user ID
- WhatsApp template messages via a threaded, rate-limited sender
- Signed webhook to the learning platform for in-app notifications
State
- Advances tickets to 'notified' states after delivery
- Deep links back to the help-center site
Ops
- GitHub Actions cron with three runs a day
- Secrets-managed credentials and run logs
Engineering decisions
Idempotency without a database
Notion's own status field is the only state; each run moves tickets forward so re-runs are safe.