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
reasoncon 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
| Clearout | Mailbeam | Note |
|---|---|---|
POST /v2/email_verify/instant | POST /v1/verify | Verifica di un'email |
| Caricamento in volume dal pannello | POST /v1/verify/batch | Fino 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 Clearout | Equivalente 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_status | reason (codice leggibile dalla macchina) |
data.disposable | disposable |
data.role | role |
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.