Sign up and contact support to get 100 free checks.Sign up free
CarrierLookup workflow illustration for Empty Carrier Lookup Results: Completed, Missing and Undetermined Outcomes
A visual overview of the workflow discussed in this CarrierLookup article.

A decision guide for preserving the meaning of empty and unavailable carrier lookup outcomes.

An empty carrier lookup result does not always mean the same thing. A completed single lookup can have empty carrier details, a synchronous multi row can lack a normal result, and an undetermined check can return a non-zero business outcome instead of completed data. These cases need separate states in an application database. Keep the input number and attempt outcome alongside any carrier fields, and show unavailable information as unavailable. None of these outcomes by itself establishes whether a number is active, whether it can receive a message, or which network currently serves it after porting.

Classify an empty carrier lookup result before using it

Start with the business outcome, then read the available fields. A completed single lookup may have no carrier values even though the lookup was completed. Blank carrier, underlying carrier, region, or city values mean those pieces of allocation context were unavailable in that result. They do not turn the completed attempt into an invalid-number determination. A completed result can still be a billable completed lookup under the product contract, so billing and data interpretation must remain separate concerns.

A synchronous multi check has an ordered row for each submitted number. When a row has no normal result, label the enrichment unavailable for that input. Avoid converting that state into “not a number,” “no operator,” or “disconnected.” A separate undetermined business outcome means the service did not produce a completed carrier result; it should not be saved as an all-empty completed row. The official API documentation is the source for the current outcome codes and integration contract.

The practical distinction is between missing information and a factual negative. A carrier lookup supplies original allocation context when available. It does not offer a negative verdict about service status, ownership, or contactability.

Keep transport, business and data outcomes separate

A data pipeline usually has three layers to inspect. First, did the HTTP request reach the service and yield a usable response? Second, did the service report a completed lookup or another business outcome? Third, which allocation fields were populated? A single Boolean “carrier found” collapses these layers and creates downstream errors. An HTTP timeout may leave the application without a response at all. A business response can be undetermined. A completed response can have empty optional details.

Model these distinctions in your own storage without pretending they are response properties. For example, an application may use the internal labels completed_with_details, completed_empty, multi_unavailable, undetermined, input_rejected, and transport_error. Store a timestamp and the normalized E.164 input with the state. Keep optional carrier and allocation fields nullable or empty as appropriate, without populating them with guessed values.

Make the state visible to analysts. A dashboard should say “allocation information unavailable from this check” rather than imply that the number is inactive. A data export should preserve the state column so that downstream spreadsheet users do not interpret a blank cell as a verified negative. If a CRM field only accepts text, add a separate provenance or review field instead of inserting a misleading carrier name.

Set retry and review rules for each outcome

Input rejection calls for correction, not blind retry. Check for a leading plus sign, country code, and subscriber number with no spaces or separators. A local number cannot safely be made international by guessing its country. Twilio’s E.164 error guide provides a useful description of common formatting failures, but CarrierLookup’s own documentation controls its API rules. Queue malformed or ambiguous source records for normalization and retain the original text for an authorized reviewer.

A transient transport error can be retried under an application policy with backoff and a cap. Do not treat a local timeout as evidence that the remote service did no work. An undetermined outcome may merit a limited later retry if the workflow needs more context, but it should remain undetermined until a new completed result arrives. Rechecking a completed empty result is a separate editorial or business decision: repeated requests are not a promise that unavailable allocation data will appear. Track repeated attempts to avoid hidden loops and unnecessary use of shared balance.

For synchronous multi, preserve the whole request context, its ordered inputs, and the corresponding outcomes. If a multi request times out as a whole, do not write partial success rows. Requeue the group according to your policy or move it to manual review. Keep any successful later attempt as a new observation rather than silently rewriting the historical outcome.

Use original allocation context cautiously in contact records

When a normal result contains a carrier, the name describes the carrier to which the number range was originally allocated. Porting can change the serving network, so the result is not a current-carrier observation. Number type and allocation region can help a team sort records for review, while region and city refer to the number range rather than a person or device location. Do not use those fields as proof of consent, ownership, identity, activity, or message reachability.

Apply the same boundary to empty results. A blank region should not be filled from a contact’s mailing address; those are different concepts. An empty carrier should not be inferred from the area code or a third-party prefix table without recording a separate source and method. If a team needs a different question answered, such as whether a contact still uses a number, it needs an appropriately scoped process and evidence, not a reinterpretation of carrier allocation data.

A useful quality review samples records from each outcome class and checks how they appear in the CRM, CSV export, and analyst reports. Verify that a completed empty result remains distinct from a failed attempt after every transformation. Also review joins and deduplication: two contact rows can share an input number but have different source record keys, so the lookup outcome should not silently overwrite unrelated contact evidence.

FAQ

Does an empty carrier field mean a number is invalid?

No. A completed lookup can return empty allocation fields while remaining a completed lookup. Store the completion state separately from the empty field and describe the carrier detail as unavailable. Number validity, service status, and reachability are different questions. If the input was rejected for format, record that as an input problem rather than folding it into the completed-empty category.

How should teams handle a multi row without a normal result?

Preserve the row’s input position and the corresponding source record key, then mark its enrichment outcome unavailable. Do not label the number disconnected or carrierless. The synchronous multi response follows input order, so positional mapping is the dependable way to associate a row with the submitted number. A later attempt, if justified, should be stored as a new observation.

Should an undetermined check be stored as a completed empty lookup?

No. An undetermined business outcome did not return a completed carrier result. Give it its own state and retain the attempt time and input for review. A bounded retry may be reasonable for a workflow that needs the data, but the earlier undetermined state should remain in the audit trail. It should not become an empty carrier fact merely because no value is available.

Learn More

Choose the product information that fits the next step in your workflow.

Sources