On this page
The right messaging channel depends on the country, but more on the customer. Start from the channels a customer opted into, check which of them their number is actually registered on, and fall back to SMS. Country patterns help you decide which channels to offer at all. Your own registration rates per country tell you which ones are worth building.
Why does channel choice differ by country?
Messaging habits formed differently in each market. Where one app became the default early, most people use it for everything, from family chats to delivery updates. Elsewhere several apps share the market, or SMS stayed the everyday channel.
For a business sending messages people expect, such as passcodes, order updates or appointment reminders, this has direct consequences:
- Delivery. A message on a channel the customer doesn't use fails or sits unread.
- Cost. Where customers have opted into an app channel, sending there may cost less than an SMS to the same number, depending on your provider's rates.
- Features. App channels and RCS support rich media, buttons and read receipts. SMS does not.
- Compliance. Every channel has its own opt-in rules on top of data-protection law.
This guide covers seven channels and gives verified numbers only where a platform published them. Everything else is described qualitatively, because usage estimates from third parties vary widely and change quickly.
Which channels matter, and where?
| Channel | Where it is strong (qualitative) | Published scale | Our check | Modes |
|---|---|---|---|---|
| Default messenger in many countries | Two billion users (WhatsApp, 2020) | whatsapp, whatsapp.business | real time + bulk | |
| Telegram | Widely used in a number of markets, often alongside another messenger | "Over 1 billion active users" (Telegram FAQ, 2026) | telegram | real time + bulk |
| Viber | Widely used in parts of Eastern Europe and Southeast Asia | — | viber | real time + bulk |
| LINE | Widely used in Japan and Taiwan | — | line | bulk only |
| Zalo | Widely used in Vietnam | — | zalo | real time + bulk |
| RCS | Default messaging on many Android phones; iPhone since iOS 18 (Apple, 2024) | — | rcs (with device_os) | bulk only |
| iMessage | iPhone users | — | imessage | bulk only |
| SMS | Works on every mobile line | — | carrier (line type) | real time + bulk |
The published figures are global and self-reported by each platform. They tell you a channel is large, not that your customers in a given country use it. The next sections show how to measure that.
Is SMS still the baseline?
Yes. SMS is the only channel that reaches every mobile number without an app, so it is the fallback in every routing plan. Its weaknesses are cost, lack of rich features and exposure to abuse such as SMS pumping.
Two checks make SMS routing safer:
- Line type. The carrier lookup returns
line_type. Texts tofixed_line,toll_freeorpremium_ratenumbers usually fail, but may still be charged. Route those to voice or e-mail. - Current network. Where your provider prices by destination network, the current
carriermatters more than the prefix, because numbers move between networks. See why carrier lookups can be wrong.
A practical rule: never drop SMS from the plan, even in markets where an app dominates. It covers new customers, customers who changed phones and every case where an app check is unknown.
How do RCS and iMessage fit in?
RCS (Rich Communication Services) upgrades the phone's built-in messaging app with rich media, typing indicators and branded business messages. Many Android phones use it by default, and iPhone added RCS support with iOS 18 in 2024 for conversations with non-Apple devices. For a business this makes RCS attractive: no separate app is needed, and messages can fall back to SMS.
Our RCS capability check runs in bulk jobs and can return device_os, which helps you preview a rich message on the right handset platform. The iMessage check tells you whether a number is registered with Apple's messaging service, which indicates an Apple device. Both are bulk only, so run them over your opted-in base ahead of time rather than before each message.
Sending business messages over RCS usually also requires a messaging provider that supports it and an approved sender. A capability answer tells you the number can receive RCS, not that your sender can reach it there.
How do I measure channel reach on my own customer base?
Platform totals and market reports can't tell you what share of your customers in Vietnam use Zalo or what share in Japan use LINE. A bulk job over your consented customer base can. The method:
- Export the numbers of customers who opted in to messages, with their country if you have it.
- Estimate the job for free with
POST /v1/jobs/estimate, then create it with the channels you could actually send on, for example["whatsapp", "telegram", "viber", "line", "zalo", "rcs"]. - Download the CSV. It has a
countrycolumn (derived from the number) and one<service>.registeredcolumn per check. - Compute the registration rate per country and channel, counting only conclusive answers.
A job with three test numbers and four channels returned this (real test-mode results, trimmed to the registered values):
| Number | LINE | RCS | iMessage | |
|---|---|---|---|---|
+447700900001 | true | true | true | true |
+447700900002 | false | false | false | false |
+447700900010 | true | true | false | true |
Test answers are invented. Your live base will show real differences between countries.
What does the per-country analysis look like in code?
This Python sketch reads the downloaded CSV and prints the registration rate per country and channel. It skips unknown answers, so they don't count as "no":
import csv
from collections import defaultdict
CHANNELS = ["whatsapp.registered", "telegram.registered", "viber.registered",
"line.registered", "zalo.registered", "rcs.registered"]
yes, total = defaultdict(int), defaultdict(int)
with open("job-results.csv", newline="") as f:
for row in csv.DictReader(f):
if row["number_status"] != "valid":
continue # invalid, duplicate, suppressed: never checked
for ch in CHANNELS:
if row.get(f"{ch}.status") != "completed":
continue # unknown / unsupported: not a "no"
key = (row["country"], ch.split(".")[0])
total[key] += 1
yes[key] += row[f"{ch}.registered"] == "true"
for (country, ch), n in sorted(total.items()):
if n >= 200: # ignore small samples
print(f"{country} {ch:9} {yes[(country, ch)] / n:6.1%} (n={n})")Treat the output as a planning input: it shows where a channel integration pays off and where SMS remains the main route. Only customers who opted in belong in the input file. The results describe your base, not the country's population.
How should routing work once I have the data?
Combine three things per customer: the channels they consented to, the channels their number is registered on, and your cost and feature needs per message type. A routing table might look like this:
| Message type | First choice | Fallback | Condition |
|---|---|---|---|
| One-time passcode | Consented app channel with registered: true | SMS, then voice | Short timeout before fallback |
| Order and delivery updates | Customer's preferred consented channel | SMS or e-mail | Registration checked within the last month |
| Appointment reminders | Consented app channel or RCS | SMS | — |
| Service outage notices | SMS (widest reach) | Every affected customer |
Store each answer with its checked_at and treat registered: null as "no new information": keep the previous routing. Real-time checks (WhatsApp, Telegram, Viber, Zalo) suit onboarding, when a customer first gives you a number. Bulk jobs suit monthly refreshes of the whole base and are the only way to check LINE, RCS, iMessage and Signal. See channel selection for the full workflow.
What rules apply to consent?
Channel data is only useful for messages people agreed to receive. Three rules:
- Opt-in per channel. The WhatsApp Business Messaging Policy allows businesses to contact people only if they gave their number and opted in to receive messages. Other platforms and national SMS rules have similar requirements. A
registered: trueanswer is never a substitute for consent. - Lawful basis and minimal data. Checking a customer's number is likely to be processing of personal data. Under the GDPR you need a lawful basis (Article 6), and data minimisation (Article 5(1)(c)) suggests storing only what routing needs: the answer and its date. Your counsel can confirm what applies to you.
- No list building. Don't check numbers you don't already hold. Our API refuses sequential number ranges (
suspected_enumeration) and our acceptable use policy forbids unsolicited bulk messaging.
People can object to checks through the opt-out form. Suppressed numbers are skipped and not charged.
What are the key takeaways?
- Country patterns tell you which channels to integrate; per-customer checks tell you where to send. Use both.
- Verified public scale figures are few: WhatsApp reported two billion users (2020), Telegram reports over one billion active users (2026), and iPhone supports RCS since iOS 18 (2024). Treat other usage claims with care.
- SMS stays in every plan as the universal fallback. Check
line_typebefore sending. - WhatsApp, Telegram, Viber and Zalo checks run in real time. LINE, RCS, iMessage and Signal run in bulk jobs only.
- Measure registration rates on your own consented base with a bulk job, and skip unknown answers in the maths.
- Consent comes first. Registration means a channel can reach someone, not that you may message them. For the API details, see the WhatsApp check guide.
Sources
- Two Billion Users: Connecting the World Privately — WhatsApp, 2020
- Telegram FAQ — Telegram, 2026
- iOS 18 is available today, making iPhone more personal and capable than ever — Apple, 2024
- WhatsApp Business Messaging Policy — WhatsApp, 2026
- General Data Protection Regulation (EU) 2016/679 — European Union, 2016
Frequently asked questions
Which messaging channel should I use in each country?
There is no single table that fits every business. Start from the channels your customers opted into, check which of them each customer's number is registered on, and measure registration rates per country on your own consented base. Keep SMS as the fallback.
Can I check LINE, iMessage and RCS in real time?
No. LINE, iMessage, RCS and Signal checks run in bulk jobs only. WhatsApp, Telegram, Viber and Zalo checks run in real time and in bulk jobs.
Does registered on WhatsApp mean I can message the customer there?
No. Registration only means the channel can reach the number. You still need the customer's opt-in for that channel. WhatsApp's business messaging policy requires it.
How often should I refresh channel data?
Channel registrations change slowly. Monthly refreshes, plus a re-check after a failed delivery, are enough for most customer bases. Repeat checks inside the freshness window come free from your account's cache.
Related services and guides
- Use caseChannel selection for consented messaging
- ServiceCheck if a phone number is registered on WhatsApp
- ServiceCheck if a phone number is registered on Telegram
- ServiceCheck if a phone number is registered on Viber
- ServiceCheck if a phone number is registered on LINE
- ServiceCheck if a phone number is registered on Zalo
More from the blog
All articlesGuides
How to check if a phone number uses iMessage
What iMessage registration means, blue vs green bubbles, iMessage vs RCS on iPhone, what businesses can and can't send, and a bulk API example.
7 min read
Developers
How to check if a phone number is on WhatsApp with an API
How a WhatsApp registration check works, what registered, not registered and unknown mean, and how to call it responsibly from cURL, Node and Python.
8 min read
Guides
Telegram number check: a practical guide to what it can and can't tell you
How Telegram's phone and username model differs, what a registration check can and can't tell you, how privacy settings affect it, with API examples.
7 min read


