Quick take

Store one canonical E.164 phone number for sending, preserve the selected country and original input for support, and validate before creating OTP or alert attempts.

Phone-number data model

Keep sending data strict and support data explainable.

FieldPurposeExample
canonicalPhoneNumberThe E.164 value used for sending.+14155550123
countryIso2The selected or inferred destination country.US
nationalDisplayA user-friendly support display value.(415) 555-0123
originalInputThe value the user typed before normalization.415-555-0123
validationStateWhether the number can be used for SMS attempts.valid, invalid, ambiguous, unsupported
lastVerifiedAtWhen the phone number last completed verification.2026-05-26T09:00:00.000Z

Implementation notes

Ask for country context before parsing local numbers. Without a country, the same national number can mean different destinations.

For support, show the canonical number, destination country, validation state, and the exact number used for the send. That prevents a common debugging trap: investigating a route when the input was never valid.

  • Normalize before sending.
  • Keep country selection explicit.
  • Avoid storing only formatted display text.
  • Do not create duplicate OTP attempts for alternate formatting of the same number.

Start with clean recipient data

Notilify connects phone-number readiness to OTP, alert, and delivery tracking workflows.