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.