Skip to main content
Vero stores a user’s phone number in the phone_number property and uses it as the delivery address for every SMS you send. Phone numbers should be stored in E.164 format, the international standard for phone numbers. Vero is forgiving about how you punctuate a number, but strict about one thing: it must carry a country code. Numbers without one can’t be delivered.

The E.164 format

An E.164 number is made up of three parts:
  • A leading + — for example +61412345678.
  • The country code1 for the United States and Canada, 61 for Australia, 44 for the United Kingdom.
  • The subscriber number — the national number, with any leading trunk zero removed.
The whole number, not counting the +, is a maximum of 15 digits.

What Vero accepts

Separators are stripped before the number is checked, so all of these are read as the same valid number: We recommend storing numbers as plain E.164 (+61412345678) anyway. It’s unambiguous, it’s what Vero displays back to you, and it avoids relying on the tolerances above.

Formats to avoid

A number with no country code will never be delivered. There is no default country — Vero can’t assume one from your account or the recipient’s other data, and a region_code on the profile can’t rescue it. A national-format number is rejected outright.
  • 0412345678, 07911123456, (555) 123-4567 — national formats with no country code. These are the most common cause of undelivered SMS. If you collect numbers from users in a single country, add the country code before sending them to Vero.
  • Placeholder and test numbers. Vero checks numbers against each country’s real numbering plan, not just their shape. Reserved ranges used in examples and test data — such as US 555-01xx numbers or UK 07700 900xxx numbers — are well formed but not valid, and will fail. Use real numbers when testing.
  • Numbers with trailing text. An extension written as +61412345678;123 is tolerated, but +61412345678 ext 12 is not — the extension digits get absorbed into the number and corrupt it.
Passing the check means a number is well formed for its country’s numbering plan. It does not mean the number is in service — a correctly formed number in a valid range will pass even if nobody holds it.

Adding a phone number to a profile

You can set phone_number when you identify a user via the API:
You can also supply a phone_number column when you import an audience from a CSV. The same format requirements apply. Only one phone number can be stored per profile. Read more about channel addresses on user profiles.

When phone numbers are checked

Phone numbers are not validated when you add them. A badly formatted number is accepted onto the profile and into your audience, and looks no different to a valid one. It fails later, per-recipient, at the moment Vero tries to send.
This means a poorly formatted number won’t stop your campaign from launching, and you won’t see a warning while building your audience. If a country’s numbers are being stored in national format, every one of those recipients is dropped individually at send time — so check your campaign logs, not your audience, when SMS aren’t arriving. A check runs as part of quiet hours compliance, which applies to marketing messages. Vero uses the country code to work out which country a recipient is in, and therefore which quiet hours apply to them. Vero stores the number exactly as you submit it — it isn’t rewritten to E.164 on your behalf, so the value on the profile is always the value you sent.
Store a region_code property on each profile — a timezone name like Australia/Sydney or America/New_York — so Vero can determine a recipient’s timezone directly instead of estimating it from their phone number. Note that region_code supplies the timezone only; it can’t stand in for a missing country code.

Troubleshooting

If your SMS messages aren’t sending, check your campaign logs for these errors:
  • Invalid phone number — the value in phone_number isn’t a valid number. The usual causes are a missing country code, or a placeholder number from a reserved range.
  • Unknown country — Vero couldn’t determine a country from the number. This almost always means the country code is missing.
  • Unknown region or Unknown timezone — Vero couldn’t resolve a location or timezone for the recipient. Add a region_code to the profile.
Read more about SMS quiet hours compliance for the full list of reasons a message may not be sent.