Deliverability

How to choose a messaging channel by country

WhatsApp, Telegram, Viber, LINE, Zalo, RCS or SMS? How to pick a channel per country for messages customers expect, and measure it on your own base.

By Published 6 min read

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.

One phone number with three channel options; the messaging app where the number is registered is chosen.One phone number with three channel options; the messaging app where the number is registered is chosen.
Send on the channel where the number is registered.

Which channels matter, and where?

ChannelWhere it is strong (qualitative)Published scaleOur checkModes
WhatsAppDefault messenger in many countriesTwo billion users (WhatsApp, 2020)whatsapp, whatsapp.businessreal time + bulk
TelegramWidely used in a number of markets, often alongside another messenger"Over 1 billion active users" (Telegram FAQ, 2026)telegramreal time + bulk
ViberWidely used in parts of Eastern Europe and Southeast Asia—viberreal time + bulk
LINEWidely used in Japan and Taiwan—linebulk only
ZaloWidely used in Vietnam—zaloreal time + bulk
RCSDefault messaging on many Android phones; iPhone since iOS 18 (Apple, 2024)—rcs (with device_os)bulk only
iMessageiPhone users—imessagebulk only
SMSWorks 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 to fixed_line, toll_free or premium_rate numbers 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 carrier matters 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:

  1. Export the numbers of customers who opted in to messages, with their country if you have it.
  2. 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"].
  3. Download the CSV. It has a country column (derived from the number) and one <service>.registered column per check.
  4. 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):

NumberWhatsAppLINERCSiMessage
+447700900001truetruetruetrue
+447700900002falsefalsefalsefalse
+447700900010truetruefalsetrue

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":

Python
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 typeFirst choiceFallbackCondition
One-time passcodeConsented app channel with registered: trueSMS, then voiceShort timeout before fallback
Order and delivery updatesCustomer's preferred consented channelSMS or e-mailRegistration checked within the last month
Appointment remindersConsented app channel or RCSSMS—
Service outage noticesSMS (widest reach)E-mailEvery 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.

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: true answer 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_type before 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

  1. Two Billion Users: Connecting the World Privately — WhatsApp, 2020
  2. Telegram FAQ — Telegram, 2026
  3. iOS 18 is available today, making iPhone more personal and capable than ever — Apple, 2024
  4. WhatsApp Business Messaging Policy — WhatsApp, 2026
  5. 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.

All articles

Know before you send.

Tell us about your use case. We review every request and set you up with test and live keys.