Every reliable click-to-chat link — wa.me, viber://, signal.me, t.me, zalo.me — expects a phone number in the same format: E.164. If you hand a link the number in the wrong shape, it silently fails. This is the #1 reason people say "the link didn't work."
What E.164 is
E.164 is the ITU's international numbering standard. A conforming number is:
- Up to 15 digits total (including country code).
- Country code first (1 to 3 digits).
- Optionally prefixed with
+. - No spaces, no dashes, no parentheses, no dots.
Examples:
- UK mobile:
+447700900123 - US mobile:
+14155552671 - Hong Kong mobile:
+85298765432 - India mobile:
+919876543210 - Brazil mobile:
+5511987654321
The plus sign: sometimes yes, sometimes no
Different link formats disagree on whether the plus sign belongs:
wa.me/— no plus sign.wa.me/85298765432.viber://chat?number=— plus sign required.viber://chat?number=+85298765432.signal.me/#p/— plus sign required.zalo.me/— no plus sign.tel:(dial pad) — plus sign optional but strongly recommended for international dialing.
Ringlink handles this for you. Internally we always store numbers in E.164 with the plus sign, and format per-link at launch time.
The trunk prefix trap
Most countries have a "trunk prefix" — a leading digit or two you dial for domestic calls but drop for international. This is where users get it wrong most often:
- UK: domestic
07700 900123→ international+44 7700 900123. Drop the leading 0. - France:
06 12 34 56 78→+33 6 12 34 56 78. Drop the 0. - Germany:
0171 1234567→+49 171 1234567. Drop the 0. - Russia:
8 (925) 123-45-67→+7 925 123 45 67. Drop the 8, add +7. - Italy:
333 1234567→+39 333 1234567. Keep the leading digit — Italy doesn't use trunk zeros for mobiles.
North American Numbering Plan (NANP)
The US, Canada, most of the Caribbean, and some Pacific territories all share country code +1. Numbers look like area-code + 7 digits: +14155552671. There's no trunk prefix to drop — the "1" you dial for long distance IS the country code.
Special numbers to avoid in links
- Toll-free numbers (US 800, UK 0800, etc.) — many don't route from outside the country. Don't put them in international WhatsApp links.
- Short codes — 4–6 digit codes used for SMS services (like
32665for Facebook). Not phone numbers; won't work in any messenger link. - Premium-rate numbers — often can't receive messages at all.
How to test a number quickly
- Type it into Ringlink with the country flag picked.
- If Ringlink accepts it, it's E.164-valid.
- If a messenger tile fails to open, the specific app doesn't have that number registered — but the format is right.
Storing numbers programmatically
If you're building a system that will eventually feed into messenger links, always store numbers as E.164 strings with the plus sign. Every mainstream phone-number library (Google's libphonenumber, the many JavaScript ports) accepts E.164 as input and can format it for display. Store canonical; format for humans; never the other way around.