---
title: "Validate contact data in Omnisend"
url: "https://lookvalid.com/integrations/omnisend.md"
canonical_url: "https://lookvalid.com/integrations/omnisend"
last_updated: "2026-10-22"
type: "how-to"
summary: "Check the phone numbers on Omnisend contacts against their country numbering plan, and store the format and type back on each contact for cleaner SMS lists."
related: ["https://lookvalid.com/integrations.md", "https://lookvalid.com/docs/api/phone.md", "https://lookvalid.com/docs/quickstart.md"]
---

# Validate contact data in Omnisend

Check the phone numbers on Omnisend contacts against their country numbering plan, and store the format and type back on each contact for cleaner SMS lists.

Omnisend stores run SMS alongside email, and the phone number a shopper types at checkout is often missing a country code, has a stray digit or is a toll-free line. Omnisend contacts accept your own customProperties through its contacts API, so the formatted number and its type can be stored on each contact when it is created, which keeps your SMS segments to numbers that are well formed and of a textable type.

## What LookValid checks

- [Phone Numbering-Plan Validation](https://lookvalid.com/products/phone.md): Checks a number against its country numbering plan and returns international and national formats plus the type the plan assigns, such as mobile or fixed line. It cannot tell whether a number is active or reachable. (1 credit per valid number)
- [Country Calling Codes](https://lookvalid.com/products/country-code.md): Resolves a calling code or country name into dialing rules, so a shopper who typed a local number can be matched to the right country prefix. (1 credit per lookup (an unknown code, country or name is free))
- [IP Intelligence](https://lookvalid.com/products/ip.md): Gives country and network details for the address a shopper signed up from, a useful hint when the phone field is empty. (1 credit per lookup)
- [Email Domain Check](https://lookvalid.com/products/email-domain-check.md): Flags disposable and role-based domains on contact emails, judging the domain only and never contacting a mail server. (1 credit per address checked)

## Connect it in four steps

1. Register for LookValid and issue an API key from your account page.
2. Put the key in the environment of the handler that updates Omnisend contacts, as LOOKVALID_API_KEY, apart from your Omnisend API key, which Omnisend takes in an Authorization header in the form Omnisend-API-Key followed by the key, together with an Omnisend-Version header.
3. Send the contact phone number to the phone check; a found value of false means the number could not be read, so keep the contact and mark nothing, and an error answer should be logged with its code.
4. Send the returned values to the Create or update existing contact route of the Omnisend API as customProperties named lv_phone_e164, lv_phone_type and lv_phone_valid, identifying the contact by its email, then build SMS segments from lv_phone_type.

A webhook handler on your server that receives a new contact event from the store, checks the number, then updates the contact. The call is `POST https://YOUR_API_HOST/v1/phone`.

```js
const API_URL = "https://YOUR_API_HOST/v1/phone";

export async function validateOmnisendPhone(value) {
  const response = await fetch(API_URL, {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.LOOKVALID_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "phone": value,
    }),
  });
  const result = await response.json();
  if (!response.ok) throw new Error(`${result.error.code}: ${result.error.fix}`);
  if (!result.found) return null;
  return {
      "lv_phone_e164": result.data?.e164 ?? null,
      "lv_phone_type": result.data?.number_type ?? null,
      "lv_phone_valid": result.data?.valid ?? null,
  };
}
```

| Response field | Goes into |
| --- | --- |
| `data.e164` | lv_phone_e164 |
| `data.number_type` | lv_phone_type |
| `data.valid` | lv_phone_valid |

## Without code

You can do this without hosting code by using the generic HTTP request step of an automation platform: trigger on a new Omnisend contact, post the phone number to the LookValid endpoint with the key in the Authorization header, and add a second HTTP request to the Omnisend create-or-update contact route that sends the three values as customProperties. It needs no dedicated app, and the SMS segment is built on the stored type afterwards.

## Questions

### What does an Omnisend phone check cost?

It spends credits from your LookValid balance; the current rate for the phone check is on the pricing page.

### Does it tell me a shopper will receive the text?

No. It checks the number against the numbering plan only, so it cannot say whether the line is switched on, ported or reachable.

### Where does the API key live?

In the server environment of the code that updates Omnisend, as LOOKVALID_API_KEY, next to a separate Omnisend API key. Do not put either in a storefront script that shoppers can read.

## Sources

- [Omnisend API reference: create or update existing contact](https://api-docs.omnisend.com/reference/post_contacts.md), read 2026-10-18
- [Omnisend API reference: authentication](https://api-docs.omnisend.com/reference/authentication.md), read 2026-10-18

## Related

- [LookValid integrations](https://lookvalid.com/integrations.md)
- [Phone Numbering-Plan Validation reference](https://lookvalid.com/docs/api/phone.md)
- [Quickstart](https://lookvalid.com/docs/quickstart.md)
