Part 6 of 7 · Back-in-stock notifier series ~6 min read

What the back-in-stock notifier costs

A system that costs more than the sales it recovers is a toy. This post is the cost breakdown: every AWS service this design touches, what each adds up to at around 120 notify-me requests a month, and why the total lands near $2.10 — plus what happens to the bill when a busier shop runs it at ten times the volume.

Key takeaways

  • About $2.10/month at roughly 120 notify-me requests, and the fixed cost is almost nothing — nothing runs between restocks.
  • The two biggest lines are the outbound SMS and one small Bedrock call per restock. Everything else is cents.
  • The only real fixed cost is Secrets Manager: two keys at $0.40 each, billed whether or not an item ever restocks.
  • Because the model is called once per restock — not once per person — Bedrock stays cheap even when a queue is long.
  • 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 between restocks and no idle bill. You pay for a notice only when an item actually comes back. At a typical independent-shop volume — call it 120 notify-me requests a month across a handful of restocks, with the notices, reserve clicks, and expiry sweeps that follow — here’s the whole bill, line by line.

AWS serviceWhat it does hereMonthly
Secrets ManagerTwo keys — inventory-webhook signing key, SMS/reserve-token key ($0.40 each)$0.80
SNS (SMS)One text per notified shopper (~90), plus a few top-up texts from the sweep$0.55
Bedrock (Claude Haiku 4.5)One notice-phrasing call per restock (a handful a month)$0.30
DynamoDB (on-demand)Requests, restocks, reservations, opt-out, audit — small reads and writes$0.15
CloudWatch LogsFunction logs, 7-day retention$0.10
SESEmail notices for shoppers who chose email, plus exception handovers$0.08
Lambda (Python 3.14, arm64)Capture, detect, notifier, reserve, sweep, catalogue-sync$0.05
EventBridge SchedulerThe expiry sweep and the catalogue sync$0.05
SQS + DLQBuffering restock batches to the slower model and messaging calls$0.02
AWS BudgetsCost alarm (first two budgets are free)$0.00
Total~120 requests/month$2.10

The shape of that bill is the point. The only line that costs money while the system sleeps is Secrets Manager — two keys at $0.40 each, $0.80 a month no matter what, which is well over a third of the total at this volume. Everything else is genuinely usage-priced and rounds to zero between restocks. The two lines that move with volume are the ones that actually reach the customer: the SMS itself and the Haiku call that phrases the batch. And because the model runs once per restock rather than once per person, a queue of forty people costs the same Bedrock spend as a queue of four — the notice is phrased once and templated the rest of the way. The capture, detect, reserve, and sweep machinery — all the real work of keeping the queue fair and never overselling — together costs 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.55 here is a UK-leaning estimate for around 90 outbound texts (many shoppers choose email, which is far cheaper through SES); your real number will track your country and your provider. If a shopper picks email over SMS, that notice moves onto the near-free SES line instead — so the channel mix, not just the volume, shapes this row. 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 busier shop — 1,200 notify-me requests a month, ten times the volume, with proportionally more restocks — and the bill lands near $13, not $21. It’s sub-linear because the fixed lines don’t move: Secrets Manager stays at $0.80, the schedules stay at a few cents, and AWS Budgets stays free. What scales is the genuinely usage-priced work — roughly $5.50 of SMS for ten times the texts, about $3 of Bedrock for ten times the restocks, 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.

Monthly cost split at about 1,200 notify-me requests A single horizontal bar divided into proportional segments showing a roughly $13 monthly total at ten times the base volume. From left: SMS is the largest segment at about $5.50; Bedrock about $3.00; DynamoDB about $1.50; Secrets Manager a fixed $0.80; and a final combined segment for CloudWatch Logs, SES, Lambda, SQS and EventBridge at about $2.20. Labels sit above or below each segment. A note reads: the fixed lines do not move with volume, so the bill grows sub-linearly — the SMS and the once-per-restock model call are the only parts that scale. SMS ~$5.50 Bedrock ~$3.00 DDB ~$1.50 Secrets $0.80 rest ~$2.20 Monthly cost — ~1,200 requests — total ~$13 Fixed lines don’t move with volume; only the SMS and the once-per-restock model call scale, so the bill grows sub-linearly.
Fig 6. The monthly bill at ten times the base volume, about 1,200 requests. SMS and Bedrock are the bulk of it; the fixed lines stay put, so the total grows sub-linearly — near $13, not ten times $2.10.

The honest way to read this: the AWS bill is rounding error against what a recovered sale is worth. A single walnut dining chair or a pair of trainers is worth far more than $2.10, and this design turns demand you’d otherwise lose into orderly sales — without ever overselling and having to apologise. Even at $13 a month for a busy shop, the system pays for itself the first time it turns a restock into a sale that would have vanished into a scramble, and the few notices that go unclaimed simply pass down the queue to the next person who still wants the thing.

Design rules that shaped the cost

  • Pay per restock, not per hour. No always-on compute means no idle bill between the times an item actually returns.
  • Spend the model once per restock. One Haiku call phrases the whole batch, so a long queue costs no more model spend than a short one.
  • Cheap work stays cheap. Capturing, detecting, reserving, 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 whose price varies, so the Budgets alarm sits right on top of it.
All posts