Cost cap vs frequency cap: budget guard vs message-count guard
Cost cap vs frequency cap: definitions, table, Iran SMS panel example, FAQ, Leadara mapping.

Reza Ahmadi
SEO and content strategy for organic traffic and brand visibility in search results.
September 23, 2026 · 7 min read
Also available in فارسی

What is the difference between a cost cap and a frequency cap?
A frequency cap limits how many messages one person may receive in a rolling window. A cost cap limits spend on expensive channels (SMS / WhatsApp) so journeys fire paid channels only when predicted conversion justifies the cost.
One-line for eCRM teams: FC protects the person; cost cap protects the wallet and the SMS panel. You need both; neither replaces the other.
In Iran SMS cost is real. A team with only “3 SMS / person / 7 days” can still torch the monthly budget in one Friday blast — every person was under the per-person cap, but the sum was not. See channel framing in SMS flow vs SMS campaign.
How does each one work?
Frequency cap
Per-person counter: e.g. max 2 promo SMS per 24 hours, or 5 marketing emails per 7 days. When full, the next touch skips or defers. Transactional traffic is usually separate.
Cost cap
Budget or panel credits: a daily/weekly toman ceiling for promo SMS, or a rule “SMS only if predicted value > estimated cost.” The system may fall back to email/push when budget is gone.
| Dimension | Frequency cap | Cost cap |
|---|---|---|
| Unit | Messages / person / window | Money or channel credits |
| Protects | Fatigue and STOP | Budget and burn rate |
| Can still break | Huge blast under per-person FC | Many low-value messages under FC |
| Right home | All channels | Expensive channels |
| Companion metric | STOP, complaints | Cost per conversion, RPR |
Iran example: home-appliances shop with SMS panel
FC = 3 SMS / person / week. Friday “vacuum sale” blasts 80k consented numbers — one SMS each, so FC is fine. Monthly budget dies; Saturday cart flow has no SMS left. Fix: daily cost cap for promo + SMS priority for cart and tracking codes; sale blast email-first, SMS only to high-intent segments with a separate budget pool.
Diagnosis
| Problem | Effect |
|---|---|
| FC only | Budget burns overnight |
| Cost cap only | People still get 5 SMS/day under budget |
| Transactional inside promo caps | Receipts delay |
| No flow vs blast split | Cart and sale drain one credit pool |
Practical fix
- Global per-person FC for promo channels.
- Separate daily/weekly cost cap for promo SMS.
- Exempt transactional from both promo caps (watch abuse).
- Big blasts email-first; SMS limited to high intent.
- Read cost per conversion and revenue per recipient beside STOP.
For transactional vs promo boundaries: Transactional vs promotional email/SMS.
When which?
- Worried about STOP and fatigue? → FC.
- Worried about the panel bill? → Cost cap.
- AI picks the channel? → Both; otherwise SMS becomes the default burn path.
- Email only? → FC is enough; cost cap matters less.
- Is panel credit reporting wired into automation?
Leadara mapping: events, segments, journeys, email/SMS
- SMS-consent segment separate from email.
- Cart journey: email first, SMS behind FC + remaining budget guards.
- Blast campaigns: estimate cost before send; if over cap, shrink segment or change channel.
- Events:
sms_sentand delivery status feed FC counters and cost. - Goal: conversion closes the path so the next SMS is not wasted — saves both FC and budget.
Common mistakes
- Treating one cap as “enough”
- Per-person-FC-safe blasts with no total cost estimate
- Mixing transactional and promo credit pools
- Judging success by SMS send count
- Disabling FC for an “important” campaign
FAQ
What is the difference between cost cap and frequency cap?
One limits money/credits; the other limits messages per person.
FC full but budget left?
Skip/defer the promo touch; keep budget for other people or tomorrow.
Budget gone but FC free?
Do not fire the expensive channel; fall back to email/push or wait for reset.
Should cart SMS sit under the promo cost cap?
Better a separate pool or higher priority than sale blasts; otherwise the sale starves the cart.
Is rate limiting the same as FC?
No. Rate limiting throttles the system pipe; FC protects the person; cost cap protects budget.
How do we set the cost threshold?
From average SMS cost × last week’s volume and a target cost-per-order; stay conservative month one.
Where in Leadara?
With blast segment sizing, channel order in journeys, and send-time counter/budget guards — write the team contract down.
Bottom line and next step
FC ≠ budget. This week, put a daily cost cap on promo SMS, email-first the Friday blast, and reserve SMS for cart — then read cost-per-conversion beside STOP.
14-day test pattern
Days 1–2: split current credit reporting from FC.
Days 3–5: daily promo cap + transactional exemption.
Days 6–10: run one blast dual-channel under a budget ceiling.
Days 11–14: compare cost/order and STOP vs the prior blast.
| Version | Model | Risk |
|---|---|---|
| A | FC only | Budget burn |
| B | FC + cost cap | Controlled |
Team language: count or toman?
If someone says “we have a cap,” ask: per-person count or money? Both need distinct names.
| Say | Means |
|---|---|
| Frequency cap | Count / person / window |
| Cost cap | Toman or channel credits |
| Transactional exempt | Outside promo caps |
| Channel fallback | Email when SMS is expensive |
Go-live checklist
- Per-person FC on?
- Separate promo cost cap?
- Transactional exempt with abuse watch?
- Cost estimate before blast?
- Cart prioritized over sale in budget?
- Dashboard: cost, conversion, STOP, SMS/person?
Boundary with rate limiting
Pipe throttles (messages per minute from the system) protect neither person fatigue nor the monthly bill. Name all three layers so a Friday incident is diagnosed correctly.
Healthy dual-cap signals
| Signal | Means |
|---|---|
| Friday blast does not zero the month | Cost cap works |
| STOP flat after adding a touch | FC works |
| Cart still has SMS the day after a sale | Budget priority correct |
| Transactional not delayed | Exemption healthy |
30-minute whiteboard drill
Two columns: count and money. Drop every current rule. If a column is empty, write at least one guard for it this sprint.
Related reading
Worked budget math (Iran SMS panel)
Suppose promo SMS costs ~500 toman effective per segment and you have 40M toman/month for promo SMS. That is roughly 80k promo SMS/month, not “unlimited under FC.” If a Friday blast wants 50k and cart flows need ~2k/day, the blast must be capped or moved to email — FC alone will not tell you that. Write the monthly SMS budget on the same wiki page as the FC numbers so operators see both dials before they hit send.
Operator runbook: dual dials before send
Write two numbers at the top of every SMS promo brief:
- FC dial: max promo SMS per person in the window (e.g. 2 / 7 days)
- Cost dial: remaining promo SMS budget for today and for the week
The send is allowed only if (a) the estimated audience × cost per SMS fits the cost dial and (b) the expected touches per person fit the FC dial. If the audience is too big for the cost dial, shrink the segment or move the channel to email — do not “temporarily” disable FC. Temporary disables become permanent culture.
After send, log spent budget, SMS delivered, STOP, and orders attributed in 48 hours. That is how you retune both dials next month instead of arguing from memory.
Remember: a blast that is safe under per-person FC can still be unsafe under the weekly cost dial. Always estimate total SMS before you admire the creative.




