How much does it cost to run a notification service?
A notification service sending 5 million emails, 2 million pushes, and 200,000 SMS a month costs about 2,543 dollars, and SMS is 69 percent of it for 2.6 percent of the volume. Here is the breakdown.
Quick answer
A multi-channel notification service sending 5 million emails, 2 million push notifications, 200,000 SMS, and 500,000 in-app messages a month costs roughly 2,543 dollars a month on AWS. SMS alone is 1,760 dollars, or 69 percent of the bill, for 2.6 percent of the messages. Email is 500 dollars at 0.10 per thousand, push notifications cost 1 dollar for 2 million sends, and the entire orchestration layer (queues, workers, preference store, delivery log) is 282 dollars. Per message, SMS costs 0.0088 dollars against 0.0001 for email, an 88x difference.
A notification service is a router: something happens, a set of rules decides who should hear about it and how, and messages go out through several channels. The infrastructure to do that routing is cheap. The channels are not, and they differ from each other by two orders of magnitude, which means channel policy is the entire cost conversation.
The workload we are pricing
Assume a service in us-east-1 handling notifications for a product with 400,000 users. Each month it sends 5 million transactional and digest emails, 2 million mobile push notifications, 200,000 SMS (mostly one-time passcodes and critical alerts), and 500,000 in-app messages. About 8 million events enter the system, each fanning out to one or more channels based on per-user preferences. Delivery status is tracked for 90 days for support and compliance.
The monthly breakdown
| Component | Specification | Monthly cost |
|---|---|---|
| SMS | 200,000 US messages at about 0.0088 including carrier fees | $1,760.00 |
| SES, 5M messages at 0.10 per thousand | $500.00 | |
| Logs and metrics | 150 GB ingest plus retention | $80.00 |
| Delivery log database | RDS db.t3.medium plus 200 GB | $72.64 |
| Scheduler and dispatcher | 2 Fargate tasks at 1 vCPU / 2 GB | $72.08 |
| Preferences and templates | DynamoDB, 50 GB, 20M reads, 8M writes | $27.50 |
| Fan-out workers | 8M Lambda invocations, 256 MB, 200 ms | $8.27 |
| Event archive | 500 GB S3 Standard | $11.50 |
| Delivery event stream | Firehose, 200 GB | $5.80 |
| Queues | SQS, 8M messages | $3.20 |
| Push notifications | SNS mobile push, 2M at 0.50 per million | $1.00 |
| In-app messages | DynamoDB writes and reads | $0.63 |
| Total | $2,542.62 |
Cost per message by channel
| Channel | Volume | Cost | Per message | Share of bill |
|---|---|---|---|---|
| SMS | 200,000 | $1,760.00 | $0.008800 | 69.2% |
| 5,000,000 | $500.00 | $0.000100 | 19.7% | |
| Push | 2,000,000 | $1.00 | $0.0000005 | 0.04% |
| In-app | 500,000 | $0.63 | $0.0000013 | 0.02% |
| Infrastructure | - | $280.99 | - | 11.0% |
SMS costs 88 times more per message than email and roughly 17,600 times more than push. That ratio should drive product decisions, not just budget ones. Every feature that defaults to SMS is buying a channel that costs almost nine tenths of a cent per send, and most of the time the recipient would have been equally well served by a push notification costing five ten-thousandths of a cent.
The SMS conversation
Two hundred thousand SMS a month is not a lot: it works out to one every four months per user, consistent with using SMS only for one-time passcodes and critical alerts. Even at that discipline it is the majority of the bill. Three changes usually apply.
| Change | New SMS volume | New SMS cost | Saving |
|---|---|---|---|
| Baseline | 200,000 | $1,760 | - |
| Push-first for OTP where app is installed | 110,000 | $968 | $792 |
| Plus authenticator app option | 70,000 | $616 | $1,144 |
| Plus rate limiting on resends | 58,000 | $510 | $1,250 |
Resend abuse is the quiet one. Users who do not receive a code within a few seconds tap resend repeatedly, and without a cooldown each tap is another 0.0088 dollars. A 30-second cooldown and a cap of three sends per attempt typically removes 15 to 20 percent of SMS volume that delivered no additional value.
Email deliverability is the real email cost
Five hundred dollars for 5 million emails is cheap, but the number that matters is what fraction reach the inbox. A service with poor list hygiene sends the same 5 million messages, pays the same 500 dollars, and gets 60 percent inbox placement instead of 95 percent. The wasted spend is 175 dollars, but the real cost is the password reset that never arrived. Suppression lists, bounce handling, and dedicated IPs (about 25 dollars a month each) are worth more than any infrastructure optimization on this bill.
The infrastructure is 11 percent
Queues, workers, preference storage, the delivery log, and observability together cost 281 dollars, or 11 percent. There is very little to optimize there: 8 million Lambda invocations cost 8.27 dollars, and the queue is 3.20 dollars. The one line worth watching is the delivery log at 72.64 dollars, which grows with retention. Ninety days of status for 7.7 million messages a month is about 2 GB a month of rows; at two years it is 15 GB and the instance needs to grow. Archiving old delivery records to object storage keeps that flat.
The number to track
Blended, this service costs 0.00033 dollars per notification delivered. That average is nearly meaningless on its own, which is the point: report cost by channel, because 69 percent of the bill sits in 2.6 percent of the volume. Price the service from Terraform against theresource catalog, then put the per-channel table in front of whoever decides when a feature sends an SMS.
FAQ
How much does it cost to run a notification service?
About 2,543 dollars a month on AWS for a service sending 5 million emails, 2 million push notifications, 200,000 SMS, and 500,000 in-app messages, including queues, fan-out workers, a preference store, a delivery log, and observability. SMS is 1,760 dollars of that, email 500 dollars, and the entire infrastructure layer 281 dollars.
How much more expensive is SMS than push notifications?
About 17,600 times more per message. SMS costs roughly 0.0088 dollars including carrier fees, email costs 0.0001 dollars at 0.10 per thousand, and mobile push costs 0.0000005 dollars at 0.50 per million. In this breakdown, 200,000 SMS messages (2.6 percent of volume) account for 69 percent of the bill, while 2 million push notifications cost one dollar total.
How do I reduce SMS notification costs?
Send fewer of them. Using push notifications for one-time passcodes where the app is installed cuts volume by roughly 45 percent, worth 792 dollars here. Offering an authenticator app option removes more. And rate limiting resends with a 30-second cooldown and a three-send cap typically eliminates another 15 to 20 percent of volume that delivered no value, since users tap resend repeatedly when a code is slow.
What does transactional email cost?
About 0.10 dollars per thousand messages, so 500 dollars for 5 million a month. The more important email cost is deliverability: a service with poor list hygiene pays the same 500 dollars for 60 percent inbox placement instead of 95 percent. Suppression lists, bounce handling, and dedicated IPs at roughly 25 dollars a month each are worth more than any infrastructure optimization here.
What does the infrastructure behind notifications cost?
About 281 dollars, or 11 percent of the bill: 8 million Lambda invocations at 8.27 dollars, queues at 3.20, a preference and template store at 27.50, a Fargate scheduler at 72.08, a delivery log database at 72.64, event archiving at 17.30, and observability at 80. There is very little to optimize; the delivery log is the only line that grows meaningfully, with retention.
How does C3X help price a notification service?
C3X reads your Terraform and prices the queues, workers, tables, delivery stores, and messaging resources against a live catalog. For a workload where channel choice dominates the bill, having the infrastructure costed precisely makes it obvious how small it is relative to per-message channel charges, which is what moves the conversation to where the money actually is.
What to do next
Put per-channel cost in front of the people choosing channels. C3X reads your Terraform and prices your resources against a live catalog. Start with the quickstart.
Share this post
Try C3X on your own Terraform
Free and open source. No API key required. One command to install, one command to estimate.