> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.middesk.com/online-presence/verify-email-phone/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.middesk.com/_mcp/server. # Verify email and phone > Verify a business's email addresses and phone numbers against its website and third-party profiles An email address and phone number are often the only direct line between your team and a business you're onboarding. They are also the easiest identifiers to fabricate: anyone can create a mailbox or provision a phone number in minutes, and neither leaves the paper trail that a registered name or address does. Corroboration turns a claimed contact into evidence. When a submitted email address or phone number also appears on the business's website or on third-party platforms the business does not control, the contact has a public history that is difficult to fabricate. Middesk corroborates submitted contact details against these sources and reports what it finds, complementing [name and address verification](/verify-business/name-address) in a KYB program. > **How to trigger email and phone verification** > > Contact extraction runs as part of web presence analysis. Include an order that runs the `web_analysis` subproduct when you create the business. Read [Analyze web presence](/online-presence/web-presence) for ordering details. ## How Middesk verifies email addresses and phone numbers Middesk extracts email addresses and phone numbers from sources the business presents publicly: * **The business website.** During web presence analysis, Middesk crawls the business's website and parses contact details from its pages. * **Third-party profiles.** Middesk matches the business to [profiles](/reference/profile) on Yelp, Facebook, LinkedIn, Instagram, and Google Places, and extracts the contact details published on each profile page. ### Merging submitted and discovered contacts Middesk reconciles every extracted contact with the entries already on the business: * A discovered email address or phone number that matches a submitted one merges into the existing entry. The entry keeps `submitted: true` and gains a source describing where the contact was found. For example, a submitted email that also appears on the business's Facebook page gains a source of type `profile` with `metadata.url` set to the profile page URL. * A discovered contact that does not match any submitted one becomes a new entry in `email_addresses[]` or `phone_numbers[]` with `submitted: false`. * Each corroborating profile adds its own source, so a phone number listed on both a Yelp page and a Google Places listing carries two `profile` sources. The following entry shows a submitted email address corroborated by the business's Facebook page: **`Submitted email with a profile source`** ```json title="Submitted email with a profile source" { "object": "email_address", "id": "c3d4e5f6-7890-12ab-cdef-3456789012ab", "email": "office@acmecorp.example", "submitted": true, "sources": [ { "id": "d4e5f6a7-8901-23ab-cdef-4567890123ab", "type": "profile", "metadata": { "url": "https://facebook.com/acmecorp" } } ] } ``` ### Source types Each entry in `email_addresses[]` and `phone_numbers[]` carries a `sources` array describing where Middesk found the contact. Each source is an object with an `id`, a `type`, and a `metadata` object whose contents depend on the type. | Type | Description | | -------------- | ---------------------------------------------------------------------------------------------------------------------------------- | | `profile` | The contact appears on a third-party profile page, such as a Yelp or Facebook page. `metadata.url` is the URL of the profile page. | | `website` | The contact appears on the business's website. | | `registration` | The contact appears in a government filing, such as a Secretary of State registration. | ## How to verify email and phone #### Create a business with email and phone Submit a business with email addresses and phone numbers, plus an order that runs web analysis. ```bash curl -X POST https://api.middesk.com/v1/businesses \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "Acme Corporation", "addresses": [ { "address_line1": "123 Main Street", "city": "San Francisco", "state": "CA", "postal_code": "94105" } ], "email_addresses": [ { "email": "office@acmecorp.example" } ], "phone_numbers": [ { "phone_number": "+14155550100" } ], "website": { "url": "https://www.acmecorp.example" }, "orders": [ { "product": "website", "subproducts": ["web_analysis"] } ] }' ``` #### Wait for web analysis to complete Middesk sends a `business.updated` webhook when the order completes. Set up [webhooks](/build/webhooks) to receive notifications, or poll the business endpoint. #### Read the sources on each contact Retrieve the business and inspect `sources[]` on each entry in `email_addresses[]` and `phone_numbers[]`: * An entry with `submitted: true` and one or more sources is corroborated: the contact you collected also appears in the business's public footprint. * An entry with `submitted: true` and an empty `sources` array is uncorroborated. Treat this as an absence of evidence rather than a red flag on its own; businesses with a thin web presence publish few contact details. * An entry with `submitted: false` is a contact Middesk discovered that the applicant did not provide. Compare it with the submitted details to spot stale information or a mismatch between the application and the business's public identity. > **Get a demo** > > Contact your account manager or [contact sales](https://www.middesk.com/contact-sales) to inquire about access. > Verify a business's email addresses and phone numbers against its website and third-party profiles