feat(enrichment): add ZeroBounce, NeverBounce, and MillionVerifier email verification#4854
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
PR SummaryMedium Risk Overview Also introduces an Email Verification table enrichment that waterfalls those three verify tools (ZeroBounce → NeverBounce → MillionVerifier), skipping providers that return Reviewed by Cursor Bugbot for commit ae83d18. Bugbot is set up for automated code reviews on this repo. Configure here. |
Greptile SummaryThis PR adds three email-verification integrations — ZeroBounce, NeverBounce, and MillionVerifier — each with verify-email and get-credits tools, corresponding block definitions, BYOK wiring, hosted-key support, icon assets, and documentation pages. It also introduces an Email Verification table enrichment that runs a provider waterfall (ZeroBounce → NeverBounce → MillionVerifier), surfacing a normalized
Confidence Score: 5/5Safe to merge — all three providers follow the established tool/block/BYOK pattern, JSON-parse guards and envelope-error detection are consistent, and the enrichment waterfall logic is correctly designed. All new tools correctly guard against non-JSON 200 responses, detect HTTP-200 error envelopes (ZeroBounce and MillionVerifier), and surface failures rather than silently succeeding with empty data. The enrichment waterfall falls through only on indeterminate verdicts and accepts all definitive statuses. BYOK wiring is complete across the Zod schema, type union, block registry, and workspace settings UI. No correctness issues were found. No files require special attention. Important Files Changed
Sequence DiagramsequenceDiagram
participant Table as Enrichment Table
participant Runner as Waterfall Runner
participant ZB as ZeroBounce
participant NB as NeverBounce
participant MV as MillionVerifier
Table->>Runner: email-verification enrichment (email)
Runner->>ZB: zerobounce_verify_email(email)
alt "status != unknown"
ZB-->>Runner: "{ status, deliverable }"
Runner-->>Table: write result
else "status == unknown or failure"
ZB-->>Runner: null / unknown
Runner->>NB: neverbounce_verify_email(email)
alt "status != unknown"
NB-->>Runner: "{ status, deliverable }"
Runner-->>Table: write result
else "status == unknown or failure"
NB-->>Runner: null / unknown
Runner->>MV: millionverifier_verify_email(email)
alt "status != unknown"
MV-->>Runner: "{ status, deliverable }"
Runner-->>Table: write result
else all unknown
MV-->>Runner: null
Runner-->>Table: no result (cell empty)
end
end
end
Reviews (3): Last reviewed commit: "fix(byok): render new email-verify provi..." | Re-trigger Greptile |
|
@greptile |
|
@cursor review |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit f62d59a. Configure here.
…hment
Resolve blocks/registry.ts conflict against staging's BlockMeta refactor:
conform the new ZeroBounce/NeverBounce/MillionVerifier blocks to the new
pattern — move `tags` off BlockConfig into `{Service}BlockMeta` exports and
register them in BLOCK_META_REGISTRY.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit dcd4687. Configure here.
- Add zerobounce/neverbounce/millionverifier to the Enrichment PROVIDER_SECTIONS so they render in the workspace BYOK settings UI (they were in PROVIDERS + the API allowlist but no section listed them). - Raise ZeroBounce and MillionVerifier hosted per-workspace rate limits from 60 to 1200 req/min, sized against documented upstream ceilings (ZeroBounce 80k/10s; MillionVerifier 160/sec). NeverBounce stays at 60 pending its account-configured throttle. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
@greptile review Addressed in latest pushes:
|

Summary
status+deliverableType of Change
Testing
Tested manually —
tsc --noEmitclean (0 errors), Biome clean, 28/28 enrichment + hosting tests passing, api-validation gate passing. Each integration independently validated against the providers' live API docs (endpoints, auth params, status vocabularies, response fields, error handling).Checklist