Throttle a rule to prevent spam
Rate-limit how often a rule fires. Throttling is what stops a chatty trigger from running ten times in a row, or a CSAT rule from sending the same caller five surveys in a week.
Atender lets you scope the throttle to one of three levels and set the limit as N executions per M minutes.
Before you start
- A working automation rule that fires more often than you want it to
- Admin permissions to edit automation rules
Steps
-
Open the rule. Go to Settings → Automation Rules, find the rule, and open it.
-
Find the Throttle Executions card. It’s on the Review & Save step of the rule builder, below Rule Details.
-
Pick a scope. Choose how broadly the throttle counts executions:
Per conversation — counts fires against the same conversation. Use for “don’t send more than one CSAT per conversation.”
Per contact — counts fires against the same contact across all their conversations. Use for “don’t send the same caller more than two follow-ups per week.”
Global — counts fires across the whole tenant. Use for outbound webhooks where the downstream system can’t handle bursts.
Conversation-less triggers should use Global throttling because there is no conversation or contact entity to count against. This includes incident and trend triggers such as Incident Created, Incident Updated, Incident Resolved, and Trend Spike Detected.
-
Set the limit. Specify N executions per M minutes in the Max Executions and Per Minutes fields. For example: “1 per 1440 minutes” = once a day at most.
-
Save the rule. Throttling kicks in immediately — no need to disable and re-enable.
Verify it worked
Trigger the rule deliberately more times than the throttle should allow (e.g., send three test emails when the rule is throttled to “1 per hour per contact”). Open Run History, find the rule, and confirm it ran only the first time.
Throttled executions are not logged — the rule is skipped before its actions run, so it leaves no entry in Run History and does not appear as a failure.
Common throttle values
- CSAT survey delivery — Per contact — 1 per 7 days
- Auto-reply confirmation — Per conversation — 1 per conversation lifetime
- SLA breach Slack ping — Per conversation — 1 per 30 minutes
- Outbound webhook — Global — 60 per minute
- Welcome message — Per contact — 1 per 30 days
Notes
- Throttling is per rule, not per action. If a rule has multiple actions, the whole branch is throttled together.
- Throttle counters reset after the time window passes. They persist across rule edits.
- Disabling and re-enabling a rule does not reset the throttle counters — they continue based on the last fire time.
Troubleshooting
-
Symptom: Rule fires even though the throttle should block it. Fix: Confirm the scope is what you intended. “Per conversation” for a rule triggered by a contact-level event won’t behave the way you expect — pick “Per contact” instead.
-
Symptom: An incident rule ignores per-conversation or per-contact throttling. Fix: Use Global throttling. Incident rules have no conversation or contact entity to count against.
-
Symptom: Rule never fires after the first run. Fix: The throttle window is set too long. Lower it.