# Mailcheck

> Check whether email addresses are real before you send to them. Mailcheck scores each address from 0 to 100 and calls it valid, risky or invalid, and says whether its mailbox exists and whether it is disposable or a catch-all. Check one address, or a whole list at once.

App · Email · 4 actions. Web page: https://docs.lodol.com/docs/integrations/mailcheck

## Actions

### Get a bulk check

See how far a bulk check has got, and get every address's verdict once it has finished. Works for lists uploaded on the Mailcheck website too.

**Inputs**

- Bulk check (`check_id`, text, required): Pick a bulk check, or use the check id a 'Verify a list of emails' step gave back.

**Outputs**

- `check_id` (text): The bulk check's id. Hand it to 'Get a bulk check'.
- `checked_count` (number): How many Mailcheck has checked so far.
- `created_at` (text): When it was started (ISO 8601, UTC).
- `deliverable_emails` (list): The addresses that are safe to send to.
- `email_count` (number): How many addresses are in the check.
- `error` (text): Why it failed, when it did.
- `free_limit_reached` (true/false): Whether the account ran out of checks partway, leaving some addresses unchecked.
- `invalid_count` (number): How many are invalid.
- `is_done` (true/false): Whether Mailcheck has stopped working on it.
- `progress_percent` (number): How far along it is, 0 to 100.
- `result_count` (number): How many results there are.
- `results` (list): One result per address.
- `results_url` (text): A link to Mailcheck's results file, once finished.
- `risky_count` (number): How many are risky.
- `status` (text): processing, finished or failed.
- `undeliverable_emails` (list): The addresses that are not.
- `valid_count` (number): How many are valid.

**Example output**

```json
{
  "check_id": "7093f46f-54c5-44b4-96ec-f891ca076082",
  "checked_count": 2,
  "created_at": "2026-09-21T10:00:00Z",
  "deliverable_emails": [
    "ada@example.com"
  ],
  "email_count": 2,
  "error": null,
  "free_limit_reached": false,
  "invalid_count": 1,
  "is_done": true,
  "progress_percent": 100,
  "result_count": 2,
  "results": [
    {
      "email": "ada@example.com",
      "facebook_name": null,
      "github_username": "adalovelace",
      "gravatar_url": "https://gravatar.com/adalovelace",
      "has_mail_server": true,
      "is_catch_all": false,
      "is_deliverable": true,
      "is_disposable": false,
      "mailbox_exists": true,
      "social_profiles": [
        {
          "site": "github",
          "url": "https://github.com/adalovelace",
          "username": "adalovelace"
        }
      ],
      "trust_rate": 92,
      "verdict": "valid"
    },
    {
      "email": "nobody@example.org",
      "facebook_name": null,
      "github_username": null,
      "gravatar_url": null,
      "has_mail_server": true,
      "is_catch_all": false,
      "is_deliverable": false,
      "is_disposable": false,
      "mailbox_exists": false,
      "social_profiles": [],
      "trust_rate": 12,
      "verdict": "invalid"
    }
  ],
  "results_url": "https://storage.googleapis.com/mailcheck-results/7093f46f.csv",
  "risky_count": 0,
  "status": "finished",
  "undeliverable_emails": [
    "nobody@example.org"
  ],
  "valid_count": 1
}
```

### List bulk checks

List this account's bulk checks, newest first, with how far each has got. Includes lists uploaded on the Mailcheck website.

**Inputs**

- How many (`limit`, number): The most bulk checks to return, up to 100. From 1 to 100. Default: `20`.

**Outputs**

- `checks` (list): The bulk checks.
- `count` (number): How many are listed.

**Example output**

```json
{
  "checks": [
    {
      "check_id": "7093f46f-54c5-44b4-96ec-f891ca076082",
      "checked_count": 2,
      "created_at": "2026-09-21T10:00:00Z",
      "email_count": 2,
      "error": null,
      "free_limit_reached": false,
      "is_done": true,
      "progress_percent": 100,
      "results_url": "https://storage.googleapis.com/mailcheck-results/7093f46f.csv",
      "status": "finished"
    }
  ],
  "count": 1
}
```

### Verify a list of emails

Check a whole list of email addresses at once and get a verdict for each, in the order given. Repeats and entries that are not email addresses are left out. The step waits up to 10 minutes for Mailcheck to finish; a longer check carries on in the background, and 'Get a bulk check' collects it. Uses one Mailcheck check per address.

**Inputs**

- Email addresses (`emails`, list, required): The addresses to check, up to 10,000. A list from an earlier step works, and so does text with one address per line or separated by commas.

**Outputs**

