Skip to content

Set up personal notification rules

Notification rules are how each user tells the platform “for high-urgency pages, reach me this way; for low-urgency, this way.” They’re per-user and decouple personal preference from the team-level routing in notification groups.

The mental model: stack rules at increasing delay_minutes for personal escalation.

You need contact methods first. Add them under Settings → My profile → Contact methods:

Terminal window
# SMS
curl -X POST https://api.siteqwality.com/user/$USER_ID/contact_method \
-H "Authorization: Bearer $SITEQWALITY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"type": "sms",
"details": { "country_code": 1, "phone_number": "5551234567" }
}'
# Phone call
curl -X POST https://api.siteqwality.com/user/$USER_ID/contact_method \
-H "Authorization: Bearer $SITEQWALITY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"type": "phone_call",
"details": { "country_code": 1, "phone_number": "5551234567" }
}'
# Email
curl -X POST https://api.siteqwality.com/user/$USER_ID/contact_method \
-H "Authorization: Bearer $SITEQWALITY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"type": "email",
"details": { "email_address": "alice@example.com" }
}'

type is one of email, sms, phone_call, slack_dm.

Three rules, increasing delays:

Terminal window
# 0 min — SMS me
curl -X POST https://api.siteqwality.com/user/$USER_ID/notification_rule \
-H "Authorization: Bearer $SITEQWALITY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"urgency": "high",
"contact_method_id": "<sms-id>",
"delay_minutes": 0,
"position": 0
}'
# 5 min — call me
curl -X POST https://api.siteqwality.com/user/$USER_ID/notification_rule \
-H "Authorization: Bearer $SITEQWALITY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"urgency": "high",
"contact_method_id": "<call-id>",
"delay_minutes": 5,
"position": 1
}'
# 15 min — email me
curl -X POST https://api.siteqwality.com/user/$USER_ID/notification_rule \
-H "Authorization: Bearer $SITEQWALITY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"urgency": "high",
"contact_method_id": "<email-id>",
"delay_minutes": 15,
"position": 2
}'

position is sort order within the urgency. Useful for the dashboard — the firing logic just walks rules by their delay_minutes.

For low-urgency, send a single delivery to your low-impact channel:

Terminal window
curl -X POST https://api.siteqwality.com/user/$USER_ID/notification_rule \
-H "Authorization: Bearer $SITEQWALITY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"urgency": "low",
"contact_method_id": "<email-id>",
"delay_minutes": 0,
"position": 0
}'

Or skip the rule entirely — without a low-urgency rule the user is silently skipped from low-urgency pages.

Escalation policy timeouts and personal-rule delays are independent timers. If your escalation policy fires a level at minute 0 and you have rules at 0/5/15 min:

TimeEvent
0 minEscalation level fires you. Your rule at 0 min fires (SMS).
5 minYour rule at 5 min fires (call). Still no ack.
5 minEscalation policy advances to level 2 — pages the next person.
15 minYour rule at 15 min fires (email).

You’ll keep getting your full personal stack even after escalation has moved on. Acknowledging the incident at any point stops everything.

  • Don’t put SMS at high delay. SMS is the fastest signal; reserve it for delay_minutes: 0.
  • Phone calls work as a deduplicator. If the SMS already woke you, you’ll silence the call. If it didn’t, the ringing definitely will.
  • Email is the catcher’s mitt. A 15-minute email rule means “if I missed everything, at least the message is in my inbox.”