SNS pricing: what to model (publishes, deliveries, fan-out)

SNS cost models are easiest when you treat them as publishes plus deliveries. The key idea: deliveries can be much larger than publishes because of fan-out, and retries can multiply delivery attempts during failures. This page is a checklist for a realistic estimate.

What to include in the model

  • Publishes/month: how many messages you publish
  • Deliveries/month: how many messages are delivered to endpoints
  • Fan-out: average matched subscribers per publish (after filter policies)
  • Protocol mix: different subscription protocols can have different effective rates
  • Retry multiplier: delivery failures cause repeated attempts

Tool: AWS SNS cost calculator

Step 1: estimate publishes

  • Split by topic: a few topics often dominate publishes.
  • Separate prod vs non-prod (test topics can be noisy).
  • Keep an “incident day” scenario if alerts are a big use case.

Step 2: estimate deliveries (fan-out is the multiplier)

A fast first-pass formula:

  • Deliveries/month ≈ publishes/month × matched subscribers per publish
  • Use matched subscribers, not “subscribers total” (filter policies reduce effective fan-out).

Workflow: estimate SNS deliveries

Step 3: add the retry/alert-storm scenarios

  • Retry scenario: failing endpoints multiply delivery attempts.
  • Alert storm scenario: incident triggers high-frequency publishes to high-fan-out topics.
  • Downstream coupling: if SNS fans out to SQS/HTTP endpoints, failures can cascade and amplify retries.

Common pitfalls

  • Modeling publishes and forgetting deliveries (fan-out is where cost grows).
  • Using “subscribers per topic” instead of “matched subscribers per publish”.
  • Ignoring retries and treating failures as “rare” (incidents can dominate monthly variance).
  • Broadcasting large payloads to many subscribers instead of sending pointers (object links).
  • Not separating non-prod traffic (test loops can create high publish/delivery volume).

How to validate after you deploy

  • Compare publishes and deliveries from a representative week to your baseline model.
  • Check delivery failure rate; if failures are non-trivial, expect higher effective deliveries.
  • Validate fan-out after filters: are you delivering broadly when you intended narrow topics?

Worked estimate template (copy/paste)

  • Publishes/month = Σ publishes by topic
  • Matched fan-out = subscriptions × filter match rate
  • Baseline deliveries = publishes × matched fan-out
  • Peak deliveries = baseline deliveries × (1 + retry factor) during incident/busy hours
  • Monthly cost = publishes priced + deliveries priced (use blended per-1M rates)

If you don’t know match rate or retry factor, model scenarios (e.g., 20%/50%/80% match; 0%/5%/20% retries) and validate later.

Related guides

Sources


Related guides


Related calculators


FAQ

What typically drives SNS cost?
Delivery volume. Fan-out (messages × subscribers) can make deliveries much larger than publishes. Protocol mix also matters for effective pricing.
Why do costs spike during incidents?
Alert storms and retries. More publishes plus repeated delivery attempts can multiply deliveries, especially for high fan-out topics.
What’s the fastest way to build a budget model?
Estimate publishes/month, estimate deliveries/month (publish × matched subscribers), add a retry multiplier for failure periods, then price with a blended per-1M rate and validate with metrics.

Last updated: 2026-01-27