Vai al contenuto
Docs

Guida

Passa da SendGrid a Emailit. Fai corrispondere concetti, campi API, impostazioni SMTP e nomi dell’Event Webhook, poi porta con te soppressioni, dynamic templates e DNS.

Aggiornato il 1 ott 2026

Questa guida fa corrispondere concetti, chiamate API, webhook, soppressioni e template di SendGrid ai loro equivalenti in Emailit. Leggi prima Passa a Emailit per l’ordine generale e per sapere come usare entrambi i provider in parallelo.

Concetti

SendGrid Emailit
Account e subusers Account e workspace. Ogni workspace ha i propri domini, chiavi, membri e crediti.
API key con permessi Chiave API: Full Access, oppure Sending Only facoltativamente limitata a un dominio
Domain authentication Dominio di invio con record SPF, DKIM e di return path
Link branding Sottodominio di tracciamento, un CNAME come go.acme.com
Single sender verification Non disponibile. Ogni indirizzo From deve trovarsi su un dominio verificato.
Dynamic templates Template con un alias e versioni, elaborati con Temple
Event Webhook Webhook
Inbound Parse Email in entrata
Suppressions Soppressioni
Unsubscribe groups Non disponibile. Usa le liste e i link di disiscrizione delle campagne.
Marketing contacts e lists Contatti e liste
Single Sends Campagne
Email Activity Email APIEmails e Email APILogs
Categories e custom args meta
Dedicated IPs e IP pools IP dedicati su richiesta
Email address validation Verifica email

Aggiorna le chiamate API

POST /v3/mail/send di SendGrid diventa POST /v2/emails. La richiesta è più piatta: non ci sono personalizations, e gli indirizzi sono semplici stringhe.

Prima: SendGrid
curl https://api.sendgrid.com/v3/mail/send \
  -H "Authorization: Bearer $SENDGRID_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "personalizations": [{ "to": [{ "email": "ada@example.com" }] }],
    "from": { "email": "hello@acme.com", "name": "Acme" },
    "subject": "Your receipt",
    "content": [
      { "type": "text/plain", "value": "Thanks for your order." },
      { "type": "text/html", "value": "<p>Thanks for your order.</p>" }
    ]
  }'
Dopo: Emailit
curl https://api.emailit.com/v2/emails \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "Acme <hello@acme.com>",
    "to": "ada@example.com",
    "subject": "Your receipt",
    "text": "Thanks for your order.",
    "html": "<p>Thanks for your order.</p>"
  }'
SendGrid Emailit
Authorization: Bearer SG.… Authorization: Bearer secret_…
from: { email, name } from: "Name <email>"
personalizations[].to[] to, una stringa o un array di massimo 50 indirizzi
personalizations[].cc[], bcc[] cc, bcc
reply_to: { email } reply_to
subject subject
content[] con text/plain e text/html text e html
template_id template, l’ID o l’alias di un template
personalizations[].dynamic_template_data variables
attachments[] con content, filename, type, content_id attachments[] con content, filename, content_type, content_id, oppure un url al posto di content
headers headers
custom_args, categories meta, un oggetto di valori stringa restituito negli eventi webhook
send_at (timestamp Unix) scheduled_at, che accetta lo stesso timestamp Unix, ISO 8601 o inglese semplice
tracking_settings.open_tracking e click_tracking tracking: { "loads": true, "clicks": true }
asm (unsubscribe groups) Non disponibile
202 Accepted con un header X-Message-Id 200 con un corpo JSON: id, status: "accepted" e ids con un ID per destinatario

Ogni destinatario di una richiesta Emailit diventa un’email a sé, con il proprio ID. Per inviare variabili diverse a persone diverse, cosa che SendGrid fa con più personalizations, invia una richiesta per destinatario. Aggiungi un header Idempotency-Key così i nuovi tentativi sono sicuri. Vedi Invia un’email.

Cambia le impostazioni SMTP

Impostazione SendGrid Emailit
Host smtp.sendgrid.net smtp.emailit.com
Porta 587, 465, 2525 o 25 587 (STARTTLS), 465 (TLS), 2525, 2587 o 25
Nome utente apikey emailit
Password La tua chiave API di SendGrid La tua chiave API di Emailit

