Changelog
What we have shipped on Nexiphor Verifier — factual release notes, not a roadmap. For deeper product guides see Help.
2026-09
Named reasons for gateway and provider accepts, gateway invalid replies, and dead MX hosts
- New reason codes gateway_discriminated and provider_discriminated: a filtering gateway (for example Proofpoint or Mimecast) or a non-Microsoft provider accepted the recipient and rejected a randomized address. Shown as "Gateway accepted, not confirmed" / "Server accepted, not confirmed" with Send with caution — never as a confirmed mailbox.
- These rows are Most likely deliverable when a directory signal also supports the recipient, otherwise Provider unverifiable. For these rows, an observed randomized-address rejection never lowers the verdict.
- New reason code gateway_recipient_marked_invalid: the gateway's RCPT reply names the recipient as invalid. Shown as "Gateway marked invalid" (Do not send) instead of a generic policy block.
- New reason code mx_hosts_unresolvable: the domain's MX hosts do not exist in DNS. Shown as "Mail servers not in DNS" (Do not send).
- The same label and explanation appear in the dashboard, Email Explorer, bulk summary, API resolution copy and Campaign export.
2026-09
ZIP export splits by recommended action
- Segmented ZIP downloads use customer action labels: safe-to-send, send-with-caution, review-before-sending, try-again, do-not-send (no longer deliverable/risky/undeliverable by Status).
- Placement matches Campaign Nexiphor Recommended Action.
2026-09
Full export drops always-empty calibration columns
- Full/technical CSV/TSV/XLSX no longer include inferred_mailbox_backend_provider (always empty after SEG alignment) or calibrated_probability / calibration_sample_size / calibration_version / calibration_status (never populated in production).
- API JSON is unchanged — these fields remain on the wire when present.
- risk_category is populated again from canonical reason codes (CatchAll / Unverifiable / Degraded / PolicyRisk / None).
- verification_method maps every canonical reason code (including smtp_greylisted and smtp_temporary_failure).
2026-09
Technical Full export hygiene
- Full/technical export removes confidence_pct (always null on write path) and evidence_strength (duplicate of confidence_level).
- Probe sending IPs are masked as [probe-ip] in export text; mx_host is lower-cased; catch_all_evidence_weight rounds to 3 decimals.
- is_catch_all aligns with Classification 2.0 catch_all / inferred_catch_all; reply-bearing smtp_unavailable maps to verification_method smtp_unclassified.
- confidence_level means verdict certainty, not email quality. Full file is labeled as technical/forensic — not for send decisions.
2026-09
Results updated after completion
- When an automatic re-check turns a still-pending row of a finished bulk job into a real result, the job page says "Results updated after completion on …" and the bulk summary returns resultsRevisedAt and revisedRowCount. The original completion time does not change.
- Credits refunded for a row that was Unknown are kept even if a later re-check finds an answer — nothing is charged after the fact.
- New opt-in webhook bulk.results_revised: sent once a finished job's changes have been quiet for 5 minutes, one event per cumulative revised-row count, with the current counts and exportUrl.
- If a gateway answers a job's randomized test addresses both ways, the later row records conflict code domain_control_flip. Each row keeps the verdict of its own test.
2026-09
Catch-all policy naming and defaults
- Bulk summary adds policyCatchAllCount and validAndPolicyCatchall next to the legacy safeCatchAll / validAndSafeCatchall names (same values; both returned).
- Team defaults: safeCatchAllMinScore is deprecated — accepted and ignored. Score is not a catch-all safety gate.
- Catch-all handling "exclude" (and legacy "safe only") means Valid only. If the default export preset adds every catch-all, the effective default is now Valid only, the workspace policy line says so, and the API returns effectiveDefaultExportPreset plus a warning. Stored settings are unchanged.
2026-09
Why a result is Unknown, and what we observed
- Campaign export appends three columns at the end (existing column order unchanged): Nexiphor Unknown Reason, Nexiphor Control Check, Nexiphor Evidence Tier. Full export appends unknown_reason, control_check, evidence_tier after conflict_codes.
- Unknown Reason: Temporary, Provider protected, Infrastructure, Check interrupted (ours), Not checked (provider excluded), Tenant state — empty when the result is not Unknown.
- Evidence Tier: confirmed, discriminated, accepted, catch-all, temporary, protected, rejected, no route. Status stays Valid for a discriminating accept; the tier shows it was accepted, not confirmed.
- Nexiphor Provenance is never empty: rows without a provenance label now show Verified this job, Same-job control, Inferred, or Historical. Existing labels are unchanged.
- Deprecated (kept this release): Nexiphor Result duplicates Nexiphor Classification, and Nexiphor Decision duplicates Nexiphor Recommended Action.
- API: additive unknownCause, controlCheck and evidenceTier fields on verification results.
2026-09
Campaign export — Decision matches Recommended Action
- Campaign CSV columns default remains columns=campaign (technical file: full|technical|forensic).
- Nexiphor Decision is identical to Nexiphor Recommended Action (Decision kept this release, deprecated).
- Campaign column order: Recommended Action, Result, Explanation, Decision, Status, Provenance, Classification.
- Provenance and Classification cells use human labels instead of raw snake_case tokens.
2026-07
P2 — Honest packaging & enterprise surface
- Integrations: cold-email partners (Instantly, Smartlead, Lemlist) promoted above CRM connectors.
- Zapier demand gate — native Marketplace app request counter; webhooks remain the live path.
- Public Enterprise page with support response targets; EUR-primary pricing note.
- Nexiphor-clean partnership blurb — gated on Instantly/Smartlead LOI, not a fake engine.
2026-07
P1 — Agency Hub & workspace isolation
- Agency Hub for multi-client teams: separate credit wallets, impersonation, and client transfer for bulk jobs.
- White-label workspace branding on the dashboard sidebar.
- Team audit log and role gates for verify vs billing actions.
2026-06
P1 — Verification history & exports
- Unified History page for single, bulk, and API verifications with saved filter views.
- Export center with presets including Valid + all catch-alls (use with caution).
- Scheduled list re-verify and zero-storage retention controls.
2026-05
P0 — Core verifier & billing
- Live SMTP RCPT probe engine with catch-all detection and Unknown refunds.
- Bulk CSV/Excel upload with real-time SignalR progress.
- Stripe billing, credit wallet, and sandbox API keys (nxv_test_).
2026-04
P0 — Integrations foundation
- Signed bulk-completion webhooks with HMAC verification.
- HubSpot, Mailchimp, and EverClean push workflows.
- API documentation and OpenAPI spec at /docs.