# Verification results

> Reference for every email verification result, risk level and check, how the 0–100 score is calculated, and what to do with each kind of address.

Every verification returns a result, a risk level, a score and the individual checks behind them. This page explains each value so you can decide which addresses to keep, review or remove. The same fields appear in the dashboard, the API and list exports.

## Results

Emailit picks the first result in this table that applies, from top to bottom:

| Result | Dashboard label | When | Mode |
| --- | --- | --- | --- |
| `invalid` | Invalid | The address isn't correctly formed, or its domain has no MX records, so it can't receive mail. | Both |
| `disposable` | Disposable | The domain belongs to a temporary or throwaway email service. | Both |
| `disabled` | Disabled | The recipient's server said the mailbox is disabled or inactive. | `full` |
| `inbox_full` | Inbox Full | The recipient's server said the mailbox is full or over its quota. | `full` |
| `role` | Role | The address belongs to a role or team rather than a person, such as `info@`, `support@` or `sales@`. | Both |
| `safe` | Safe | None of the above, and the score is 70 or higher. | Both |
| `unknown` | Unknown | None of the above, and the score is below 70. Several weaker signals add up, for example a random-looking mailbox on a free provider. | Both |

`disabled` and `inbox_full` only come from `full` mode, because they need the mailbox check.

The dashboard's **Result** filter also lists **Valid**, **Catch All** and **Risky**. Current verifications don't return these values. Catch-all domains are reported by the `catch_all` check instead, and they lower the score.

## Risk

| Risk | When |
| --- | --- |
| `high` | The address has invalid syntax, no MX records, a disposable domain or a disabled mailbox, or its score is below 50. |
| `medium` | Score from 50 to 79. |
| `low` | Score of 80 or more. |

The dashboard's **Risk** filter also offers **Unknown**, which current verifications don't return.

## Score

The score runs from 0 (certain to fail) to 100 (very likely good). Emailit starts at 100, applies these adjustments and keeps the result between 0 and 100:

| Condition | Change |
| --- | --- |
| Invalid syntax | −50 |
| No MX records | −40 |
| Disabled mailbox (`full` mode) | −40 |
| Disposable domain | −30 |
| Random-looking mailbox (`gibberish`) | −25 |
| Mailbox not deliverable (`full` mode) | −20 |
| Role account | −15 |
| Inbox full (`full` mode) | −15 |
| Catch-all domain (`full` mode) | −10 |
| Free email provider | −5 |
| Has MX records | +5 |
| Domain at least 30 days old | +10 |

An address that can't be split into a mailbox and a domain gets a score of 0.

Examples:

| Address | Calculation | Score | Result | Risk |
| --- | --- | --- | --- | --- |
| `ada@gmail.com` | 100 − 5 (free) + 5 (MX) + 10 (old domain) | 100 | `safe` | `low` |
| `info@acme.com` | 100 − 15 (role) + 5 + 10 | 100 | `role` | `low` |
| `x7kq2vz9@gmail.com` | 100 − 25 (gibberish) − 5 (free) + 5 + 10 | 85 | `safe` | `low` |
| `ada@mailinator.com` | 100 − 30 (disposable) + 5 + 10 | 85 | `disposable` | `high` |
| `ada@acme.invalid` | 100 − 40 (no MX) | 60 | `invalid` | `high` |

In the dashboard, the score bar is green at 80 and above and shifts toward red as the score drops.

## Checks

Each verification includes a `checks` object. In `fast` mode, the checks marked `full` are `null` because they weren't tested.

| Check | Type | Mode | Meaning |
| --- | --- | --- | --- |
| `valid_syntax` | boolean | Both | The address follows email syntax rules, including international characters. |
| `has_mx_records` | boolean | Both | The domain publishes MX records, so it can receive mail. |
| `domain_age` | integer or null | Both | Age of the domain in days, from WHOIS. `null` when it can't be determined. |
| `disposable` | boolean | Both | The domain is a known temporary or throwaway email service. |
| `role_account` | boolean | Both | The mailbox is a role address, such as `info`, `admin` or `support`. |
| `free_email` | boolean | Both | The domain is a free email provider, such as Gmail or Yahoo. |
| `gibberish` | boolean | Both | The mailbox looks randomly generated. |
| `smtp_connect` | boolean or null | `full` | Emailit connected to the domain's mail server. |
| `deliverable` | boolean or null | `full` | The server accepted the mailbox, or answered in a way that suggests it exists. `false` means the server rejected the mailbox as unknown. |
| `disabled` | boolean or null | `full` | The server said the mailbox is disabled or inactive. |
| `inbox_full` | boolean or null | `full` | The server said the mailbox is full or over quota. |
| `catch_all` | boolean or null | `full` | The domain accepts mail for any address, so the specific mailbox can't be confirmed. |

Some large mailbox providers don't answer mailbox checks reliably. For their addresses, `full` mode may not add much over `fast`.

## Other fields

| Field | Description |
| --- | --- |
| `id` | Starts with `ev_`. |
| `email` | The address you verified. |
| `status` | `pending`, `processing`, `completed` or `failed`. Single verifications return `completed`. List items can also be `failed`, with an `error_message`. |
| `mode` | `fast` or `full`. |
| `address.mailbox` | The part before `@`, without any `+` tag. For `ada+news@acme.com`, that's `ada`. |
| `address.domain` | The part after `@`. |
| `address.suffix` | The `+` tag, such as `news`, or `null`. |
| `address.root` | The address without the `+` tag, such as `ada@acme.com`. |
| `did_you_mean` | A suggested correction for a likely typo in the domain, such as `ada@gmail.com` for `ada@gmial.com`, or `null`. |
| `mx_records` | The domain's MX records, each with `priority` and `exchange`, sorted by priority. |
| `created_at`, `updated_at` | Timestamps. Results are deleted 30 days after `created_at`. |

## Recommended actions

| Result | What to do |
| --- | --- |
| `safe` | Send. |
| `invalid` | Remove the address. At sign-up, ask the person to correct it, and show `did_you_mean` if there is one. |
| `disposable` | Don't add it to marketing lists. At sign-up, ask for a permanent address. |
| `disabled` | Remove the address. The mailbox no longer accepts mail. |
| `inbox_full` | Pause sending and verify again later. Remove it if it stays full. |
| `role` | Fine for transactional and business mail. For marketing, send only if the address opted in, and watch complaints. |
| `unknown` | Send with care, or verify again in `full` mode. Leave these out of the first sends on a new domain. |

Two checks are worth acting on regardless of the result:

- **`deliverable: false`** means the recipient's server rejected the mailbox. Treat the address like `invalid`, even if its result is `safe`.
- **`catch_all: true`** means the domain accepts everything, so a bounce can still happen later. Send, but keep an eye on bounces from that domain.

## Related

  - [Verify a single address](/docs/email-verification/single/): Verify in the dashboard or with the API.
  - [Verify a list](/docs/email-verification/lists/): Check up to 10,000 addresses and export them.
  - [Bounces and complaints](/docs/deliverability/bounces-and-complaints/): What happens when an address bounces.

---
Source: https://emailit.com/docs/email-verification/results/