- `check_id` (text): The bulk check's id. Hand it to 'Get a bulk check'.
- `checked_count` (number): How many Mailcheck has checked so far.
- `created_at` (text): When it was started (ISO 8601, UTC).
- `deliverable_emails` (list): The addresses that are safe to send to.
- `email_count` (number): How many addresses are in the check.
- `error` (text): Why it failed, when it did.
- `free_limit_reached` (true/false): Whether the account ran out of checks partway, leaving some addresses unchecked.
- `invalid_count` (number): How many are invalid.
- `is_done` (true/false): Whether Mailcheck has stopped working on it.
- `progress_percent` (number): How far along it is, 0 to 100.
- `result_count` (number): How many results there are.
- `results` (list): One result per address.
- `results_url` (text): A link to Mailcheck's results file, once finished.
- `risky_count` (number): How many are risky.
- `skipped_entries` (list): Entries left out because they are not email addresses.
- `status` (text): processing, finished or failed.
- `unchecked_emails` (list): Addresses Mailcheck did not check, such as when the account ran out of checks.
- `undeliverable_emails` (list): The addresses that are not.
- `valid_count` (number): How many are valid.

**Example output**

```json
{
  "check_id": "7093f46f-54c5-44b4-96ec-f891ca076082",
  "checked_count": 2,
  "created_at": "2026-09-21T10:00:00Z",
  "deliverable_emails": [
    "ada@example.com"
  ],
  "email_count": 2,
  "error": null,
  "free_limit_reached": false,
  "invalid_count": 1,
  "is_done": true,
  "progress_percent": 100,
  "result_count": 2,
  "results": [
    {
      "email": "ada@example.com",
      "facebook_name": null,
      "github_username": "adalovelace",
      "gravatar_url": "https://gravatar.com/adalovelace",
      "has_mail_server": true,
      "is_catch_all": false,
      "is_deliverable": true,
      "is_disposable": false,
      "mailbox_exists": true,
      "social_profiles": [
        {
          "site": "github",
          "url": "https://github.com/adalovelace",
          "username": "adalovelace"
        }
      ],
      "trust_rate": 92,
      "verdict": "valid"
    },
    {
      "email": "nobody@example.org",
      "facebook_name": null,
      "github_username": null,
      "gravatar_url": null,
      "has_mail_server": true,
      "is_catch_all": false,
      "is_deliverable": false,
      "is_disposable": false,
      "mailbox_exists": false,
      "social_profiles": [],
      "trust_rate": 12,
      "verdict": "invalid"
    }
  ],
  "results_url": "https://storage.googleapis.com/mailcheck-results/7093f46f.csv",
  "risky_count": 0,
  "skipped_entries": [],
  "status": "finished",
  "unchecked_emails": [],
  "undeliverable_emails": [
    "nobody@example.org"
  ],
  "valid_count": 1
}
```

### Verify an email

Check whether an email address is real and safe to send to. Mailcheck gives it a trust rate from 0 to 100 and a verdict: valid (80 and up), risky but deliverable (50 to 79) or invalid (below 50). It also says whether the mailbox exists and whether the address is disposable or a catch-all. Uses one Mailcheck check.

**Inputs**

- Email address (`email`, text, required): The address to check. A name and address, like 'Ada Lovelace <ada@example.com>', works too.

**Outputs**

- `email` (text): The address that was checked.
- `facebook_name` (text): The owner's name on Facebook, when found.
- `github_username` (text): The owner's GitHub username, when found.
- `gravatar_url` (text): The owner's Gravatar profile, when there is one.
- `has_mail_server` (true/false): Whether the domain accepts email (has MX records).
- `is_catch_all` (true/false): Whether the domain accepts mail for any address, so the mailbox cannot be confirmed.
- `is_deliverable` (true/false): Whether it is safe to send to: true for valid and risky addresses.
- `is_disposable` (true/false): Whether it is a throwaway address.
- `mailbox_exists` (true/false): Whether the mail server confirmed the mailbox.
- `social_profiles` (list): Public profiles linked to the address.
- `trust_rate` (number): Mailcheck's confidence the address is real, 0 to 100.
- `verdict` (text): valid (trust rate 80-100), risky (50-79: risky but deliverable) or invalid (0-49).

**Example output**

```json
{
  "email": "ada@example.com",
  "facebook_name": null,
  "github_username": "adalovelace",
  "gravatar_url": "https://gravatar.com/adalovelace",
  "has_mail_server": true,
  "is_catch_all": false,
  "is_deliverable": true,
  "is_disposable": false,
  "mailbox_exists": true,
  "social_profiles": [
    {
      "site": "github",
      "url": "https://github.com/adalovelace",
      "username": "adalovelace"
    }
  ],
  "trust_rate": 92,
  "verdict": "valid"
}
```
