Docs

Bulk validation: upload a CSV and download cleaner results.

Use bulk CSV jobs to validate large lists, track progress, receive webhooks, wait for pending follow-ups, and export the latest enriched recipient risk data.

CSV job lifecycle

Bulk jobs are designed for repeatable list hygiene. Upload a CSV with an email column, watch realtime phase progress, then download enriched results when the initial pass completes.

  • Upload a CSV with an email column.
  • Track queued, domain-check, row-validation, suppression, writing, complete, and failed phases.
  • See processed, safe-to-send, do-not-send, checking, caution, duplicate, suppressed, and risk-signal counts.
  • Download the latest CSV for segmentation and suppression decisions.

Initial complete vs final

status=complete means the initial upload finished. If resolution_status=initial_complete_pending_followups, catch-all or unknown rows are still being checked by the retry worker.

  • Users do not need to upload the same CSV again.
  • Checking rows include the next expected recheck time when available.
  • Re-download with Download latest CSV after the displayed time to get refreshed DB-backed rows.
  • CSV output includes deliverability_answer, recommended_action, user_message, and next_step_* guidance columns.

Recommended output workflow

Do not simply delete every non-valid address. Use the result categories to make a sending policy that matches your risk tolerance.

Suppress invalid

Remove hard failures and malformed addresses before sending.

Segment risky

Catch-all and role addresses can be kept separate for lower-volume or manual review workflows.

Wait for checking

Temporary SMTP blocks, greylists, catch-all domains, or provider throttles can resolve after the retry worker runs follow-up checks.

Automation options

Bulk validation can be driven through the API with optional webhook URLs for completion events. The web app uses a same-origin realtime status stream with polling fallback; API clients can poll status and receive signed completion webhooks.

  • Use /api/v1/validate/bulk for uploads.
  • Poll /api/v1/bulk/{job_id}.
  • Download /api/v1/bulk/{job_id}/download when the initial pass is complete, then download again after pending follow-up timing for refreshed rows.
  • Use phase_progress_percent and phase_label when building progress bars.

Policy

Validation is a decision system, not a single yes/no answer

Mailbox providers do not all expose the same SMTP evidence, and some domains intentionally accept all recipients. WillItInbox separates confirmed failures from risk and uncertainty so teams can choose an appropriate suppression, segmentation, or retry policy.

ResultRiskTypical policy
validLow technical riskAccept, but still monitor bounces and complaints.
invalidHigh hard-bounce riskSuppress before sending.
riskyContext dependentSegment catch-all, role, disposable, or policy-blocked addresses.
unknownInconclusive evidenceWait for pending follow-up when pending_verification is present; otherwise review or send conservatively depending on campaign value.

Automation

Use the same policy everywhere addresses enter the system

Validation is strongest when signup forms, lead imports, outbound lists, support tools, and reactivation campaigns share the same evidence model. Use /docs/api for product workflows and /validator/bulk for CSV hygiene.

Run a real-message test

Use /test when the question is whether the exact production email is technically ready.

Validate recipients

Use /validator or /validator/bulk before imports, outbound, newsletters, and reactivation.

Automate checks

Use /docs/api when deliverability QA belongs in CI, release tooling, or an internal workflow.

FAQ

Can SMTP verification prove every mailbox exists?

No. Some providers block probes, greylist requests, or accept catch-all traffic. WillItInbox exposes evidence and confidence instead of pretending every result is absolute.

Should unknown emails be suppressed?

Not automatically. Unknown means inconclusive. If the result is pending, wait for the retry worker and download the latest CSV after the displayed recheck time. Otherwise, segment or send conservatively based on consent, campaign importance, and risk tolerance.