Skip to main content
RCS Message.in

Understanding RCS delivery reports and SMS fallback

RCS tells you more about what happened to a message than SMS does — but only if you read the signals correctly. This guide explains delivery events, why messages go undelivered, and how to design fallback without sending customers duplicates.

Key points

  • On Google's platform, delivery and read events come from the recipient's device; the RCS Message.in API delivers delivery reports to your webhook.
  • Offline recipients are retried for up to 30 days unless the message expires or is revoked.
  • Unreachable users (no RCS, or carrier not launched) are reported immediately, so fallback can start.
  • Set an expiry (up to 15 days) for time-sensitive messages and revoke before sending SMS.
  • Process events idempotently: duplicates and unusual orderings can happen.
This guide explains how RCS Business Messaging works on Google's platform. Through the RCS Message.in API you currently receive delivery reports and template approval status on your webhook (see the developer guide). Read and reply events, expiry, revocation and capability checks are described here for planning; confirm with us before relying on them.

What a delivery report tells you

When you send an RCS message, you get two kinds of feedback. First, the immediate response to the send request tells you whether the platform accepted the message. Then, on Google's platform, events are reported as things happen on the customer's device:

  • Delivered — the message reached the device.
  • Read — the customer opened it. Users can turn read receipts off, so read rates are a minimum, not an exact figure.
  • Replies and taps — suggested-reply text, button postback data, shared locations and free-text answers.

Possible outcomes for a message

SituationWhat the platform reportsSensible next step
Accepted, device onlineMessage delivered; a DELIVERED event followsWait for READ or a reply
Accepted, device offlinePlatform keeps retrying for up to 30 daysSet an expiry so stale messages are revoked
Device or network can't receive RCSRequest rejected as not foundSend via fallback channel
Agent not launched on the user's carrierRequest rejected as not foundSend via fallback channel
Uses a feature the device doesn't supportRequest rejected as invalid; not deliveredSimplify the message or use fallback
Expiry reached before deliveryTTL_EXPIRATION_REVOKED eventTreat as undelivered; trigger fallback

Why “accepted” isn't the same as “delivered”

If a customer's phone is switched off or offline, the platform still accepts the message and keeps trying to deliver it for up to 30 days. That's helpful for a newsletter, but a one-time password or a same-day offer is useless days later. Count a message as delivered only when the delivery event arrives.

Expiry and revocation

For time-sensitive messages, set an expiry using either a time-to-live or an exact expiry time. The maximum is 15 days after submission; Google recommends at least 10 seconds. If the message isn't delivered before it expires, the platform tries to revoke it and reports the result. You can also revoke a message yourself at any time before it's delivered.

Because delivery and expiry are processed in parallel, Google notes rare edge cases where you might receive both a delivery and an expiry notification, or neither. Its guidance is:

  • If a delivery event arrives, the customer has the message; ignore later expiry notifications for it.
  • If expiry is confirmed as revoked, treat the message as undelivered and use fallback if needed.
  • If the expiry result is inconclusive, use fallback for critical messages such as OTPs and decide case by case for others.

Designing SMS fallback

A dependable fallback flow looks like this:

  1. Choose an expiry per message type. Seconds to minutes for OTPs, hours for delivery updates, longer for informational campaigns.
  2. Send over RCS. If the response says the user can't be reached over RCS, send SMS straight away.
  3. Wait for delivery until the expiry. If the delivery event arrives, stop.
  4. Revoke, then fall back. Revoke the RCS message before sending SMS. If revocation fails because the message has just been delivered, don't send the SMS.
  5. Record the outcome. Store which channel delivered each message so reports and billing reconcile.

The SMS version must follow SMS rules. In India that means a registered sender header and a DLT-registered template, so prepare the fallback text in advance rather than trying to convert rich content automatically.

Capability checks

The platform can report whether a specific number can receive RCS and which features its device supports, provided the number has connected to RCS within the last 31 days. Bulk checks estimate how many numbers in a list are reachable. These are useful for planning, but conditions change, so a send-time result is still the final word.

Reading reports sensibly

  • Compare delivered counts with your target list, not just with accepted requests, to see true RCS reach.
  • Expect read rates to under-count because some users disable read receipts.
  • Use tap and reply events to measure outcomes such as bookings or confirmations.
  • Ask your provider how undelivered, revoked and fallback messages appear in reports and on invoices. Google states that, in its own billing reports, undelivered RCS messages aren't billed.

For integration requirements such as webhooks and idempotent processing, see the developer overview.

Questions about RCS for your business?

Our team can walk you through formats, onboarding and pricing for your use case.

Request a demo

Tell us about your use case and we'll arrange a walkthrough and quote.