Migrare da Snov.io
Snov.io è una piattaforma commerciale tutto in uno: ricerca di indirizzi, verifica, campagne a goccia e CRM. Questa guida copre lo spostamento del solo passaggio di verifica su Mailbeam, che di solito è la parte che una squadra di sviluppo vuole come API dedicata e veloce. Puoi continuare a usare Snov.io per la prospezione e la raccolta di contatti, se ti appoggi a quelle.
Perché si sposta il passaggio di verifica
- Sincrono e veloce: la verifica di Snov.io passa da una coda asincrona; Mailbeam restituisce l'esito in una sola chiamata, sotto i 100 ms (p95)
- Prezzo dedicato: i crediti di Snov.io sono condivisi con la ricerca di indirizzi; Mailbeam addebita un'unità per verifica con un piano gratuito di 1000 al mese
- Esiti catch-all a punteggio: Mailbeam restituisce un punteggio da 0 a 100 e un
reasonspiegabile per i domini catch-all - Esperienza di sviluppo: SDK ufficiali per 6 linguaggi, autenticazione con chiave Bearer, specifica OpenAPI e una modalità di prova
- Residenza del dato nell'UE: tutto è trattato a Francoforte, con un DPA incluso in tutti i piani
Autenticazione
Snov.io usa un flusso OAuth di credenziali client per ottenere un token di accesso, che poi passi in ogni richiesta. Mailbeam usa un'unica chiave API Bearer.
Snov.io (prima):
// 1. Scambia le credenziali client con un token di accesso
const tokenRes = await fetch("https://api.snov.io/v1/oauth/access_token", {
method: "POST",
body: new URLSearchParams({
grant_type: "client_credentials",
client_id: process.env.SNOV_CLIENT_ID,
client_secret: process.env.SNOV_CLIENT_SECRET,
}),
});
const { access_token } = await tokenRes.json();Mailbeam (adesso):
# Nessuno scambio di token: manda la tua chiave API come intestazione Bearer
curl -X POST https://api.mailbeam.dev/v1/verify \
-H "Authorization: Bearer $MAILBEAM_KEY" \
-H "Content-Type: application/json" \
-d '{"email": "user@example.com"}'Corrispondenza fra endpoint
| Snov.io | Mailbeam | Note |
|---|---|---|
POST /v1/get-emails-verification-status | POST /v1/verify | Verifica di un'email (sincrona) |
| Mettere in coda e interrogare lo stato | Una risposta sincrona | Non serve interrogare |
POST /v1/oauth/access_token | — | In Mailbeam non c'è scambio di token |
Corrispondenza fra risposte
| Risultato di Snov.io | Equivalente in Mailbeam |
|---|---|
result: "valid" | valid: true, score >= 60 |
result: "not valid" | valid: false |
result: "unknown" / "greylisted" | status: "unknown" |
result: "catch-all" | catchAll: true + score |
is_disposable: true | disposable: true |
is_role_account: true | role: true |
Migrazione del codice
Il flusso di Snov.io è asincrono: invii un indirizzo e poi chiedi il suo stato. Mailbeam restituisce l'esito in una sola chiamata.
Snov.io (prima):
// Dopo aver ottenuto l'access_token qui sopra:
const res = await fetch(
"https://api.snov.io/v1/get-emails-verification-status",
{
method: "POST",
body: new URLSearchParams({ access_token, email }),
}
);
const { data } = await res.json();
// data.result può essere ancora in sospeso: Snov.io richiede spesso di interrogare in ciclo
if (data?.result !== "valid") return res.status(422).end();Mailbeam (adesso):
// Nessun SDK da installare: vedi /docs/quickstart per questo wrapper di 12 righe.
import { verifyEmail } from "./lib/mailbeam.js";
const { valid, score, reason } = await verifyEmail(email);
if (!valid || score < 60) {
return res.status(422).json({ error: "Email non valida", code: reason });
}Usare i campi score e reason
Snov.io restituisce una stringa di stato. Mailbeam aggiunge uno score numerico e un reason leggibile dalla macchina, così puoi trattare gli indirizzi catch-all e quelli di bassa qualità con una soglia invece che con una decisione tutto o niente:
const result = await verifyEmail(email);
if (result.catchAll && result.score >= 75) {
// Catch-all aziendale ad alta fiducia: accettalo
} else if (!result.valid || result.score < 60) {
const messages = {
invalid_syntax: "Controlla il formato della tua email.",
no_mx_records: "Quel dominio email non esiste.",
smtp_rejected: "Questo indirizzo email non esiste.",
disposable_domain: "Gli indirizzi email temporanei non sono ammessi.",
};
return res.status(422).json({ error: messages[result.reason] ?? "Non è stato possibile verificare l'email." });
}Che cosa conviene lasciare in Snov.io
Mailbeam sostituisce solo la verifica. Se usi la ricerca di indirizzi, le campagne a goccia o il CRM di Snov.io, tienili: punta su Mailbeam soltanto le tue chiamate di verifica.