Skip to main content
An MO — mobile-originated — message is one a handset sends to a number you own. A reply to an alert, a STOP, an inbound keyword.

This one is not yours to configure

Unlike a dlr_url, which you set per message, MO forwarding is configured on the vendor worker that receives the traffic, by whoever runs the gateway.
So if inbound messages are not reaching you, the fix is a conversation with your provider rather than a change in your code. Two things worth asking them: whether forward.mo.url is set on the right worker, and whether the number you expect is mapped to your account.

What arrives

A POST, in JSON or FORM format. The same 200–299 success rule and the same retry budget as delivery receipts: 10 attempts, 120 seconds apart, 5-second timeout. The URL may carry placeholders. Values are URL-encoded before replacement:
%p is the sender and %P is the destination. Case is the only difference between them, and getting it the wrong way round produces a system that works perfectly until someone tries to reply to the number it recorded.

Ownership has to be resolved

An inbound message arrives at the gateway with a destination number and no account attached. The gateway maps that number to an account before it can forward anything. If the mapping is missing, the message is unmapped — it arrives, it is recorded, and it is forwarded nowhere. There is no error on your side to observe, because nothing was ever addressed to you as far as the routing is concerned.
When testing a new inbound number, send one message and ask your provider to confirm it resolved to your account rather than landing unmapped. That single check separates “my endpoint is broken” from “the number was never mine”.

Debugging

Full inbound detail needs print.mos = true on the gateway, temporarily. That output contains message content and both addresses, so it is sensitive and is not something to leave on. Your provider will have to do this — and it is worth asking them to, rather than guessing, since the alternative is inferring an inbound path from its absence.

Delivery receipts

The outbound direction, which you do control per message.

Receiving FAQ

Ordering, duplicates and what to do with a missing receipt.