Bird vs Vonage Number Insight for phone-number lookup
Compare the phone-number questions behind your routing and risk decisions. Map the result your application needs before replacing the lookup call.
Where Vonage Number Insight fits
Vonage Number Insight documents different levels of number information. A migration needs to account for the level and fields your application currently requests.
Read Vonage Number Insight documentation ↗Where Bird fits
Bird combines a base lookup with individually requested properties. The application reads each answered value and keeps unavailable results explicit before deciding the next customer step.
Explore Bird Lookup ↗Compare the integration you will operate
| Capability | Bird | Vonage Number Insight |
|---|---|---|
| Request model | Select the optional properties your application actually uses. | Identify the Number Insight level and options in the current request. |
| Field meaning | Map country, line type and optional signals using Bird field definitions. | Retain the documented meaning of each consumed Number Insight field. |
| Unanswered result | Check property status before using its value. | Review the old integration’s error and unavailable-result handling. |
Run the same customer journey
Compare normalized numbers, served fields and the chosen customer route across representative test inputs. Test an unavailable property so the new code cannot accidentally treat it as a definitive risk verdict.
Start the working example ↗Make the switch deliberately
Replace the decision adapter and its monitoring before removing the old integration. Preserve observation times and provider references needed to investigate different results.
Migrate from Vonage Number Insight ↗Inspect the number before you act.
Run the receiving lookup and map the returned fields to your application. Number metadata does not by itself establish reachability, customer identity or permission to message.
Run the complete quickstart ↗npm install @messagebird/sdkconst answer = await bird.lookup.phoneNumber({
phone_number: "+31612345678",
type: ["classification", "score"],
});
console.log(answer.country_code, answer.line_type);
// Only a block whose status is ok carries a value, and only that one is billed.
if (answer.score?.status === "ok") console.log(answer.score.value);Questions before switching
Does a lookup verify who owns the number?
How should I handle an unavailable property?
Choose your next step
Test it with your own workflow.
Start with the guide, or bring your integration and migration requirements to our team.