Cost Model
How per-attempt carrier costs roll up through messages, communications, campaigns, and tenants.
Every SMS send has a real cost - a provider price plus a carrier fee, reported by AWS on the delivery receipt. Outpost tracks these costs at the finest grain and rolls them up so you can answer "what did this campaign cost?" or "what has this tenant spent this month?"
How it relates
- Attempt - cost data arrives per attempt on the final delivery receipt. A message that retried twice has cost on each attempt that reached the carrier.
- Message -
totalCostis the sum across all attempts. Retries make a message cost more; this is visible and intentional. - Everything above - when a message settles, its cost is added to the
SMS_COSTstat for every relevant dimension via the stream worker.
Things worth knowing
Retries cost money. Each attempt that reaches the carrier is billed. Outpost's generous retry policy (up to 3 attempts by default) trades cost for deliverability.
Footers can add segments. Compliance footers and sender identity prefixes count toward SMS segment limits, so the assembled message may span more billable parts than the raw body implies. See Messages - compliance footers.
Precision is preserved internally, rounded for display. AWS reports sub-cent costs. Outpost stores and aggregates at full provider precision so rollups never compound rounding errors; amounts are rounded to cents only when building API responses. Attempt-level provider price/fee fields are the exception - they serialize at raw precision so you can distinguish a true $0 from a sub-cent fee. Dashboards show < $0.01 for non-zero amounts that would round to zero.
Stats cost is in dollars. The SMS_COST stat metric is denominated in dollars (not cents).