Another channel. The same verification.

Keep the customer moving when a code does not arrive. Use the next eligible channel without restarting the verification’s expiry or attempt budget.

Another channel.
The same verification.

Keep signup moving when the first code does not arrive. Use the next eligible channel in the recipient’s plan.

Verification deliveryvrf_…1048
A
+1 555 123 4567One recipient · Two eligible channels
  1. WhatsAppDelivery failed
    Failed
  2. SMSNext eligible channel
    Code sent
HarborYour verification code is 123456.Delivered
Continue on SMS

The recipient can now enter the code.

Same verificationSame expirypending
Illustrative product records. These controls change the example only; no request or purchase is made.

Change the delivery.
Preserve the session.

Give an undelivered code another configured route.

Prepare an ordered plan.

Country configuration and the supplied recipient determine eligible channels. A delivery failure can advance through that plan automatically.

Respond to the customer’s request.

When the customer reports that nothing arrived, call next-channel with the original recipient. This deliberate switch does not wait for the resend cooldown; it moves only to a later eligible channel.

Handle an exhausted plan.

NoNextChannel means there is no later route; a resend on the current channel may be appropriate. Preserve the original expiry, check budget and all still-valid codes rather than creating competing sessions.

Scale without
losing control.

Organize teams in workspaces, control API access, and trace changes through audit logs.

BirdHarborOrganization
WorkspacesProductionSandbox

Delivery agent

API key · Customer operations team
Active
PermissionsAccess
EmailRead & write
SMSRead & write
ALAlex Lee AdminPermissions updated

Audit log

Production
Workspace
Production
Resource
Delivery agent
WhatsApp
Read accessRead & write
Succeeded

Start with Verify.
Build across channels with Bird.

Your next idea. Ready to connect.