Beta privataMailbeam è in beta privata: l'API pubblica non è ancora aperta.Iscriviti alla lista d'attesa

Migrare da Clearout

Questa guida spiega come sostituire le chiamate di verifica di Clearout con Mailbeam. La forma dell'integrazione non cambia: continui a inviare un indirizzo e a ramificare in base a quello che torna, quindi il punto di chiamata di solito resta esattamente dov'è.

Perché si cambia

  • Residenza del dato nell'UE: Clearout tratta i dati fuori dall'UE, il che lascia aperta una domanda sui trasferimenti internazionali; Mailbeam tratta a Francoforte con un DPA in tutti i piani
  • Fatto per i moduli: la latenza in tempo reale di Clearout dipende dalla regione e si aggira spesso sui 300 ms, lenta per validare dentro una registrazione
  • Catch-all graduato: Clearout marca i domini accept-all senza un punteggio di fiducia; Mailbeam restituisce un punteggio da 0 a 100 e un reason con cui fissare soglie
  • Modalità di prova: Clearout non ce l'ha, quindi la CI deve chiamare l'API di produzione a pagamento; Mailbeam porta una modalità di prova deterministica
  • Concentrazione: la verifica è una linea di prodotto fra le altre in Clearout, accanto a una ricerca di indirizzi e alla validazione dei telefoni

Due cose giocano davvero a favore di Clearout e vale la pena controllarle prima di spostarti: i suoi crediti a consumo non scadono, il che si adatta a un uso irregolare o sporadico meglio di un abbonamento mensile, e offre la ricerca di indirizzi e la validazione dei telefoni, che Mailbeam non ha.

Corrispondenza fra endpoint

ClearoutMailbeamNote
POST /v2/email_verify/instantPOST /v1/verifyVerifica di un'email
Caricamento in volume dal pannelloPOST /v1/verify/batchFino a 500.000 indirizzi per lavoro

Autenticazione

Clearout invia il token come Bearer:<token>, con i due punti e senza spazio. Mailbeam usa la forma standard Bearer <token>, quindi questo è uno dei pochi punti dove un copia e incolla fallisce in silenzio se non fai attenzione.

Clearout (prima):

curl -X POST https://api.clearout.io/v2/email_verify/instant \
  -H "Authorization: Bearer:$CLEAROUT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"email": "user@example.com"}'

Mailbeam (adesso):

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 risposte

Clearout annida il suo risultato dentro un oggetto data. Mailbeam restituisce il risultato direttamente, senza busta.

Campo di ClearoutEquivalente in Mailbeam
data.status: "valid"valid: true
data.status: "invalid"valid: false
data.status: "catch_all"catchAll: true più un score graduato
data.status: "unknown"status: "unknown"
data.sub_statusreason (codice leggibile dalla macchina)
data.disposabledisposable
data.rolerole

Migrare la chiamata

Clearout (prima):

const res = await fetch("https://api.clearout.io/v2/email_verify/instant", {
  method: "POST",
  headers: { Authorization: `Bearer:${apiToken}`, "Content-Type": "application/json" },
  body: JSON.stringify({ email }),
});
const { data } = await res.json();
if (data.status !== "valid") return 422;

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 422;

La prima cosa da rivedere: i domini catch-all

È qui che i due prodotti differiscono di più, ed è il punto che vale la pena confrontare prima di cambiare. Clearout restituisce catch_all come stato e lascia a te l'interpretazione, quindi la maggior parte delle integrazioni finisce per trattarlo come un rifiuto. Mailbeam riporta il comportamento accept-all e un punteggio di fiducia, il che ti permette di accettare i catch-all aziendali di qualità invece di scartarli:

const { valid, catchAll, score, reason } = await verifyEmail(email);

if (catchAll) {
  // Una parte grossa del traffico B2B sta dietro domini accept-all.
  // Metti una soglia invece di rifiutare e basta.
  if (score >= 70) return accept();
  return challenge({ reason });
}

Fai girare i due fornitori in parallelo su un campione di registrazioni reali prima di cambiare questo ramo: è l'unico punto in cui la migrazione cambia il comportamento e non solo i nomi dei campi.

Prossimi passi