Notification Routing Intermediate

Routing Alerts to the Right People: A Notification Playbook

Triage notification routing config for wrong recipients, quiet hours, test-mode leaks, and bulk-send storms without changing code.

45 min Octacer Engineering May 6, 2026
An after-hours on-call operator reviewing a notification-routing config where overnight alerts are held and only one is released

Routing alerts without waking everyone: a notification-routing playbook

An alert that wakes the wrong person at 3 A.M., storms an inbox during a campaign, or burns your sending domain is almost never a "send more carefully" problem. It is a routing-config problem: the wrong recipient, no quiet hours, test mode still on in production, or bulk mail fired too fast. This playbook triages those causes in order, least to most invasive. The fix lives in editable config, not code, so a change never requires a rebuild [2343].

When this applies

Use this playbook when operational notifications reach the wrong recipient, wake on-call staff overnight, storm during a send, or risk the deliverability of the sending domain.

Typical triggers:

  • An alert lands with the wrong person or on the wrong channel for that outcome.
  • On-call staff are paged overnight for events that could wait until morning.
  • A bulk send floods contacts and starts drawing spam complaints or unsubscribes.
  • A trial client's live notifications are going somewhere they should not.

Severity & impact

Classify before you touch anything. Blast radius differs sharply by cause.

Symptom Severity Impact
Alert sent to the wrong recipient [2343] Medium Wrong person acts, or no one does; the labelled contact never sees it
On-call staff woken overnight [2343] Medium Fatigue, missed daytime work; overnight events that a 7 A.M. digest would have covered
Test-mode notifications leaking, or none reaching the real recipient [2343] High Live client traffic routes only to the builder; real recipients get nothing
Bulk send storms contacts too fast [2434] High Spam complaints, unsubscribes, sending domain reputation burned

The dividing line is whether real recipients were affected. A mis-route caught in config is recoverable. A burned sending domain, or a live client routing every alert to the builder, is an operational failure that reaches people directly.

Roles

Keep roles generic and named up front so escalation is not improvised.

  • Notification / on-call owner: runs this triage, owns the decision to pause sends or flip a channel toggle.
  • Config owner: owns the per-client notification config — the recipient list, routing table, quiet hours, and test mode [2343].
  • Comms lead: owns recipient-facing messaging and the fallback while routing is corrected.

Triage steps

Work read-only first. Read the config before you change any routing.

[ ] 1. Read the ROUTING TABLE for the affected outcome. Confirm which
       recipient, channel, and timing each call outcome maps to —
       booking confirmed, medical-review lead, out-of-area lead,
       callback request, abandoned booking, dispatch. [2343]
[ ] 2. Confirm the RECIPIENT is the right labelled contact. Check the
       labelled list (operator, nurse, medical contact, callback
       team) — a mis-set label sends the alert to the wrong person. [2343]
[ ] 3. Check whether QUIET HOURS are configured. If overnight alerts
       are firing live instead of holding for the ~7 A.M. digest,
       quiet hours are off or misconfigured. [2343]
[ ] 4. Check whether TEST MODE is on in production. Test mode routes
       ALL notifications to the builder only; left on past a trial,
       real recipients receive nothing. [2343]
[ ] 5. Check the CHANNEL TOGGLE. Confirm SMS is only on where A2P
       approval allows; a channel switched on prematurely mis-sends. [2343]
[ ] 6. For bulk email, check the SEND RATE and SEGMENTATION. Confirm
       one message every 40–70 seconds with a randomized delay, in
       business hours, segmented by topic — not an un-throttled blast. [2434]

Decision points

Match the symptom to the cause. Each branch points to one mitigation.

Observation Diagnosis Branch
Right event, wrong person Routing table maps the outcome to the wrong labelled recipient [2343] Fix the recipient in config
Real recipients get nothing on a live client Test mode left on in production, routing all alerts to the builder [2343] Turn off test mode
Staff paged overnight for non-urgent events Quiet hours not configured; no morning digest [2343] Enable quiet-hours hold + digest
Bulk send draws complaints and unsubscribes Un-throttled, unsegmented blast [2434] Throttle and segment the send
Every change needs a rebuild Client is on bespoke code, not config [2343] Move the client onto config

Mitigation menu

Apply the least invasive fix that resolves the diagnosed branch. Do not stack fixes you have not diagnosed.

  1. Turn off test mode, or fix a mis-set recipient. Both are single config edits. Flip test mode off so live alerts leave the builder and reach the labelled recipient; or correct the routing table so the outcome maps to the right operator, nurse, medical contact, or callback team. No rebuild required [2343].
  2. Enable quiet-hours hold plus the morning digest. Turn on quiet hours so overnight bookings, callbacks, and leads are held and released together in one ~7 A.M. digest instead of paging staff through the night [2343].
  3. Throttle and segment the bulk send. Send one message every 40–70 seconds with a randomized delay, only during business hours, so volume looks human; segment contacts by subscription topic (newsletter, off-plan, area spotlight, lifestyle) so each list gets only what it opted into, and let unsubscribe remove the contact automatically [2434].
  4. Move the whole client onto config. If routing changes keep requiring code, migrate the client to the config-driven engine — labelled recipients, routing table, quiet hours, test mode, channel toggles — so any change edits config, not code [2343].

For time-based reminders, derive the task and its reminders from one date field so they cannot drift apart: a renewal task due 120 days before a contract end date, a WhatsApp-plus-email reminder at 120 days, and a WhatsApp-only reminder at 100 days all come from that single field [2384].

Escalate when

Escalate to the config owner when:

  • The correct routing is ambiguous — the outcome has no clear labelled recipient.
  • A channel toggle needs flipping but A2P approval status is unconfirmed [2343].
  • A bulk send has already drawn complaints and domain reputation is at risk [2434].

Rollback while you escalate: pause the affected send and hold non-urgent alerts. Holding into the next digest is slower but cannot storm recipients or burn the domain [2343][2434].

Verification & recovery

Verify against the config and the actual delivery, not the assumption.

  • Fire one test event per outcome and confirm each lands on the mapped recipient, channel, and timing [2343].
  • Confirm an overnight event is held and appears in the ~7 A.M. digest rather than paging live [2343].
  • Confirm a throttled send paces at 40–70 seconds, stays in business hours, and that an unsubscribe drops the contact from the right list [2434].

Recovery is complete only when live routing matches the config for every outcome, not when one alert looks right.

Evidence & comms

Capture, in the incident record:

  • The routing-table entry for the affected outcome and the recipient it resolved to [2343].
  • Whether test mode and quiet hours were on, and the channel-toggle state [2343].
  • The send rate, segmentation, and any complaint or unsubscribe spike, when a bulk send was the cause [2434].

Recipient comms template:

We corrected a notification-routing issue that affected some alerts. Delivery to the correct recipients has been restored, and overnight items now arrive in a single morning summary. No action is needed on your side.

Post-incident

Run a retro and link it from the incident record. Lock in prevention:

  • One config-driven engine per client — recipients, routing, timing, quiet hours, and test mode all in editable config, never bespoke code [2343].
  • Test mode never left on in production past a trial [2343].
  • Quiet hours configured so overnight alerts release in one morning digest [2343].
  • Throttled, segmented, business-hours bulk sends to protect the sending domain [2434].
  • Reminders derived from a single date field so they never fall through the cracks [2384].

Ready to Implement This Playbook?

Our team can implement these strategies for you, tailored to your specific business needs.

Schedule Consultation