Send RCS and SMS from CleverTap campaigns through OneXtel — providers, campaigns, callbacks, SMS fallback, and how each OneXtel error code reaches CleverTap.
The CleverTap connector adds RCS and SMS as sendable channels inside CleverTap. Campaigns are built
and triggered in CleverTap; a stateless middleware service translates each send into OneXtel’s
format and relays delivery reports, replies, and click events back.Because the connector holds no database of its own — every routing decision comes from the
incoming request — OneXtel can run it as multiple parallel instances. You deploy nothing.
Pick your channel once. The sections below have an RCS and an SMS tab. Choosing a tab
in any section switches every section on the page to that channel.
Every URL in this guide sits on one host. Copy them from here as you go.
Channel
Purpose
URL
RCS
RCS send
https://ct.onex-aura.com/rcs/send
RCS
Delivery reports and button replies
https://ct.onex-aura.com/dlr
RCS
Inbound messages
https://ct.onex-aura.com/inbound
RCS
URL clicks
https://ct.onex-aura.com/click
SMS
SMS send
https://ct.onex-aura.com/sms/send
SMS
SMS delivery reports — standalone SMS and RCS fallback alike
https://ct.onex-aura.com/delivery
—
Health check
https://ct.onex-aura.com/health
The host is onex-aura.com, with a hyphen. Dropping it gives you ct.onexaura.com, which
resolves to a real server that does not run the connector — so the mistake shows up as a timeout
or a silent failure rather than an obvious DNS error. Check the hyphen before you save anything.
Part A — Create the provider and configure RCS and SMS fallback
1
Create the provider
In CleverTap, go to Settings → Channels → SMS, add a provider, and set Provider to
Generic RCS Provider. Give it a clear nickname.
2
Set the messaging endpoint
Field
Value
Request Type
POST
HTTPS Endpoint
https://ct.onex-aura.com/rcs/send
Authentication
No Authentication
Headers
Key apikey → your OneXtel API key
Authentication is set to none because the API key travels as a header, not as an auth
scheme CleverTap manages.
Provider Configuration — provider, messaging endpoint, and the apikey header
3
Set the RCS sender and body parameters
Set RCS Sender ID to your OneXtel RCS sender profile, or to a
pool. If you use a pool, only
templates assigned to that pool will resolve. If your account has more than one sender
profile, you can also choose the profile per campaign with an optional sender_id pair —
see Part C.
Sending from several senders through one provider. CleverTap fixes the RCS Sender ID on
the provider, not on the campaign, so by default one provider sends from one profile. If you
run several brands or senders on one CleverTap project, put a placeholder of the form
<brand>_onextel_rcs in RCS Sender ID instead of a real profile — for example
acme_onextel_rcs.OneXtel reads any sender ID in that shape as a placeholder rather than a real sender, and
takes the actual profile from the sender_id key-value pair on each campaign. That pair
stops being optional and becomes required: a campaign that omits it is rejected rather than
sent from the placeholder.The same applies to SMS, with <brand>_onextel_sms and the SMS provider’s Sender ID.
One provider and one endpoint then serve every sender on the account.
Under RCS Body Parameters, add these key-value pairs. The $$ syntax tells CleverTap to
fill the value from the campaign’s custom params.
Key
Value
message_type
$$message_type
template_id
$$template_id
RCS Config — sender ID and body parameters
4
Enable SMS fallback
Turn on SMS Configuration / Enable Fallback SMS and set SMS Sender ID to your
OneXtel SMS sender ID.Under SMS Body Parameters, add:
Key
Value
type
$$type
templateId
$$templateId
unicode
$$unicode
entityId
$$entityId
fallback_id
$$fallback_id
SMS Configuration — fallback sender and body parameters
5
Save, then copy both callback URLs
Save the provider, then reopen it. Under Callback Config you will find two
read-only URLs. Copy both — you paste them into OneXtel in
Part D.
URL
Used for
Delivery Report Callback URL
Delivery reports, clicks, and SMS fallback reports
Inbound Message Callback URL
Inbound replies — carries a providerId parameter
The Inbound URL only appears after you reopen the saved provider; immediately after the
first save you may see only the Delivery Report URL.
You do not need a CleverTap template to send a OneXtel template. The template_id key-value pair
you add to the campaign in Part C tells OneXtel
which approved template to send, and the campaign’s other key-value pairs fill its variables. A
Text Free Form campaign with the right pairs is enough.Add templates here only when you want to build campaigns from them inside CleverTap — for
example, to start from a prebuilt card or carousel layout in the campaign composer.To add one, open the saved provider, switch to its Templates tab, and create the template
with the exact same name as its OneXtel template code — for example payment_success_onex —
and the same type (Text, Rich Card or Carousel). Template names are unique per provider, so the
same name can be reused across a UAT and a production provider.CleverTap documents this in
Generic RCS → Add a Template
and, for the fields of each template type, in
RCS Message Templates.
Do not use CleverTap’s {{1}} placeholders to personalize. CleverTap’s template editor
recommends positional variables such as {{1}} and {{2}}, but their values are not passed to
OneXtel. If a template you add here contains them, CleverTap still asks for a value before it
lets you publish — fill it with anything. What the recipient sees comes from the campaign’s
key-value pairs, set up in Part C.
Everything OneXtel needs to render the message travels in the campaign’s RCS Body Key-Value
Pairs: which template to send, its message category, and the value of each variable.
1
Create the campaign
In CleverTap, create a new campaign. Under From, select the provider you created in
Part A. Under Who, choose your audience. Under What, choose the Text Free Form
type and enter a message body — or, if you added templates in Part B, pick one of those.When the campaign sends a OneXtel template through template_id, the body you enter here is
only what CleverTap shows while you build. The recipient receives the OneXtel template.
2
Add the RCS key-value pairs
Key
Example
Notes
message_type
Transactional
Promotional or Transactional
template_id
payment_success_onex
The OneXtel template to send. Omit to send the composer output instead
sender_id
Acme_1
Optional — only when your account has more than one sender profile. Names the profile to send from; omit it to use the provider’s RCS Sender ID. Required, not optional, when the provider’s RCS Sender ID is a <brand>_onextel_rcs placeholder. The template_id template must belong to this profile
custom_param1
@Profile - Name | default: "Customer"
One pair per template variable. The key is the placeholder name from the OneXtel template, without the square brackets. The value is a CleverTap personalization token
any other key
—
Passed through to OneXtel as a template placeholder value
Campaign composer — RCS body key-value pairs
To personalize a template variable, add a key-value pair for it here, in the campaign’s
What section — not in the provider setup. Type @ in the value field to open
CleverTap’s personalization menu, choose the user or event property, and set a default for
recipients who do not have it. CleverTap resolves the token for each recipient at send time
and the connector passes the resolved value to OneXtel under the same key.If the OneXtel template reads Hi [custom_param1], the key is custom_param1. A key that
does not match the bracketed name character for character leaves the placeholder unfilled
on the handset.
Campaign composer — a personalized key-value pair for the template placeholder
Toggle on Fallback SMS, enter the fallback text, and add:
Key
Example
Notes
fallback_id
4f2005fa-…
The fallback configuration ID from your OneXtel account
templateId
Your DLT template ID
Required for Indian sends
entityId
Your DLT entity ID
Required for Indian sends
type
SI
Must match the DLT template’s registered category
unicode
0
1 if the body contains non-ASCII characters
Campaign composer — Fallback SMS block and its key-value pairs
4
Save the campaign as a draft
Save the campaign, but do not publish it yet. Set up the callbacks in Part D first, so
the delivery reports, replies, and clicks from the very first send reach CleverTap.
A fallback only fires if the SMS block is complete. If fallback_id, templateId, or
entityId is missing or misnamed, the RCS send still goes out normally — but the fallback
silently lacks what OneXtel needs, and that failure is not surfaced back to CleverTap as an
error. Verify the fallback explicitly rather than assuming it works.
type values are narrower than earlier guides stated. Live testing accepts only SI, OTP,
and SE — TXN, TRANS, and Promo are rejected as invalid type. See
Send SMS — India.
Before you publish, create four callbacks in OneXtel. They carry delivery reports, replies,
clicks, and fallback reports back to CleverTap. Each one needs a custom header named callback,
set to one of the two CleverTap URLs you copied at the end of Part A.
Webhook
Channel
Type
Callback URL
callback header
RCS DLR
RCS
Delivery Notification
https://ct.onex-aura.com/dlr
Delivery Report URL
Inbound
RCS
Incoming
https://ct.onex-aura.com/inbound
Inbound Message URL
URL Click
RCS
URL Click
https://ct.onex-aura.com/click
Delivery Report URL
SMS fallback DLR
SMS
Delivery Notification
https://ct.onex-aura.com/delivery
Delivery Report URL
All four use HTTP Method POST.
These are two different URLs, and swapping them is the most common setup error. Pasting the
Delivery Report URL where the Inbound URL belongs causes CleverTap to reject the relay with
providerId query parameter is required for replied events.
Two things that catch people out:
RCS delivery reports and suggestion-button replies share the /dlr webhook — OneXtel
sends both there.
The SMS fallback report is a genuinely separate webhook on the SMS channel. Do not reuse
the RCS DLR entry for it.
Send to a small test audience first, and confirm each of these independently before sending to
everyone:
1
Publish to a test audience
Open the draft, choose the send time, review the summary, and publish it to test devices you
control — including one number that is not RCS-capable, for the fallback check.
2
Confirm RCS delivery
A test send shows as Delivered in OneXtel reporting, and the same event appears in
CleverTap’s campaign stats.
3
Confirm inbound replies
A reply from a test device appears in CleverTap under People, in that profile’s event
timeline.
4
Confirm click tracking
A button or URL click on a template message reaches CleverTap.
5
Confirm SMS fallback
An RCS send to a genuinely non-RCS-capable number triggers the fallback, the SMS arrives,
and its delivery status comes back through the /delivery webhook.
6
Go live
Once all four check out, send the campaign to your full audience.
Personalization happens in CleverTap, before the send reaches OneXtel, and it travels entirely in
the campaign’s RCS key-value pairs. The connector does not substitute anything itself: it forwards
each campaign key-value pair to OneXtel as a template variable under the same key name, and
OneXtel fills the matching [placeholder] in the approved template. The step-by-step is in
Part C; this section is the reference.
Key
Value
Example
template_id
The OneXtel template code
ct_var2
message_type
Promotional or Transactional
Promotional
sender_id — optional
The OneXtel sender profile, only when the account has more than one
Acme_1
The placeholder name, without brackets
A CleverTap @ personalization token, with a default
custom_param0 set to @Profile - Name | default: "Customer"
CleverTap’s recommended method — positional {{1}} placeholders — does not personalize
OneXtel templates. Their values are not passed to OneXtel. Use key-value pairs named after the
OneXtel placeholders instead. Creating a matching template in CleverTap is optional — see
Part B.
When you create OneXtel templates for CleverTap, name the variables [custom_param1],
[custom_param2] and so on. Any name is accepted, but one convention keeps campaigns
predictable. To check an existing template’s variable names, open it in the OneXtel portal or
use Fetch templates.What the connector sends to OneXtel for a custom_param1 pair resolved to Kabir Sethi:
Provider-level parameters are not personalized per user. A key added under
RCS Body Parameters in the provider setup (Part A) takes one value per campaign. Per-user
values must come from a key-value pair added on the campaign itself, in the What section.
CleverTap’s composer cannot reference a saved OneXtel template by ID directly. To send one, use
the template_id custom parameter — every other custom param on that campaign is then passed
through as a placeholder value.
This is currently the only reliable way to get a working URL-action or dial-action button.
Ad-hoc, non-template cards reliably support only a plain Reply button.
Standalone SMS uses its own CleverTap provider — a Generic SMS Provider — separate from the
RCS provider and from the fallback SMS block inside it. A project can run both.
In CleverTap, go to Settings → Channels → SMS, add a provider, and set Provider to
Generic SMS Provider. Give it a clear nickname — it is what you pick in the campaign
composer.
2
Set the messaging endpoint
Field
Value
Request Type
POST, with a JSON body
HTTPS Endpoint
https://ct.onex-aura.com/sms/send
Authentication
No Authentication
Headers
Key apikey → your OneXtel API key
As with RCS, the API key travels as a header rather than an auth scheme CleverTap manages.
3
Set the request body
Paste this into the provider’s parameters JSON, then replace the last three values with your
own:
The $$ values are CleverTap’s own macros and stay exactly as written — CleverTap fills them
for each recipient at send time.
Key
Value
Notes
to
$$To
Recipient number
body
$$Body
Message text. Must match the DLT template word for word
templateId
$$TemplateID
The DLT template ID, set per campaign
msgId
$$MessageID
Required. CleverTap matches each delivery report to its message by this value
campaignId
$$CampaignID
Passed to OneXtel as the campaign name, for reporting
senderId
Your DLT sender ID
For example ONEXTL
entityId
Your DLT entity ID
The principal entity ID the templates are registered under
type
SI, OTP or SE
The DLT category the template is registered under. Case-sensitive; defaults to SI if left out
unicode
1
Optional. Add it for bodies with non-ASCII characters. Any value other than 0 or 1 is ignored
urlTracking
1
Optional. Turns link shortening ON. Leave it out and your links are sent untouched — see below
Key names are exact. A misspelled key — templateID instead of templateId, say — is
dropped without an error, and the SMS goes out without it. Keep the quotes around every value
too: a long ID sent as a bare number loses digits before it arrives.
To choose a value per campaign instead of fixing it here, make it a CleverTap custom
replacement — for example "senderId": "$$senderId". CleverTap then asks for it as a
required field on every campaign that uses this provider.
Link shortening is off by default. Your links are sent exactly as written unless you ask
for shortening. Add "urlTracking": "1" to the parameters JSON to turn it on: every link in
the message body is then rewritten to a OneXtel short link, and the taps are counted in
OneXtel’s Clicker Data and Clicker Details reports.Those taps stay in OneXtel. SMS clicks are not sent back to CleverTap — the /click
webhook above carries RCS URL clicks only, so turning this on will not populate click metrics
on your CleverTap SMS campaign. If you want SMS clicks in CleverTap, use CleverTap’s own link
tracking instead, and leave urlTracking off so the link is not rewritten a second time.Shortening is opt-in because the rewrite has consequences under DLT — once it is on, the
OneXtel short domain has to be whitelisted on the DLT template in place of your own link’s
domain, so switching it on without updating the template registration gets the message
rejected at scrubbing.Values 1, true, yes and on turn it on; anything else, including a missing or
misspelled value, leaves your links untouched.
4
Save, then copy the callback URL
Save the provider, then reopen it and copy the Delivery Report Callback URL under
Callback Config. You paste it into OneXtel in
Part B.
In OneXtel, go to Configuration → Add New Callback and add the SMS delivery callback against
the same API key you put on the provider:
Field
Value
Channel
SMS
Type
Delivery Notification
HTTP Method
POST
Callback URL
https://ct.onex-aura.com/delivery
Header
Key callback, value = the Delivery Report Callback URL from Part A
Callback Format
Default
The callback header is required. It tells the connector which CleverTap account the report
belongs to. A report that arrives without it is rejected with code 2004 and never reaches
CleverTap. Never save a callback with an empty header row either — OneXtel then sends a header
with no name, which the connector’s web server refuses.
If you also run RCS with SMS fallback on the same API key, this is the same callback as the RCS
tab’s SMS fallback DLR — one SMS delivery callback serves both.
In CleverTap, create an SMS campaign. Under From, select the Generic SMS provider from
Part A, and choose your audience under Who.
2
Write the message and set the DLT template ID
Under What, enter the message exactly as registered on DLT, with personalization where
the template has variables, and set the DLT template ID CleverTap passes as $$TemplateID.
Fill any custom replacements you added to the provider body.
3
Save the campaign as a draft
Save it, but do not publish until the Part B callback is in place — otherwise the delivery
reports from the first send never reach CleverTap.
A send OneXtel refuses comes back in the provider’s reply with code 900 and OneXtel’s own
reason, rather than as a delivery report — see Error code mapping.
3
Confirm delivery
The SMS arrives, shows as Delivered in OneXtel reporting, and the same event appears in
CleverTap’s campaign stats.
4
Go live
Once both check out, send the campaign to your full audience.
CleverTap’s Preview & Test sends all share one placeholder message ID, so their delivery
reports cannot be matched one-to-one. Judge delivery tracking from a real test campaign.
The connector translates OneXtel’s outcome codes into CleverTap’s own vocabulary, so campaign
stats in CleverTap show a CleverTap reason. OneXtel’s original description travels with each
failure in the description field.
RCS
SMS
Delivery events
OneXtel RCS event
CleverTap event
MESSAGE_DELIVERED
delivered
MESSAGE_READ
viewed
SEND_MESSAGE_FAILURE
failed, with a code from the table below
Suggestion reply
replied
Suggestion action or URL click
clicked
SEND_MESSAGE_SUCCESS
Not forwarded — CleverTap waits for delivered or failed
Failure codesRCS failure codes differ by operator — Jio and Vi reuse the same numbers for different
conditions — so the connector classifies a failure by the operator’s wording rather than its
number.
The failure says
CleverTap code
RCS disabled, not RCS enabled, invalid phone or number, user not found, or Vi 404-A / 400-H
910 Invalid subscriber
Anything else — for example template errors, opt-outs or throttling
914 Undelivered
For what each operator code means, see RCS error codes.Connector response codesWhen the connector refuses a request itself, it answers with one of these:
Code
Meaning
2000
Missing apikey header on a send, or OneXtel rejected the API key
2001
Invalid send — a missing or wrong message_type, a missing fallback_id or fallback sender, or OneXtel answered HTTP 400
2004
A OneXtel callback arrived without its callback header — the report is not relayed
2014
OneXtel did not confirm the message, or another upstream failure
Send responsesEvery send gets the Generic SMS reply CleverTap expects: status of success, partial or
fail. A rejected message is listed under unprocessed with code 900 and OneXtel’s own reason
in error — for example an invalid type, a DLT mismatch caught at submission, or a rejected
number. A missing apikey header is the one exception: it is refused with HTTP 400, code 2000.Delivery reportsA report is delivered only when OneXtel’s code is 000. Every other code is reported as
failed, with the CleverTap code below. The India codes appear in both their three-digit and
six-digit forms — see India SMS error codes.
CleverTap code
CleverTap meaning
OneXtel codes
901
DND failure
218, 978, 900107
902
Spam detected
224, 973, 900102
903
Blacklist rejected
974, 976, 900103, 900105, 900129
904
System error — a problem on the sending account or platform, not the recipient
Any code not in the table falls back to the report’s status: UNDELIV or UNDELIVRD becomes
914, EXPIRED becomes 916, and anything else becomes CleverTap’s generic 900. Within the
DLT band this now applies only to 202, 212, 217, 219 and 221, which OneXtel’s error-code
sheet does not define — they are left to the status fallback rather than reported as a DLT
failure on the strength of their position in the numbering.
Two codes are mapped on how they arrive in practice rather than on their table meaning. 208
arrives on live reports described as Absent subscriber, so it maps to 914; 313 always
arrives with the status EXPIRED, so it maps to 916.
The same mapping applies to the SMS leg of an RCS fallback — both report through /delivery.
Promotional or Transactional. OTP is not a valid RCS message type
template_id / templateid
No
Selects a pre-made template; both spellings accepted
sender_id
No
Only for accounts with more than one sender profile. Omit it to use the provider’s RCS Sender ID. Required when that field holds a <brand>_onextel_rcs placeholder
any other key
No
Passed through as a template placeholder. Key must equal the [placeholder] name in the OneXtel template; value may be a personalization token — see Personalize a template
SMS fallback key-value pairs
Key
Required
Notes
fallback_id
Yes
Fallback configuration ID in OneXtel
templateId
For DLT sends
DLT-approved SMS template ID
entityId
For DLT sends
Your DLT entity ID
type
No
Must match the DLT template’s category
unicode
No
1 for non-ASCII bodies
Generic SMS provider body
Key
Required
Notes
to
Yes
$$To
body
Yes
$$Body
msgId
Yes
$$MessageID. Without it, delivery reports cannot be matched
senderId
Yes
Your DLT sender ID
templateId
For DLT sends
$$TemplateID — the DLT template ID
entityId
For DLT sends
Your DLT entity ID
campaignId
No
$$CampaignID, used as the OneXtel campaign name
type
No
SI, OTP or SE, case-sensitive. Defaults to SI
unicode
No
1 for non-ASCII bodies, 0 otherwise
Behind the scenes the connector calls OneXtel’s send API — /oapi/send_sms for RCS and
/send_sms for SMS, both on https://api.onexaura.com. You never configure these directly;
they are here for troubleshooting.
Template previews will not match the real message. CleverTap renders through its own
composer, so what you see when building is not what the recipient receives. Confirm with a
test send.
Fallback failures are silent. An incomplete SMS block does not raise an error in
CleverTap.
Composer templates cannot use saved OneXtel templates directly — use template_id.
CleverTap’s {{1}} placeholder values are not passed to OneXtel. Personalize through a
campaign key-value pair named after the OneXtel placeholder instead — see
Personalize a template.
RCS failure codes are coarse. Every failure reaches CleverTap as 910 or 914; the
operator’s own code is in OneXtel reporting.
Inbound SMS is not supported. Replies to an SMS are not relayed to CleverTap.
India only. Numbers are sent to OneXtel’s India platform with the +91 prefix; a leading
91 on a longer number is treated as the country code.
Rejections at submission all carry code 900. The specific reason is in the error text,
not the code.
unicode is not detected for you. Set it on the provider body when your templates use
non-ASCII characters.
If a campaign does not behave as this page describes, email
omni.tech@onextel.com with the plugin name (CleverTap), the
provider nickname, and what you saw. To let OneXtel see exactly what CleverTap sent and what
OneXtel answered:
1
Ask for the logging endpoint
Support will give you a logging version of the connector’s send URL for the affected
channel.
2
Point the provider at it
In CleverTap, open the provider under Settings → Channels → SMS and replace the
HTTPS Endpoint with the logging URL. Keep the apikey header and everything else as
it is.
3
Run the campaign again
Send the campaign to a small test audience.
4
Share the campaign ID
Reply to support with the CleverTap campaign ID, shown under the campaign name in the
campaigns list. OneXtel matches it against the logged requests and responses and comes
back with the exact cause.
Switch the endpoint back to the normal connector URL — https://ct.onex-aura.com/rcs/send or
https://ct.onex-aura.com/sms/send — once the issue is closed.