# Zapier phone number checks

> Check WhatsApp, carrier, HLR and more in your Zaps: our Zapier app is in review; today, call the MobileValidate API with Webhooks by Zapier.

Canonical: https://mobilevalidate.com/integrations/zapier · Last updated: 2026-11-08

Our Zapier app is in review and coming soon; this page will say when it is public. You can check numbers in a Zap today: the **Webhooks by Zapier** action sends one POST request to the MobileValidate API and returns the answer to the next steps, for example to tag a lead in your CRM. You pay only for conclusive answers.

**Status:** In review — coming soon

## Use Webhooks by Zapier today

1. Add an action step: **Webhooks by Zapier** › **Custom Request**.
2. **Method:** `POST`. **URL:** `https://api.mobilevalidate.com/v1/lookup`.
3. **Data:** the JSON body below. Insert the phone field from your trigger in place of the number.
4. **Headers:** `Authorization` = `Bearer ` followed by your API key, and `Content-Type` = `application/json`.
5. Test the step. The response fields can then be used in Filter, Paths and later actions.

```json
{"numbers": ["+447700900001"], "checks": ["whatsapp", "carrier"], "wait": 20}
```

Webhooks by Zapier is one of Zapier's premium apps; check that your Zapier plan includes it.

This is the same request as this `curl` call (it runs as pasted):

```bash
curl https://api.mobilevalidate.com/v1/lookup \
  -H "Authorization: Bearer mv_test_publicSandboxn9ZgneuhR1B9CRfKG3fulym" \
  -H "Content-Type: application/json" \
  -d '{"numbers": ["+447700900001"], "checks": ["whatsapp", "carrier"], "wait": 20}'
```

Response (real sandbox output, trimmed):

```json
{
  "object": "lookup",
  "status": "completed",
  "results": [{
    "e164": "+447700900001",
    "country": "GB",
    "number_status": "valid",
    "checks": {
      "whatsapp.registered": {"status": "completed", "registered": true, "checked_at": "2026-11-08T04:18:15.858Z", "billed": false},
      "network.carrier": {"status": "completed", "registered": true, "attributes": {"line_type": "mobile", "carrier": "Test Carrier", "country": "GB"}, "billed": false}
    }
  }],
  "billing": {"billed_units": 0, "cost": {"amount": "0", "currency": "USD"}},
  "next": null
}
```

Read these fields from the response: `results[0].checks["whatsapp.registered"].registered` (`true`, `false`, or `null` when the answer is not conclusive) and `results[0].checks["network.carrier"].attributes.line_type`. If `status` is `"pending"`, an answer took longer than `wait`: call the URL in `next.poll_url` (GET, same header) after a short delay, or send the numbers as a [bulk job](https://mobilevalidate.com/docs/bulk-jobs) instead.

- **Test first.** The example uses the public sandbox key, which answers only the [documented test numbers](https://mobilevalidate.com/docs/test-values) and is never billed. Use your own test key, then a live key, from the [dashboard](https://app.mobilevalidate.com).
- **Cost.** You pay per conclusive check; unknown, unsupported, invalid and duplicate results are free, and a repeat check within the freshness window is answered from cache at no charge. See [pricing](https://mobilevalidate.com/pricing).
- **Lists.** For more than a few hundred numbers, send one [bulk job](https://mobilevalidate.com/docs/bulk-jobs) (`POST /v1/jobs`, bulk price) instead of one request per number.
- **Errors.** Errors return JSON with `error.code`, `error.message` and `error.retryable`; the [error catalog](https://mobilevalidate.com/docs/errors) lists every code.

## Get a key for your Zap

Start with a test key and the test numbers, then switch to a live key. You pay only for conclusive answers.

- [Start free (20 free real checks)](https://mobilevalidate.com/request-access)
- [Get a test key](https://mobilevalidate.com/get-test-key)
- [Lookup API reference](https://mobilevalidate.com/docs/lookups)

## Related

- [Real-time lookups](https://mobilevalidate.com/docs/lookups.md)
- [Authentication](https://mobilevalidate.com/docs/authentication.md)
- [Test values](https://mobilevalidate.com/docs/test-values.md)
- [Errors](https://mobilevalidate.com/docs/errors.md)
- [Use cases](https://mobilevalidate.com/use-cases.md)

## Frequently asked questions

### Is there a MobileValidate app on Zapier?

It is in review and not public yet. Until then, Webhooks by Zapier calls the same API with the request on this page.

### Can I filter leads by the answer?

Yes. Add a Filter or Paths step after the request, for example to continue only when `registered` is true, or when the carrier's `line_type` is `mobile`. Treat an empty value as unknown, not as no.

### What if the answer takes longer than the step?

Most checks answer within a few seconds. With `"wait": 20` the request waits up to 20 seconds; if an answer is still outstanding the response has `status: "pending"` and a `next.poll_url`. Add a Delay step and a second GET request to that URL, or check lists as a [bulk job](https://mobilevalidate.com/docs/bulk-jobs).

### What do I pay?

Only conclusive checks, at our [prices](https://mobilevalidate.com/pricing); inconclusive answers are free. Zapier tasks are billed by Zapier.

_Platform and brand names are used only to describe which service a check refers to. MobileValidate is not affiliated with, endorsed by or sponsored by any of these companies; all trademarks belong to their owners._
