What the missed-call text-back costs
A system that costs more than the business it saves is a gadget. This post is the cost breakdown: every AWS service this design touches, what each adds up to at around 150 missed calls a month, and why the total lands near $2.20 — plus what happens to the bill when the volume goes up tenfold.
Key takeaways
- About $2.20/month at roughly 150 missed calls, and the fixed cost is almost nothing — nothing runs when the phone isn’t ringing.
- The two biggest lines are the outbound SMS and one small Bedrock call per text-back. Everything else is cents.
- The only real fixed cost is Secrets Manager: two provider secrets at $0.40 each, billed whether or not a call comes in.
- At ten times the volume (around 1,500 missed calls) the bill lands near $14 — it scales with use, not with idle time.
- SMS carrier fees vary by country and provider; the numbers here are a UK-leaning estimate, not a fixed AWS price list.
Where the money goes
The system is serverless end to end, so there’s no instance ticking over when the shop is shut and no idle bill. You pay for a missed call only when one happens. At a typical small-business volume — call it 150 missed calls a month, each getting one text-back, with a handful of replies and escalations on top — here’s the whole bill, line by line.
| AWS service | What it does here | Monthly |
|---|---|---|
| Secrets Manager | Two provider secrets — webhook signing key, SMS API key ($0.40 each) | $0.80 |
| SNS (SMS) | One outbound text-back per missed call (~150), plus a few escalation texts | $0.60 |
| Bedrock (Claude Haiku 4.5) | One compose call per text-back (~150) | $0.45 |
| DynamoDB (on-demand) | Calls, threads, customers mirror, audit — small reads and writes | $0.12 |
| CloudWatch Logs | Function logs, 7-day retention | $0.10 |
| SES | Escalation and handover email to your team | $0.05 |
| Lambda (Python 3.14, arm64) | Webhook, replier, router, escalator, sweep, drive-sync | $0.05 |
| SQS + DLQ | Buffering between the webhook and the slower model and SMS calls | $0.02 |
| EventBridge Scheduler | The 15-minute no-reply sweep and the Drive sync | $0.01 |
| AWS Budgets | Cost alarm (first two budgets are free) | $0.00 |
| Total | ~150 missed calls/month | $2.20 |
The shape of that bill is the point. The only line that costs money while the system sleeps is Secrets Manager — two secrets at $0.40 each, $0.80 a month no matter what, which is over a third of the total at this volume. Everything else is genuinely usage-priced and rounds to zero at idle. The two lines that do move with volume are the ones that actually reach the customer: the SMS itself and the one Haiku call that phrases it. The Lambdas, the queue, the tables, and the schedules — all the machinery doing the real work of catching, matching, and routing — together cost less than the SMS bill alone.
The line that isn’t purely AWS
The SMS line deserves a caveat. AWS prices outbound SMS per message, and the exact rate depends on the destination country and the mobile carrier — a UK mobile is a few pence, other countries differ, and some routes add carrier surcharges. The $0.60 here is a UK-leaning estimate for around 150 outbound texts; your real number will track your country and your provider. If your telephony provider (rather than SNS) carries the outbound SMS, that cost moves onto their invoice instead and off this table — but it’s the same handful of pence per text either way. Either way, SMS is the one line worth watching as volume grows, which is exactly why the AWS Budgets alarm sits on top of the whole thing.
What ten times the volume costs
Push this to a busy business — 1,500 missed calls a month, ten times the volume — and the bill lands near $14, not $22. It’s sub-linear because the fixed lines don’t move: Secrets Manager stays at $0.80, the schedules stay at a cent, and AWS Budgets stays free. What scales is the genuinely usage-priced work — roughly $6 of SMS for ten times the texts, about $4.50 of Bedrock, and a few dollars more spread across DynamoDB, logs, SES, and Lambda. Even then, the two things that reach the customer dominate, and all the machinery in between stays close to free.
The honest way to read this: the AWS bill is rounding error against what a missed call is worth. A single missed customer at a salon, a garage, or a dental practice is worth far more than $2.20, and this design catches them by the dozen. Even at $14 a month for a busy shop, the system pays for itself the first time it turns one ring-out into a booking — and the few callers who don’t reply still get a human ringing them back, with the whole story already gathered.
Design rules that shaped the cost
- Pay per missed call, not per hour. No always-on compute means no idle bill.
- Spend the model sparingly. One Haiku call per text-back, and only to phrase — never to decide or to route.
- Cheap work stays cheap. Catching, matching, routing, and sweeping are plain Lambda and DynamoDB, cents at this scale.
- Know your one fixed cost. Secrets Manager is the only line that bills while the system sleeps.
- Watch the SMS line. It’s the part that scales and the part whose price varies, so the Budgets alarm sits right on top of it.