RCS Deeplinks
RCS Deeplinks are special URLs that let users start RCS conversations with your business directly from any digital channel. When a customer clicks an RCS deeplink, their device opens the RCS messaging app with your business already set as the recipient. You can even pre-fill a message for them.
The RCS Deeplink API gives you a one-click entry point that takes customers from any digital touchpoint straight into an RCS conversation. You embed these deeplinks in emails, websites, mobile apps, or QR codes, and your customers get:
- No more manual steps to reach you
- Better engagement
- Immediate action from promotional materials
- Support for both RCS-enabled devices and SMS fallback
This feature is supported in select markets only. To determine if this feature is available in your market, please contact your Account Manager.
How to Generate Deeplinks
Before you generate RCS deeplinks, make sure you have:
- An active RCS agent registered with Vonage
- Your RCS agent's sender ID (external account ID)
- Valid Vonage API credentials (JWT authentication)
Generate a Deeplink
Send a
https://api.nexmo.com/v1/channel-manager/rcs/deeplink/generate
Request Body:
{
"sender_id": "some-example-external-account-id",
"country": "US",
"fallback_number": "+14155552671",
"prefilled_message": "Send me more information on this promotion."
}
| Parameter | Type | Required | Description | Constraints |
|---|---|---|---|---|
sender_id | string | Yes | A unique sender identifier on the Vonage platform. | This cannot be blank, include whitespaces, or be changed after creation. |
country | string | Yes | Two-letter country code for your customer | Valid ISO 3166-1 alpha-2 code |
fallback_number | string | No | Phone number for SMS fallback | E.164 format (e.g., +14155552671) |
prefilled_message | string | No | Message text you want to pre-fill | "Max 3,072 characters; don't URL-encode it" |
Response:
{
"deep_link": "https://tools.vonage.com/rcs/v1/deeplink/egUQB..."
}
Embed the Deeplink
Once you have the deeplink URL, you can embed it wherever your customers are:
HTML Link
<a href="{RETURNED_DEEPLINK_URL}">
Chat with us about our Spring Sale!
</a>
QR Code
// Use the complete URL from the API response
const deeplinkUrl = response.deep_link;
const qrCode = generateQRCode(deeplinkUrl);
Email Campaign
<button style="background: #007bff; color: white; padding: 12px 24px;">
<a href="{RETURNED_DEEPLINK_URL}"
style="color: white; text-decoration: none;">
Start a Conversation
</a>
</button>
Mobile App
// React Native example
const deeplinkUrl = response.deep_link;
<TouchableOpacity onPress={() => Linking.openURL(deeplinkUrl)}>
<Text>Contact Support</Text>
</TouchableOpacity>
Here's what your customer experiences:
- Customer clicks your deeplink from any channel.
- System checks their device (Does it support RCS?).
- The correct RCS application opens with your pre-filled content.
- Customer reviews and edits the message if they want.
- Customer sends the message to your RCS agent.
- Conversation starts in Messages API.
Technical Limits
Message Length
The pre-filled message has a maximum limit of 3,072 characters. However, we recommend you keep it under 500 characters for a better user experience. Shorter messages are easier for customers to read and edit before sending.
Character Encoding
We support UTF-8 encoding for all messages. When you send your request, don't URL-encode the prefilled_message yourself. We handle all the encoding automatically when we generate the link for you.
How Link Generation Works
Each time you call the API, it creates a unique encrypted deeplink. Even if you send identical requests, you get different links every time. Each link contains encrypted data that includes your agent information and the message content.
Rate Limiting
Standard Channel Manager API rate limits apply to deeplink generation. If you're running high-volume campaigns where you use the same parameters repeatedly, consider caching the deeplinks instead of generating new ones for each use.