Emailit non legge l’header X-SMTPAPI. Rimuovilo e imposta invece il tracciamento sul dominio. Vedi Impostazioni SMTP.

Fai corrispondere gli eventi webhook

Evento SendGrid Evento Emailit
processed email.accepted (solo API)
deferred email.attempted
delivered email.delivered
bounce email.bounced
dropped email.suppressed quando il destinatario è nella lista di soppressione
open email.loaded
click email.clicked
spamreport email.complained
unsubscribe, group_unsubscribe email.unsubscribed, solo per le email delle campagne
POST di Inbound Parse email.received, poi recupera il contenuto con GET /emails/{id}

Come SendGrid, Emailit invia un array JSON di eventi. I campi sono diversi:

  • Il nome dell’evento è in type, e l’email è in data.object. Usa data.object.id (l’ID em_ della risposta all’invio) al posto di sg_message_id, e data.object.to al posto di email.
  • I tuoi valori meta tornano in data.object.meta.
  • Emailit firma le richieste con HMAC-SHA256 invece che con la chiave pubblica ECDSA di SendGrid. Verifica X-Emailit-Signature con il tuo secret whsec_. Vedi Verifica le firme dei webhook.
JavaScript
for (const event of req.body) {
  const email = event.data.object;
  if (event.type === 'email.bounced') markBounced(email.to, email.id);
  if (event.type === 'email.complained') unsubscribe(email.to);
}

Sposta le soppressioni

  1. In SendGrid, esporta Bounces, Spam Reports, Invalid Emails e Global Unsubscribes, dalle pagine delle suppressions o con gli endpoint API /v3/suppression/*. I blocks di solito sono temporanei, quindi puoi escluderli.

  2. Crea un unico CSV con le colonne email,type,reason:

    CSV
    email,type,reason
    old-address@example.com,recipient,sendgrid bounce
    angry@example.com,recipient,sendgrid spam report

    Usa il tipo recipient per gli indirizzi che non devono mai ricevere email. Blocca gli invii via API, SMTP e campagne. I tipi bounce, complaint e unsubscribe fermano solo le campagne.

  3. In Email APISuppressions, seleziona Import e carica il file. Ogni file può avere fino a 10.000 righe e pesare al massimo 8 MB, quindi dividi le liste più grandi. I duplicati vengono saltati.

Per le disiscrizioni dai gruppi delle email di marketing, importa quelle persone come contatti con unsubscribed impostato, invece di sopprimerle da tutte le email. Vedi Gestisci le soppressioni.

Sposta i template

Esporta l’HTML di ogni dynamic template da SendGrid, poi importalo in Email MarketingTemplates o crealo con l’API dei template. Assegna a ogni template un alias, come receipt, e invialo con "template": "receipt".

Entrambi usano le doppie parentesi graffe, ma Temple è più ridotto di Handlebars:

SendGrid (Handlebars) Emailit (Temple)
{{first_name}} {{first_name}}
{{{html_block}}} {{html_block}}. Temple non applica mai l’escape all’HTML, quindi esegui tu l’escape dell’input degli utenti.
{{insert name "default=there"}} {{name|"there"}}
{{#if plan}}…{{else}}…{{/if}} Uguale
{{#each items}}…{{/each}} Non supportato. Genera l’elenco nel tuo codice e passalo come un’unica variabile.
{{#equals plan "pro"}}…{{/equals}} Non supportato. Passa un booleano come is_pro e usa {{#if is_pro}}.

Vedi Temple e Importa ed esporta i template.

Cambia i DNS

Aggiungi il dominio in Email APIDomains e pubblica i record di Emailit. Usano nomi propri (emailit._domainkey, emailit.<domain> e, facoltativamente, go e inbound), quindi non entrano in conflitto con i CNAME di domain authentication o di link branding di SendGrid. Mantieni il record DMARC. Dopo il passaggio, rimuovi i CNAME di SendGrid. Vedi Record DNS.

Se usavi Inbound Parse, punta a Emailit il record MX del tuo hostname di parse. Per mantenere lo stesso hostname, come parse.acme.com, imposta l’inbound_key del dominio su parse con l’API. Vedi Configura le email in entrata.

Passaggi successivi

Questa pagina ti è stata utile?

Grazie del feedback.

Grazie, leggiamo ogni messaggio.