OpenClaw Adds Twilio MMS and Durable Delivery Status Tracking on Main
The SMS plugin can now receive and send MMS, record signed carrier delivery outcomes and retry transient media failures without silently losing attachments.
OpenClaw’s Twilio SMS plugin has crossed a meaningful capability boundary on main: it can now ingest mixed or media-only MMS, send supported attachments, and record later carrier delivery outcomes instead of treating Twilio’s initial acceptance as final delivery.
Follow-up fixes are part of the story. The first MMS path could durably adopt a webhook after a transient media download failure, silently losing the attachment; two merged corrections move retryable failures back in front of durable adoption and align stalled response bodies with network timeout policy.
This is not yet a blanket production upgrade instruction. The supplied 2026.7.1-1 and 2026.7.1-2 releases predate these merges and do not establish package inclusion. Twilio operators should stage the first containing build with signed test traffic and a real public callback topology.
MMS is now an official SMS-plugin capability
PR #118664 adds both directions:
- inbound text-plus-media and media-only Twilio webhooks enter the normal channel context;
- outbound supported attachments are hosted through OpenClaw’s public webhook boundary and supplied to Twilio as
MediaUrlvalues.
The security order matters. The plugin validates the Twilio signature, authorizes the sender, then performs authenticated media downloads with URL, count, byte, redirect, timeout and content-type limits. Local media reads are bound to authorized descriptors, and staged outbound media is cleaned before proven pre-dispatch failure while being retained after ambiguous dispatch.
Text-only behaviour is intended to remain unchanged. Invalid or oversized media should fail visibly rather than disappear.
Provider acceptance is no longer called delivery
PR #118665 adds a validated StatusCallback URL when the SMS webhook is publicly reachable. Signed callbacks are checked for account ownership before bounded, account-scoped delivery observations are recorded.
Operators can distinguish states such as sent, delivered, undelivered, failed or conflicting. Out-of-order progress is reduced without allowing a late intermediate callback to overwrite terminal evidence.
There is still no magical completeness guarantee. The plugin has an admission fuse and returns 503 under callback overload so Twilio can retry, but missed transitions may require reconciliation when final delivery is business-critical.
Interpretation: a successful synchronous API response proves provider acceptance, not handset delivery. Automation and support workflows should key off the later signed observation when one exists.
Transient MMS failures retry before adoption
PR #118994 fixes the initial durability mistake. Recognized timeouts, network failures, HTTP 408, 429 and 5xx conditions are retried through the existing per-sender durable lane before the event is adopted. Already downloaded attachments are cleaned, FIFO ordering is preserved and a later same-sender message does not overtake the retried MMS.
Permanent failures—including authorization rejection, missing media, byte limits, unsafe destinations and local storage failures—remain visible degradation rather than endless retry.
PR #119002 extends that policy to stalled MMS response bodies so a connection that opens but stops producing data cannot occupy the lane indefinitely.
A2P registration still controls real-world delivery
PR #88743 adds Twilio A2P guidance. Software support for MMS and callback tracking does not bypass carrier registration, sender policy, content restrictions or throughput limits. US application-to-person messaging can be filtered or blocked when registration and campaign configuration are wrong even if OpenClaw and Twilio both accept the request.
Treat plugin delivery evidence and carrier compliance as separate layers.
Staging checklist
- Identify a containing build; do not infer inclusion from the merge date.
- Verify the externally reachable webhook and status-callback URL without exposing the Gateway control plane.
- Send signed text-only, mixed and media-only test webhooks.
- Test allowed and oversized attachments, redirect limits, timeout and sender denial.
- Force one retryable media failure and prove the original attachment later arrives once, in order.
- Send outbound test media and inspect hosted-object expiry and cleanup after proven failure.
- Drive queued, sent, delivered and failed callback fixtures out of order; preserve terminal conflict evidence.
- Confirm Twilio A2P registration and campaign status for the sender and destination market.
Use non-sensitive media and test numbers. Provider-hosted MMS URLs and callback bodies can contain identifiers; keep them out of public logs.
Evidence and limits
Official GitHub API records confirm the MMS, delivery-status and transient-retry PRs merged and document deterministic signed-webhook, provider and SQLite-queue tests. Upstream states that no live Twilio credential roundtrip was run for the two feature PRs. API extraction for #119002 and #88743 was rate-limited, so those details remain attributed to the collector’s official merged PR, commit and documentation records.
Relevant collector IDs are 36823/36709/36805, 37030/36922/37003, 37035/36918, 37019/36903, and 37018/36902/37001.
Bottom line
Twilio SMS is no longer text-only, and “accepted” is no longer the last observable state. Roll out only after proving signed media intake, bounded hosting, retry-before-adoption and carrier callback reconciliation in the exact public topology you operate.
THE RECEIPTS
Claims should survive the click.
Primary links used for this article are listed openly. If the evidence changes, the verification date changes with it.THE OPERATOR BRIEF