Vai al contenuto
Docs

Crea flussi con trigger e passaggi, eseguili e analizza le loro esecuzioni.

URL di basehttps://api.emailit.com/v2AutenticazioneErroriLimiti di frequenza

Crea un’automazione

Crea un’automazione nello stato draft a partire da un grafo di passaggi e collegamenti. Richiede una chiave API con il permesso full. Le automazioni sono in beta.

L’automazione non fa nulla finché non la avvii. Ogni esecuzione costa 3 crediti all’avvio, e ogni email inviata da send_email o forward_email costa 1 credito in più. In un workspace non verificato, queste azioni possono inviare solo agli indirizzi email degli account dei membri del workspace.

POST/automations

Parametri del corpo

contextstringobbligatorio
Di cosa tratta ogni esecuzione: contact, email o event. Il contesto stabilisce quali trigger e azioni puoi usare e non si può cambiare in seguito. Vedi Contesti.
namestringobbligatorio
Il nome dell’automazione, fino a 191 caratteri.
descriptionstring | null
Descrizione facoltativa.
settingsobject
Le regole delle esecuzioni. Vedi Impostazioni.
stepsobject[]obbligatorio
I passaggi trigger e azione, con almeno un trigger. Vedi Passaggi.
connectionsobject[]obbligatorio
I collegamenti tra i passaggi. Passa [] per un grafo con un solo trigger. Vedi Collegamenti.

Impostazioni

exit_conditionsobject[]

Annulla l’esecuzione di un contatto appena una di queste corrisponde (contesto contact, fino a 20). Ogni elemento è un criterio sull’evento, cioè il nome del trigger in event più i suoi campi di configurazione, come { "event": "contact.tag_added", "tag": "customer" } o { "event": "contact.on_event", "event_name": "purchase" }, oppure una condizione sul contatto, { "condition": { "match": "all", "rules": [...] } }, con le regole dell’azione condition. I criteri accettano tutti i trigger di contatto tranne i trigger di data e contact.visits_url, e un filter facoltativo come le configurazioni dei trigger. Gli eventi di segmento (segment_id obbligatorio) e gli eventi e-commerce sono in alpha, come i rispettivi trigger. I criteri contact.on_event, qui e nei passaggi goal e wait_until, richiedono un piano Pro, Business o Custom. Vedi Condizioni di uscita e obiettivi.

exit_on_audience_removalbooleanpredefinito: false
true annulla un’esecuzione avviata da contact.added_to_audience quando il contatto viene rimosso da quella lista, si disiscrive da quella lista o si disiscrive da tutte le email di marketing.
on_step_failurestringpredefinito: stop
stop contrassegna l’esecuzione come failed quando un passaggio non riesce. skip registra il passaggio non riuscito e prosegue sui suoi collegamenti default (o su no dopo un condition non riuscito).
allow_reentrybooleanpredefinito: true
false ignora un trigger quando lo stesso contatto (o la stessa email) ha già un’esecuzione in corso in questa automazione.
max_concurrent_runsintegerpredefinito: 0
Numero massimo di esecuzioni contemporanee nello stato running. 0 significa nessun limite.
cooldown_secondsintegerpredefinito: 0
Ignora un trigger quando lo stesso contatto (o la stessa email) ha avviato un’esecuzione in questa automazione entro questo numero di secondi.

Passaggi

keystringobbligatorio
Il tuo identificatore del passaggio, univoco all’interno dell’automazione, ad esempio welcome_email. I collegamenti, le statistiche dei passaggi e gli aggiornamenti fanno riferimento ai passaggi tramite la chiave.
typestringobbligatorio
trigger o action.
triggerstring
Il nome del trigger, obbligatorio quando type è trigger. Vedi Trigger.
actionstring
Il nome dell’azione, obbligatorio quando type è action. Vedi Azioni.
configobject
Le impostazioni del trigger o dell’azione.

Collegamenti

fromstringobbligatorio
La chiave del passaggio da cui parte il collegamento.
tostringobbligatorio
La chiave del passaggio successivo.
branchstringpredefinito: default
Quale esito del passaggio from segue questo collegamento. I passaggi condition usano yes e no; i passaggi wait_until usano matched e timeout (eventi e condizioni) oppure default e passed (date); i passaggi experiment usano le chiavi delle varianti. Tutti gli altri passaggi usano default.

Contesti

Contesto Un’esecuzione riguarda Trigger Regole
contact Un contatto. send_email invia a quel contatto. contact.*, system.* Uno o più trigger. Devono essere tutti collegati alla stessa prima azione.
email Un’email (inviata o ricevuta). email.*, system.* Uno o più trigger. Devono essere tutti collegati alla stessa prima azione.
event Solo il payload del trigger. event.*, system.* Esattamente un trigger.

Ogni azione deve essere raggiungibile da un trigger. Un’esecuzione parte dall’azione collegata al trigger che è scattato e segue i collegamenti:

  • condition segue solo il collegamento il cui branch è yes o no, in base al risultato.
  • wait_until segue solo matched o timeout (eventi e condizioni), oppure default o passed (date).
  • experiment segue i collegamenti della variante scelta. Quando quel percorso finisce, l’esecuzione prosegue sui collegamenti default del passaggio experiment.
  • wait ritarda il passaggio successivo.
  • Tutte le altre azioni seguono i propri collegamenti default. Un passaggio con più collegamenti in uscita li esegue tutti.
  • Un passaggio goal viene raggiunto anche fuori sequenza: quando il contatto soddisfa l’obiettivo, l’esecuzione salta a quel passaggio e prosegue con quelli successivi.

Un’esecuzione è completed quando non restano passaggi o viene eseguito un passaggio end_run, failed quando un passaggio non riesce (con on_step_failure: "stop") e canceled quando una condizione di uscita corrisponde, l’esecuzione viene annullata o interrompi l’automazione.

Trigger

Trigger Contesto Quando scatta
contact.added_to_audience contact Un contatto si iscrive a una lista, reiscrizioni comprese.
contact.removed_from_audience contact Un iscritto viene eliminato da una lista.
contact.added_to_segment contact Un contatto entra in un segmento tracciato. Non per i cambiamenti causati dalla modifica del segmento. Alpha: solo il team di Emailit può aggiungere trigger di segmento; le altre richieste restituiscono 403 con error: "segments_alpha".
contact.removed_from_segment contact Un contatto esce da un segmento tracciato. Non per i cambiamenti causati dalla modifica del segmento. Alpha, come contact.added_to_segment.
contact.created contact Viene creato un contatto.
contact.updated contact Un contatto viene aggiornato, compresi i tag e il lead score.
contact.tag_added, contact.tag_removed contact Un tag viene aggiunto al contatto o rimosso dal contatto.
contact.score_changed contact Il lead score del contatto cambia.
contact.unsubscribed contact Il contatto si disiscrive da una lista o da tutte le email di marketing.
contact.loaded_email contact Un destinatario che è un contatto del workspace apre un’email.
contact.clicked_in_email contact Un destinatario che è un contatto del workspace fa clic su un link tracciato.
contact.on_date contact Arriva la data di un campo personalizzato di tipo data, facoltativamente spostata di alcuni giorni o settimane, a un’ora del giorno in un fuso orario. Una volta, oppure ogni anno con repeat: "yearly".
contact.date_anniversary contact Ogni anno nel mese e nel giorno di un campo personalizzato di tipo data, con le stesse opzioni.
contact.on_event contact Un evento personalizzato (c:) o un evento del workspace (w:) per il contatto. Piani Business e Custom: gli altri piani ricevono 403 con error: "plan_required" e required_plan: "business".
form.submitted contact Un modulo viene inviato con un indirizzo email.
contact.on_purchase contact Un contatto effettua un nuovo ordine. Alpha: solo il team di Emailit può aggiungere trigger e-commerce; le altre richieste restituiscono 403 con error: "commerce_alpha".
contact.abandoned_cart contact Il carrello di un contatto viene abbandonato. Alpha, come contact.on_purchase.
contact.visits_url contact Accettato, ma per ora Emailit non lo fa scattare.
email.received email Arriva un’email in entrata.
email.delivered, email.bounced, email.complained, email.loaded, email.clicked, email.failed, email.suppressed, email.canceled email Si verifica l’evento email con lo stesso nome.
event.<name> event Qualsiasi nome che inizia con event.. Per ora Emailit non genera eventi event.*; avvia le automazioni con contesto event tramite system.manual.
system.manual tutti Chiami Avvia un’esecuzione.
system.schedule tutti Accettato, ma per ora Emailit non fa scattare i trigger programmati.

Campi config dei trigger:

audience_idstring
Per contact.added_to_audience e contact.removed_from_audience: scatta solo per questa lista (aud_…).
segment_idstring
Per contact.added_to_segment e contact.removed_from_segment: il segmento tracciato (seg_…). Facoltativo quando crei l’automazione, obbligatorio quando ne aggiorni i passaggi. Un segmento che non esiste o non è tracciato restituisce 400.
include_current_membersbooleanpredefinito: false
Per contact.added_to_segment: al primo avvio dell’automazione, avvia un’esecuzione anche per ogni contatto già presente nel segmento. Le impostazioni di rientro valgono comunque.
date_fieldstring
Per contact.date_anniversary e contact.on_date: la chiave del campo personalizzato che contiene la data, ad esempio birthday.
offset, time, timezone, repeatobject, string, string, string
Per i trigger di data: offset è { "amount": 3, "unit": "days", "direction": "before" } (unit days o weeks), time è HH:MM (predefinito 00:00), timezone è un nome IANA (predefinito UTC) e repeat è once o yearly per contact.on_date.
tagstring
Per contact.tag_added e contact.tag_removed: solo questo tag.
threshold, directionnumber, string
Per contact.score_changed: solo quando il punteggio attraversa threshold, verso l’alto (up, predefinito) o verso il basso (down).
fieldstring
Per contact.updated: solo quando è cambiato questo campo, ad esempio custom_fields.purchased, tags o score.
event_namestring
Per contact.on_event: il nome dell’evento, come purchase (corrisponde a c:purchase e w:purchase) o w:webinar.attended. Omettilo per qualsiasi evento di workspace o personalizzato. Filtra sulle proprietà dell’evento con filter, ad esempio properties.total.
form_idstring
Per form.submitted: solo questo modulo.
filterobject

Scatta solo quando l’evento corrisponde: { "match": "all", "rules": [{ "field": "subject", "operator": "contains", "value": "Invoice" }] }. match è all (predefinito) o any. field è un percorso con punti all’interno dell’object dell’evento, ad esempio to o email.subject; un prefisso payload. iniziale viene ignorato.

Operatori: equals, not_equals, contains, not_contains, starts_with, ends_with, greater_than, less_than, in, not_in, is_set, is_not_set. Tutti gli operatori tranne is_set e is_not_set richiedono un value; in e not_in accettano un array.

Azioni

Azione Contesto Configurazione
send_email tutti type (obbligatorio, template), template_id (obbligatorio: un ID tem_ o l’alias di un template pubblicato), from, subject, reply_to, to, email_type, tracking
forward_email email, event to (obbligatorio), from, subject, email_id
wait tutti seconds (obbligatorio, da 0 a 2.592.000, cioè 30 giorni)
wait_until tutti (modalità event e condition: contact) mode (date, event o condition) e i campi di quella modalità
condition tutti filter (obbligatorio, vedi Condizioni)
goal contact event o condition, if_not_met
experiment tutti variants (obbligatorio), control
call_webhook tutti url (obbligatorio), method, headers, body, secret, fail_on_error
run_automation tutti automation_id (obbligatorio), exit_current
exit_automation contact automation_ids o all: true
end_run tutti Nessuno
end tutti Nessuno
add_tag, remove_tag contact tags (obbligatorio)
update_score contact operation (add, subtract o set), value (obbligatorio)
add_to_audience contact audience_id (obbligatorio), emit_events
remove_from_audience contact audience_id (obbligatorio), mode (remove o unsubscribe), emit_events
update_subscription contact action (subscribe o unsubscribe, obbligatorio), scope (audience, all_audiences o global), audience_id
edit_contact contact fields (obbligatorio), emit_events
add_to_suppressions email, event type, reason, email
remove_from_suppressions email, event email
create_contact email, event email, first_name, audience_id, emit_events
  • send_email invia il template. Per impostazione predefinita from è il mittente del template, e deve appartenere a un dominio di invio verificato. subject sostituisce l’oggetto del template. reply_to è un indirizzo o un array di indirizzi, e può essere un segnaposto. Nel contesto contact l’email va al contatto dell’esecuzione; nei contesti email ed event imposta to. email_type è marketing (predefinito nel contesto contact: non viene inviata ai contatti disiscritti e include un link di disiscrizione e gli header List-Unsubscribe) o transactional. tracking: { "loads": true, "clicks": true } sostituisce le impostazioni di tracciamento del dominio, e tracking: {} torna a usarle.
  • wait_until attende una data: { "mode": "date", "date": { "type": "global", "key": "webinar_date" }, "offset": { "amount": 1, "unit": "days", "direction": "before" }, "time": "09:00", "timezone": "Europe/Prague", "if_passed": "continue" }, dove date.type è contact (con field), global (con key), fixed (con value) o payload (con path), e if_passed è continue o branch. Per un evento: { "mode": "event", "event": { "event": "contact.clicked_in_email" }, "timeout": { "amount": 2, "unit": "days" } }. Per una condizione: { "mode": "condition", "condition": { ... }, "timeout": ... }. Le attese durano al massimo 365 giorni. Vedi Wait until.
  • goal accetta un criterio sull’evento in event (come in exit_conditions) o una condition. Quando il contatto soddisfa l’obiettivo, l’esecuzione salta al passaggio goal. if_not_met (continue, wait o end) stabilisce cosa succede quando un’esecuzione arriva all’obiettivo prima di averlo soddisfatto. I passaggi obiettivo richiedono un piano Pro, Business o Custom.
  • forward_email inoltra l’email dell’esecuzione (o l’email indicata in email_id) a to. Per impostazione predefinita from è il mittente originale e subject è Fwd: <original subject>.
  • condition accetta { "match": "all" | "any", "rules": [...] }. Vedi Condizioni. Il passaggio prosegue su yes o no.
  • experiment sceglie a caso, in base al peso, una delle variants (compreso control), ciascuna nella forma { "key": "a", "weight": 50 }, e prosegue sulla diramazione che porta il nome della chiave scelta.
  • call_webhook invia una richiesta HTTP (metodo predefinito POST, Content-Type JSON) e registra la classe dello stato (2xx, 4xx, 5xx) oppure timeout o network_error. Senza body, invia come JSON l’automazione, l’esecuzione, il contatto e il payload. Con secret, il corpo viene firmato in X-Emailit-Signature. Una risposta diversa da 2xx non fa fallire il passaggio, a meno che fail_on_error sia true. Gli indirizzi privati sono bloccati.
  • run_automation avvia un’esecuzione di un’altra automazione attiva per lo stesso contatto, con il payload di questa esecuzione. L’esecuzione corrente prosegue, oppure termina con exit_current: true.
  • exit_automation annulla le esecuzioni in corso del contatto nelle automazioni indicate in automation_ids, oppure in tutte le altre automazioni con all: true.
  • end_run termina l’esecuzione, comprese le altre diramazioni. end termina solo la propria diramazione.
  • add_tag e remove_tag modificano i tag del contatto. update_score modifica il lead score.
  • update_subscription iscrive o disiscrive il contatto: per una lista, per tutte le liste (solo unsubscribe) o per tutte le email di marketing (global).
  • remove_from_audience elimina l’appartenenza del contatto alla lista (mode: "remove", il valore predefinito) o lo tiene nella lista come disiscritto (mode: "unsubscribe").
  • emit_events (predefinito true) su add_to_audience, remove_from_audience, create_contact ed edit_contact invia i consueti eventi subscriber.* e contact.*, così i webhook li ricevono e le altre automazioni si avviano. I passaggi salvati prima del 2026-10-20 hanno emit_events: false, e i loro passaggi remove_from_audience hanno mode: "unsubscribe".
  • edit_contact accetta fields: [{ "key": "first_name", "value": "Ada" }]. Le chiavi email, first_name, last_name e unsubscribed aggiornano il contatto; qualsiasi altra chiave (con o senza custom_fields.) imposta un campo personalizzato, convertito nel suo tipo. operation è set (predefinito), clear, increment o decrement.
  • add_to_suppressions sopprime l’indirizzo dell’esecuzione (type predefinito recipient, reason predefinito automation). remove_from_suppressions lo rimuove. Nel contesto event, passa email.
  • create_contact crea il contatto (o trova quello esistente) e facoltativamente lo iscrive a audience_id. Nel contesto email, per impostazione predefinita email è il destinatario dell’email.

I valori stringa nella configurazione di qualsiasi azione possono usare segnaposto che Emailit compila quando il passaggio viene eseguito: {{contact.email}}, {{cf.plan}}, {{global.webinar_link}}, {{email.mail_from}}, {{payload.object.subject}} o {{meta.source_event_id}}, ad esempio "to": "{{email.mail_from}}". I template inviati da send_email, e il relativo subject, vengono elaborati con Temple e hanno anche direttamente i campi del contatto, come {{ first_name }}, {{tags}} e {{score}}.

Condizioni

Un filtro condition (come le condizioni di wait_until e goal e le exit_conditions) è { "match": "all" | "any", "rules": [...] }. Una regola è { "field", "operator", "value" }, oppure un gruppo annidato { "match", "rules" }, fino a 3 livelli e 50 regole.

field operator value
Campi del contatto (email, first_name, last_name, created_at, unsubscribed, score), subscribed, custom_fields.<key>, global.<key>, payload.<path>, meta.<path>, contact.<path>, email.<path> equals, not_equals, contains, not_contains, starts_with, ends_with, in, not_in, is_set, is_not_set, greater_than, less_than, greater_or_equal, less_or_equal, is_true, is_false, before, after, on, is_past, is_future, within_last, within_next, more_than_ago, more_than_from_now Il valore. Gli operatori sui giorni accettano un numero di giorni o { "amount", "unit" }. Non serve per is_set, is_not_set, is_true, is_false, is_past, is_future.
tags contains, not_contains, in, not_in, is_set, is_not_set Un tag, o un array per in e not_in.
audience is_subscribed, is_not_subscribed, is_member, is_not_member Un ID di lista (aud_…).
engagement opened, not_opened, clicked, not_clicked "run", "automation", { "scope": "step", "step": "<key>" }, { "scope": "any", "days": 30 } o { "scope": "campaign", "campaign_id": "cmp_…" }.
segment is_member, is_not_member Un ID di segmento (seg_…), tracciato o no. Alpha.
commerce.<field> Gli operatori di segmento del campo, tranne cinque che usano i nomi di questa tabella: greater_or_equal, less_or_equal, within_last, within_next e more_than_ago Il valore che accetta la regola del segmento. Alpha. Vedi sotto.

I campi senza prefisso si riferiscono al contatto dell’esecuzione (first_name, custom_fields.plan) o all’email (rcpt_to, subject). subscribed è true quando il contatto può ricevere email di marketing.

Le regole commerce.<field> usano i campi e-commerce dei segmenti, valutati allo stesso modo: orders_count, total_spent, average_order_value, first_order_at, last_order_at, expected_next_order_at, last_active_at, churn_risk, purchased, viewed_product, used_coupon e cart, ad esempio { "field": "commerce.purchased", "operator": "has", "value": { "days": 30, "product_ids": ["sku-1"] } }. Le regole di segmento ed e-commerce sono in alpha: le altre richieste che le aggiungono restituiscono 403 con error segments_alpha o commerce_alpha. Le automazioni che le hanno già continuano a funzionare per tutti.

Restituisce

Restituisce 201 Created con l’automazione in data, compresi l’ID di ogni passaggio (aus_…) e i collegamenti. status è draft.

La creazione controlla la struttura del grafo: nomi dei trigger e delle azioni validi per il contesto, chiavi univoche, collegamenti e diramazioni validi, raggiungibilità, le settings, e che ogni indirizzo from di send_email usi un dominio di invio verificato. Non controlla che la configurazione di ogni azione sia completa; questo controllo lo fa Aggiorna un’automazione. In caso di errore restituisce 400 con errors organizzato per percorso del campo.

Le funzioni che il piano del workspace non include restituiscono 403 con error: "plan_required", il piano più basso che le include in required_plan e un message. I passaggi goal e i criteri contact.on_event in exit_conditions, goal e wait_until richiedono pro, e il trigger contact.on_event richiede business.

POST/automations
Terminal
curl -X POST https://api.emailit.com/v2/automations \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Welcome series",
    "context": "contact",
    "description": "Welcome new subscribers, then nudge free users a day later.",
    "settings": { "allow_reentry": false },
    "steps": [
      {
        "key": "joined",
        "type": "trigger",
        "trigger": "contact.added_to_audience",
        "config": { "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV" }
      },
      {
        "key": "welcome_email",
        "type": "action",
        "action": "send_email",
        "config": { "type": "template", "template_id": "welcome", "from": "Acme <hello@acme.com>" }
      },
      {
        "key": "wait_1_day",
        "type": "action",
        "action": "wait",
        "config": { "seconds": 86400 }
      },
      {
        "key": "is_free_user",
        "type": "action",
        "action": "condition",
        "config": {
          "filter": {
            "match": "all",
            "rules": [{ "field": "custom_fields.plan", "operator": "is_not_set" }]
          }
        }
      },
      {
        "key": "upgrade_tips",
        "type": "action",
        "action": "send_email",
        "config": { "type": "template", "template_id": "getting-started-tips" }
      },
      { "key": "done", "type": "action", "action": "end" }
    ],
    "connections": [
      { "from": "joined", "to": "welcome_email" },
      { "from": "welcome_email", "to": "wait_1_day" },
      { "from": "wait_1_day", "to": "is_free_user" },
      { "from": "is_free_user", "to": "upgrade_tips", "branch": "yes" },
      { "from": "is_free_user", "to": "done", "branch": "no" }
    ]
  }'
JSON
{
  "data": {
    "id": "aut_3xqC9YD79FZZA36uTekWTBO1ghe",
    "context": "contact",
    "name": "Welcome series",
    "description": "Welcome new subscribers, then nudge free users a day later.",
    "status": "draft",
    "settings": { "allow_reentry": false },
    "last_triggered_at": null,
    "published_at": null,
    "created_at": "2026-10-01T09:41:05.318274+00:00",
    "updated_at": "2026-10-01T09:41:05.318274+00:00",
    "steps": [
      {
        "id": "aus_3ZqpuxjmL1szZ8og6uGL1mT6QEJ",
        "key": "joined",
        "type": "trigger",
        "trigger": "contact.added_to_audience",
        "action": null,
        "config": { "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV" }
      },
      {
        "id": "aus_3V5TZIXXak1SSmGcOmzPOeFaguQ",
        "key": "welcome_email",
        "type": "action",
        "trigger": null,
        "action": "send_email",
        "config": { "type": "template", "template_id": "welcome", "from": "Acme <hello@acme.com>" }
      },
      {
        "id": "aus_3vM0ORwEXCQcyS7rylfQBQEXjVk",
        "key": "wait_1_day",
        "type": "action",
        "trigger": null,
        "action": "wait",
        "config": { "seconds": 86400 }
      },
      {
        "id": "aus_3HOgOzxaXBgVRpLFtpvJNo4vd5c",
        "key": "is_free_user",
        "type": "action",
        "trigger": null,
        "action": "condition",
        "config": {
          "filter": {
            "match": "all",
            "rules": [{ "field": "custom_fields.plan", "operator": "is_not_set" }]
          }
        }
      },
      {
        "id": "aus_3gCI5SWMPFVhOSawR6nz8sF55wp",
        "key": "upgrade_tips",
        "type": "action",
        "trigger": null,
        "action": "send_email",
        "config": { "type": "template", "template_id": "getting-started-tips" }
      },
      {
        "id": "aus_3Pq7Wd2LxN8cVt5RmK0sHy4BfJe",
        "key": "done",
        "type": "action",
        "trigger": null,
        "action": "end",
        "config": {}
      }
    ],
    "connections": [
      { "from": "joined", "to": "welcome_email", "branch": "default" },
      { "from": "welcome_email", "to": "wait_1_day", "branch": "default" },
      { "from": "wait_1_day", "to": "is_free_user", "branch": "default" },
      { "from": "is_free_user", "to": "upgrade_tips", "branch": "yes" },
      { "from": "is_free_user", "to": "done", "branch": "no" }
    ]
  },
  "message": "Automation was successfully created.",
  "notify": true
}

Recupera un’automazione

Recupera un’automazione con il suo grafo completo. Richiede una chiave API con il permesso full.

GET/automations/{id}

Parametri di percorso

idstringobbligatorio
L’ID dell’automazione (aut_…).

Restituisce

Restituisce l’automazione in data.

idstring
L’ID dell’automazione, con prefisso aut_.
contextstring
contact, email o event.
namestring
Il nome dell’automazione.
descriptionstring | null
Descrizione facoltativa.
statusstring
draft, running, paused, stopped o archived.
settingsobject
Le regole delle esecuzioni: on_step_failure, allow_reentry, max_concurrent_runs, cooldown_seconds. Vuoto se non ne hai impostata nessuna.
last_triggered_atstring | null
Quando l’automazione ha avviato l’ultima esecuzione.
published_atstring | null
Quando l’automazione è stata avviata per la prima volta.
stepsobject[]
Per ogni passaggio, id (aus_…), key, type, trigger, action e config. I dettagli delle esecuzioni fanno riferimento ai passaggi tramite id; le statistiche tramite key.
connectionsobject[]
Per ogni collegamento, le chiavi dei passaggi from e to e il suo branch.

Per il significato di ogni trigger, azione e impostazione, vedi Crea un’automazione. Restituisce 404 se l’automazione non esiste o è stata eliminata.

GET/automations/{id}
Terminal
curl https://api.emailit.com/v2/automations/aut_3xqC9YD79FZZA36uTekWTBO1ghe \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
JSON
{
  "data": {
    "id": "aut_3xqC9YD79FZZA36uTekWTBO1ghe",
    "context": "contact",
    "name": "Welcome series",
    "description": "Welcome new subscribers, then nudge free users a day later.",
    "status": "running",
    "settings": { "allow_reentry": false },
    "last_triggered_at": "2026-10-03T14:12:40.551870+00:00",
    "published_at": "2026-10-01T10:00:02.204118+00:00",
    "created_at": "2026-10-01T09:41:05.318274+00:00",
    "updated_at": "2026-10-03T14:12:40.551870+00:00",
    "steps": [
      {
        "id": "aus_3ZqpuxjmL1szZ8og6uGL1mT6QEJ",
        "key": "joined",
        "type": "trigger",
        "trigger": "contact.added_to_audience",
        "action": null,
        "config": { "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV" }
      },
      {
        "id": "aus_3V5TZIXXak1SSmGcOmzPOeFaguQ",
        "key": "welcome_email",
        "type": "action",
        "trigger": null,
        "action": "send_email",
        "config": { "type": "template", "template_id": "welcome", "from": "Acme <hello@acme.com>" }
      },
      {
        "id": "aus_3vM0ORwEXCQcyS7rylfQBQEXjVk",
        "key": "wait_1_day",
        "type": "action",
        "trigger": null,
        "action": "wait",
        "config": { "seconds": 86400 }
      }
    ],
    "connections": [
      { "from": "joined", "to": "welcome_email", "branch": "default" },
      { "from": "welcome_email", "to": "wait_1_day", "branch": "default" }
    ]
  }
}

Aggiorna un’automazione

Aggiorna il nome, la descrizione, le impostazioni o il grafo di un’automazione. Richiede una chiave API con il permesso full. Il contesto non si può cambiare.

Per cambiare il grafo, invia insieme steps e connections: sostituiscono il grafo attuale. I passaggi la cui key esiste già mantengono l’ID e la cronologia delle esecuzioni, i passaggi che ometti vengono eliminati e le nuove chiavi vengono aggiunte. A differenza della creazione, l’aggiornamento convalida anche la configurazione di ogni azione (ad esempio, send_email richiede type e template_id, wait richiede seconds). Quando un passaggio mantiene la sua key e la sua azione, le impostazioni che ometti dal suo config mantengono i valori salvati: email_type e tracking per send_email, emit_events per i passaggi sul contatto e mode per remove_from_audience. Invia un’impostazione per cambiarla; tracking: {} torna alle impostazioni di tracciamento del dominio.

Metti in pausa l’automazione prima di cambiare il grafo di un’automazione attiva, poi avviala di nuovo perché i nuovi trigger abbiano effetto.

POST/automations/{id}

Parametri di percorso

idstringobbligatorio
L’ID dell’automazione (aut_…).

Parametri del corpo

namestring
Il nome, fino a 191 caratteri.
descriptionstring
La descrizione.
settingsobject
Sostituisce tutte le impostazioni: exit_conditions, exit_on_audience_removal, on_step_failure, allow_reentry, max_concurrent_runs, cooldown_seconds. Vedi Impostazioni. Le nuove condizioni di uscita si applicano alle esecuzioni in corso, anche nelle automazioni in esecuzione.
stepsobject[]
L’elenco completo dei passaggi. Obbligatorio quando invii connections. Vedi Passaggi.
connectionsobject[]
L’elenco completo dei collegamenti. Obbligatorio quando invii steps. Vedi Collegamenti.

Restituisce

Restituisce l’automazione aggiornata in data, con message e notify. Restituisce 400 con errors organizzato per percorso del campo se la convalida non riesce, 403 con error: "plan_required" quando l’aggiornamento aggiunge un passaggio, un trigger o una condizione di uscita che il piano non include (vedi Crea un’automazione), e 404 se l’automazione non esiste. Ciò che l’automazione ha già resta consentito dopo il passaggio a un piano inferiore.

POST/automations/{id}
Terminal
curl -X POST https://api.emailit.com/v2/automations/aut_3xqC9YD79FZZA36uTekWTBO1ghe \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Welcome series (v2)",
    "settings": { "allow_reentry": false, "on_step_failure": "skip" }
  }'
JSON
{
  "data": {
    "id": "aut_3xqC9YD79FZZA36uTekWTBO1ghe",
    "context": "contact",
    "name": "Welcome series (v2)",
    "description": "Welcome new subscribers, then nudge free users a day later.",
    "status": "paused",
    "settings": { "allow_reentry": false, "on_step_failure": "skip" },
    "last_triggered_at": "2026-10-03T14:12:40.551870+00:00",
    "published_at": "2026-10-01T10:00:02.204118+00:00",
    "created_at": "2026-10-01T09:41:05.318274+00:00",
    "updated_at": "2026-10-04T08:15:22.730115+00:00",
    "steps": [
      {
        "id": "aus_3ZqpuxjmL1szZ8og6uGL1mT6QEJ",
        "key": "joined",
        "type": "trigger",
        "trigger": "contact.added_to_audience",
        "action": null,
        "config": { "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV" }
      },
      {
        "id": "aus_3V5TZIXXak1SSmGcOmzPOeFaguQ",
        "key": "welcome_email",
        "type": "action",
        "trigger": null,
        "action": "send_email",
        "config": { "type": "template", "template_id": "welcome", "from": "Acme <hello@acme.com>" }
      }
    ],
    "connections": [
      { "from": "joined", "to": "welcome_email", "branch": "default" }
    ]
  },
  "message": "Automation was successfully updated.",
  "notify": true
}

Elenca le automazioni

Restituisce le automazioni del workspace, a partire dalla più recente, senza i loro passaggi e collegamenti. Richiede una chiave API con il permesso full. Le automazioni eliminate non vengono elencate.

GET/automations

Parametri di query

pageintegerpredefinito: 1
Numero di pagina, a partire da 1.
per_pageintegerpredefinito: 25
Automazioni per pagina, da 1 a 100.
filter[context]string
Solo le automazioni con questo contesto: contact, email o event.
filter[status]string
Solo le automazioni con questo stato: draft, running, paused, stopped o archived.
filter[name]string
Corrispondenza su una parte del nome, senza distinzione tra maiuscole e minuscole.
sortstringpredefinito: created_at
Campo di ordinamento: name, created_at, updated_at o last_triggered_at.
orderstringpredefinito: desc
Direzione dell’ordinamento: asc o desc.

Puoi usare anche i filtri generici key.condition=value su name, status, context e created_at, con match. Vedi Filtri e ordinamento.

Restituisce

dataobject[]
Le automazioni di questa pagina: id, context, name, description, status, settings, last_triggered_at, published_at, created_at, updated_at. In questo elenco settings è sempre un oggetto vuoto; per leggerlo, recupera l’automazione.
total_recordsinteger
Numero di automazioni corrispondenti.
per_pageinteger
Dimensione di pagina usata.
current_pageinteger
Il numero di questa pagina.
total_pagesinteger
Numero di pagine.
GET/automations
Terminal
curl -G https://api.emailit.com/v2/automations \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  --data-urlencode "filter[status]=running" \
  -d sort=last_triggered_at \
  -d per_page=50
JSON
{
  "data": [
    {
      "id": "aut_3xqC9YD79FZZA36uTekWTBO1ghe",
      "context": "contact",
      "name": "Welcome series",
      "description": "Welcome new subscribers, then nudge free users a day later.",
      "status": "running",
      "settings": {},
      "last_triggered_at": "2026-10-03T14:12:40.551870+00:00",
      "published_at": "2026-10-01T10:00:02.204118+00:00",
      "created_at": "2026-10-01T09:41:05.318274+00:00",
      "updated_at": "2026-10-03T14:12:40.551870+00:00"
    }
  ],
  "total_records": 1,
  "per_page": 50,
  "current_page": 1,
  "total_pages": 1
}

Elimina un’automazione

Elimina un’automazione. L’automazione scompare dagli elenchi e smette di reagire ai trigger. Richiede una chiave API con il permesso full.

Le esecuzioni già in corso non vengono annullate. Per annullarle, interrompi l’automazione prima di eliminarla.

DELETE/automations/{id}

Parametri di percorso

idstringobbligatorio
L’ID dell’automazione (aut_…).

Restituisce

Restituisce un message che conferma l’eliminazione. Restituisce 404 se l’automazione non esiste o è già stata eliminata.

DELETE/automations/{id}
Terminal
curl -X DELETE https://api.emailit.com/v2/automations/aut_3xqC9YD79FZZA36uTekWTBO1ghe \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
JSON
{
  "message": "Automation was deleted successfully.",
  "notify": true
}

Avvia un’automazione

Imposta lo stato dell’automazione su running. Da quel momento i trigger corrispondenti avviano esecuzioni; gli eventi avvenuti prima dell’avvio no. Richiede una chiave API con il permesso full.

Puoi avviare un’automazione draft, paused o stopped. Il primo avvio imposta published_at. Solo al primo avvio, i trigger contact.added_to_segment con include_current_members: true avviano anche un’esecuzione per ogni contatto già presente nel loro segmento tracciato.

L’avvio non convalida di nuovo il grafo. Se hai creato l’automazione con Crea un’automazione, che controlla solo la struttura, assicurati che la configurazione di ogni azione sia completa, oppure invia una volta il grafo tramite Aggiorna un’automazione, che lo convalida per intero. Un passaggio con una configurazione incompleta non riesce quando un’esecuzione lo raggiunge.

POST/automations/{id}/start

Parametri di percorso

idstringobbligatorio
L’ID dell’automazione (aut_…).

Restituisce

Restituisce l’automazione in data con status impostato su running. Restituisce 404 se l’automazione non esiste.

POST/automations/{id}/start
Terminal
curl -X POST https://api.emailit.com/v2/automations/aut_3xqC9YD79FZZA36uTekWTBO1ghe/start \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
JSON
{
  "data": {
    "id": "aut_3xqC9YD79FZZA36uTekWTBO1ghe",
    "context": "contact",
    "name": "Welcome series",
    "description": "Welcome new subscribers, then nudge free users a day later.",
    "status": "running",
    "settings": { "allow_reentry": false },
    "last_triggered_at": null,
    "published_at": "2026-10-01T10:00:02.204118+00:00",
    "created_at": "2026-10-01T09:41:05.318274+00:00",
    "updated_at": "2026-10-01T10:00:02.204118+00:00",
    "steps": [
      {
        "id": "aus_3ZqpuxjmL1szZ8og6uGL1mT6QEJ",
        "key": "joined",
        "type": "trigger",
        "trigger": "contact.added_to_audience",
        "action": null,
        "config": { "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV" }
      },
      {
        "id": "aus_3V5TZIXXak1SSmGcOmzPOeFaguQ",
        "key": "welcome_email",
        "type": "action",
        "trigger": null,
        "action": "send_email",
        "config": { "type": "template", "template_id": "welcome", "from": "Acme <hello@acme.com>" }
      }
    ],
    "connections": [
      { "from": "joined", "to": "welcome_email", "branch": "default" }
    ]
  },
  "message": "Automation was successfully started.",
  "notify": true
}

Metti in pausa un’automazione

Imposta lo stato dell’automazione su paused. I suoi trigger smettono di avviare nuove esecuzioni, ma le esecuzioni già in corso proseguono, comprese quelle in attesa su un passaggio wait. Richiede una chiave API con il permesso full.

Per annullare anche le esecuzioni in corso, interrompi l’automazione invece di metterla in pausa. Per far scattare di nuovo i trigger, avviala un’altra volta.

POST/automations/{id}/pause

Parametri di percorso

idstringobbligatorio
L’ID dell’automazione (aut_…).

Restituisce

Restituisce l’automazione in data con status impostato su paused. Restituisce 404 se l’automazione non esiste.

POST/automations/{id}/pause
Terminal
curl -X POST https://api.emailit.com/v2/automations/aut_3xqC9YD79FZZA36uTekWTBO1ghe/pause \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
JSON
{
  "data": {
    "id": "aut_3xqC9YD79FZZA36uTekWTBO1ghe",
    "context": "contact",
    "name": "Welcome series",
    "description": "Welcome new subscribers, then nudge free users a day later.",
    "status": "paused",
    "settings": { "allow_reentry": false },
    "last_triggered_at": "2026-10-03T14:12:40.551870+00:00",
    "published_at": "2026-10-01T10:00:02.204118+00:00",
    "created_at": "2026-10-01T09:41:05.318274+00:00",
    "updated_at": "2026-10-04T08:10:51.004732+00:00",
    "steps": [
      {
        "id": "aus_3ZqpuxjmL1szZ8og6uGL1mT6QEJ",
        "key": "joined",
        "type": "trigger",
        "trigger": "contact.added_to_audience",
        "action": null,
        "config": { "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV" }
      },
      {
        "id": "aus_3V5TZIXXak1SSmGcOmzPOeFaguQ",
        "key": "welcome_email",
        "type": "action",
        "trigger": null,
        "action": "send_email",
        "config": { "type": "template", "template_id": "welcome", "from": "Acme <hello@acme.com>" }
      }
    ],
    "connections": [
      { "from": "joined", "to": "welcome_email", "branch": "default" }
    ]
  },
  "message": "Automation was successfully paused.",
  "notify": true
}

Interrompi un’automazione

Imposta lo stato dell’automazione su stopped e annulla ogni esecuzione ancora running; queste esecuzioni passano allo stato canceled e i passaggi rimanenti non vengono eseguiti. Richiede una chiave API con il permesso full.

L’interruzione è disponibile solo tramite l’API. Per lasciare proseguire le esecuzioni in corso, metti in pausa l’automazione invece di interromperla. Puoi avviare di nuovo un’automazione interrotta; le nuove esecuzioni ripartono da zero.

POST/automations/{id}/stop

Parametri di percorso

idstringobbligatorio
L’ID dell’automazione (aut_…).

Restituisce

Restituisce l’automazione in data con status impostato su stopped. Restituisce 404 se l’automazione non esiste.

POST/automations/{id}/stop
Terminal
curl -X POST https://api.emailit.com/v2/automations/aut_3xqC9YD79FZZA36uTekWTBO1ghe/stop \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
JSON
{
  "data": {
    "id": "aut_3xqC9YD79FZZA36uTekWTBO1ghe",
    "context": "contact",
    "name": "Welcome series",
    "description": "Welcome new subscribers, then nudge free users a day later.",
    "status": "stopped",
    "settings": { "allow_reentry": false },
    "last_triggered_at": "2026-10-03T14:12:40.551870+00:00",
    "published_at": "2026-10-01T10:00:02.204118+00:00",
    "created_at": "2026-10-01T09:41:05.318274+00:00",
    "updated_at": "2026-10-05T16:45:09.882301+00:00",
    "steps": [
      {
        "id": "aus_3ZqpuxjmL1szZ8og6uGL1mT6QEJ",
        "key": "joined",
        "type": "trigger",
        "trigger": "contact.added_to_audience",
        "action": null,
        "config": { "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV" }
      },
      {
        "id": "aus_3V5TZIXXak1SSmGcOmzPOeFaguQ",
        "key": "welcome_email",
        "type": "action",
        "trigger": null,
        "action": "send_email",
        "config": { "type": "template", "template_id": "welcome", "from": "Acme <hello@acme.com>" }
      }
    ],
    "connections": [
      { "from": "joined", "to": "welcome_email", "branch": "default" }
    ]
  },
  "message": "Automation was successfully stopped.",
  "notify": true
}

Avvia un’esecuzione

Fa scattare il trigger system.manual con un payload a tua scelta. L’automazione deve essere running e avere un passaggio trigger system.manual; altrimenti non parte nessuna esecuzione. Richiede una chiave API con il permesso full. I trigger manuali sono disponibili solo tramite l’API.

L’esecuzione parte in modo asincrono e costa 3 crediti come qualsiasi altra esecuzione. La trovi con Elenca le esecuzioni.

POST/automations/{id}/trigger

Parametri di percorso

idstringobbligatorio
L’ID dell’automazione (aut_…).

Parametri del corpo

payloadobject

I dati per l’esecuzione. Emailit aggiunge automation_id e salva il risultato come payload dell’esecuzione. I passaggi possono leggerlo con segnaposto come {{payload.order_id}} e con condizioni come payload.plan.

Di cosa tratta l’esecuzione dipende dal contesto dell’automazione:

  • contact: passa contact_id (con_…). Le azioni sui contatti e send_email usano quel contatto.
  • email: passa email_id (em_…). Le azioni sulle email usano quell’email.
  • event: dati qualsiasi. Imposta to o email nella configurazione delle azioni, ad esempio "to": "{{payload.customer_email}}".

Restituisce

Restituisce 200 con un message quando il trigger è stato messo in coda. Restituisce 422 se l’automazione non è running e 404 se non esiste.

POST/automations/{id}/trigger
Terminal
curl -X POST https://api.emailit.com/v2/automations/aut_3xqC9YD79FZZA36uTekWTBO1ghe/trigger \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "payload": {
      "contact_id": "con_3munwNLaXKUARc6ff9wPtxKVq4A",
      "plan": "pro",
      "order_id": "ord_1042"
    }
  }'
JSON
{
  "message": "Automation trigger dispatched."
}

Elenca le esecuzioni

Restituisce le esecuzioni di un’automazione, a partire dalla più recente. Ogni esecuzione è un percorso attraverso il grafo, avviato da un trigger. Richiede una chiave API con il permesso full.

GET/automations/{id}/runs

Parametri di percorso

idstringobbligatorio
L’ID dell’automazione (aut_…).

Parametri di query

pageintegerpredefinito: 1
Numero di pagina, a partire da 1.
per_pageintegerpredefinito: 25
Esecuzioni per pagina, da 1 a 100.
filter[status]string
Solo le esecuzioni con questo stato: running, completed, failed o canceled.
filter[contact_id]string
Solo le esecuzioni di questo contatto (con_…). Per vedere le esecuzioni di un contatto in tutte le automazioni, usa Elenca le esecuzioni di un contatto.

Puoi anche filtrare con key.condition=value su status, event e created_at (ad esempio created_at.after=2026-10-01) e ordinare con order e direction sulle stesse chiavi. Vedi Filtri e ordinamento.

Restituisce

dataobject[]
Le esecuzioni di questa pagina. Vedi i campi qui sotto.
total_records, per_page, current_page, total_pagesinteger
I dettagli della paginazione.

Ogni esecuzione ha:

idstring
L’ID dell’esecuzione, con prefisso aur_.
automation_idstring
L’automazione (aut_…).
contact_idstring | null
Il contatto dell’esecuzione (con_…) nel contesto contact.
email_idstring | null
L’email dell’esecuzione (em_…) nel contesto email.
event_idstring | null
L’ID dell’evento di origine, quando il payload del trigger ne ha uno.
eventstring
Il trigger che ha avviato l’esecuzione, ad esempio contact.added_to_audience o system.manual.
payloadobject
In questo elenco è sempre un oggetto vuoto. Per leggere il payload del trigger, recupera l’esecuzione.
metaobject
In questo elenco è sempre un oggetto vuoto. Per leggere i metadati, come failure_reason, recupera l’esecuzione.
statusstring
running, completed, failed o canceled.
cancel_reasonstring | null
Perché un’esecuzione annullata si è fermata: exit_condition, left_audience, canceled_by_user (o il reason che hai inviato), exited_by_api, exited_by_automation, automation_stopped o contact_deleted.
started_at, completed_at, created_at, updated_atstring | null
Timestamp in UTC.
GET/automations/{id}/runs
Terminal
curl -G https://api.emailit.com/v2/automations/aut_3xqC9YD79FZZA36uTekWTBO1ghe/runs \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  --data-urlencode "filter[status]=failed"
JSON
{
  "data": [
    {
      "id": "aur_3q6GdFk2eRSG093grI0v9e6REu8",
      "automation_id": "aut_3xqC9YD79FZZA36uTekWTBO1ghe",
      "contact_id": "con_3munwNLaXKUARc6ff9wPtxKVq4A",
      "email_id": null,
      "event_id": null,
      "event": "contact.added_to_audience",
      "payload": {},
      "meta": {},
      "status": "failed",
      "started_at": "2026-10-03T14:12:40.551870+00:00",
      "completed_at": "2026-10-03T14:12:41.093355+00:00",
      "created_at": "2026-10-03T14:12:40.551870+00:00",
      "updated_at": "2026-10-03T14:12:41.093355+00:00"
    }
  ],
  "total_records": 1,
  "per_page": 25,
  "current_page": 1,
  "total_pages": 1
}

Recupera un’esecuzione

Recupera un’esecuzione di un’automazione, compresi i passaggi che ha eseguito. Richiede una chiave API con il permesso full.

GET/automations/{id}/runs/{run_id}

Parametri di percorso

idstringobbligatorio
L’ID dell’automazione (aut_…).
run_idstringobbligatorio
L’ID dell’esecuzione (aur_…).

Restituisce

Restituisce l’esecuzione in data con i campi descritti in Elenca le esecuzioni, più payload e meta completi, un array run_steps e un array waits.

payloadobject | null
Il payload del trigger: i dati dell’evento ({ "object": { … } }) o il payload che hai passato ad Avvia un’esecuzione, con l’aggiunta di automation_id.
metaobject | null
source_event_id collega l’esecuzione all’evento che l’ha avviata. Le esecuzioni non riuscite possono avere failure_reason: insufficient_credits (non è stato possibile addebitare i 3 crediti dell’esecuzione) o run_timeout (l’esecuzione era ancora running dopo 72 ore senza alcun passaggio in attesa). Le esecuzioni annullate hanno cancel_reason, e quelle completate che sono terminate in anticipo hanno ended_by, ad esempio end_run_step, moved_to_automation o goal_not_met. Le esecuzioni avviate da un’altra automazione hanno depth e parent_run_id (avviate da un passaggio Start automation) oppure caused_by (avviate da una modifica fatta da un passaggio).
run_stepsobject[]

Una voce per ogni passaggio raggiunto dall’esecuzione:

  • step_id: l’ID del passaggio (aus_…), più step_key e action, la chiave e l’azione del passaggio.
  • status: running, waiting (un passaggio wait o wait_until non ancora terminato), completed, failed, skipped (saltato perché l’esecuzione è passata a un obiettivo o è terminata in anticipo) o canceled.
  • outcome: il risultato, ad esempio l’ultimo stato dell’email inviata da un passaggio send_email (delivered, loaded, clicked…), skipped per un’email di marketing a un contatto disiscritto, matched o not_matched per una condizione, matched o timeout per un wait_until, oppure reached o not_reached per un obiettivo.
  • data: il risultato del passaggio. Ad esempio send_email restituisce { "result": "email_queued", "email_oid": "em_…", "to": "…" }, condition restituisce { "result": true, "branch": "yes" } e i passaggi non riusciti restituiscono { "error": "…" }.
  • started_at, completed_at, created_at.
waitsobject[]

Le attese wait_until (su un evento o una condizione) e goal dell’esecuzione: id, step_key, kind (event o condition), event, status (waiting, matched, timed_out o canceled), timeout_at, created_at e resolved_at.

Restituisce 404 se l’automazione o l’esecuzione non esiste.

GET/automations/{id}/runs/{run_id}
Terminal
curl https://api.emailit.com/v2/automations/aut_3xqC9YD79FZZA36uTekWTBO1ghe/runs/aur_3q6GdFk2eRSG093grI0v9e6REu8 \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
JSON
{
  "data": {
    "id": "aur_3q6GdFk2eRSG093grI0v9e6REu8",
    "automation_id": "aut_3xqC9YD79FZZA36uTekWTBO1ghe",
    "contact_id": "con_3munwNLaXKUARc6ff9wPtxKVq4A",
    "email_id": null,
    "event_id": null,
    "event": "contact.added_to_audience",
    "payload": {
      "object": {
        "id": "sub_3Fh2pQx9LmZr4Wt7Nc0bVd8KsYe",
        "object": "subscriber",
        "subscribed": true,
        "audience": { "id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV", "name": "Newsletter" },
        "contact": { "id": "con_3munwNLaXKUARc6ff9wPtxKVq4A", "email": "ada@example.com" }
      }
    },
    "meta": { "source_event_id": "evt_3Kd8sWq1NzXc5Vb7Mt2LpRy0HgA" },
    "status": "running",
    "started_at": "2026-10-03T14:12:40.551870+00:00",
    "completed_at": null,
    "created_at": "2026-10-03T14:12:40.551870+00:00",
    "updated_at": "2026-10-03T14:12:40.551870+00:00",
    "run_steps": [
      {
        "step_id": "aus_3V5TZIXXak1SSmGcOmzPOeFaguQ",
        "status": "completed",
        "data": {
          "result": "email_queued",
          "outcome": "accepted",
          "email_oid": "em_3Cp8cMgPskzB8tIlgUyNJkpDp9O",
          "to": "ada@example.com"
        },
        "started_at": "2026-10-03T14:12:40.702113+00:00",
        "completed_at": "2026-10-03T14:12:40.918540+00:00",
        "created_at": "2026-10-03T14:12:40.702113+00:00"
      },
      {
        "step_id": "aus_3vM0ORwEXCQcyS7rylfQBQEXjVk",
        "status": "waiting",
        "data": { "status": "waiting", "delayMs": 86400000, "seconds": 86400 },
        "started_at": "2026-10-03T14:12:41.004221+00:00",
        "completed_at": null,
        "created_at": "2026-10-03T14:12:41.004221+00:00"
      }
    ]
  }
}

Annulla un’esecuzione

Annulla un’esecuzione ancora nello stato running. I passaggi in attesa in un Time delay o in un Wait until vengono annullati, non vengono eseguiti altri passaggi e lo stato dell’esecuzione diventa canceled. Richiede una chiave API con il permesso full.

Le esecuzioni annullate non si possono riprendere. Per annullare tutte le esecuzioni di un contatto nell’automazione, usa Rimuovi un contatto. Per annullare le esecuzioni automaticamente, usa le condizioni di uscita.

POST/automations/{id}/runs/{run_id}/cancel

Parametri di percorso

idstringobbligatorio
L’ID dell’automazione (aut_…).
run_idstringobbligatorio
L’ID dell’esecuzione (aur_…).

Parametri del corpo

reasonstringpredefinito: canceled_by_user
Salvato come cancel_reason dell’esecuzione, fino a 200 caratteri.

Restituisce

Restituisce l’esecuzione in data, con status canceled e cancel_reason. Restituisce 404 se l’automazione o l’esecuzione non esiste, e 422 se l’esecuzione non è in corso.

POST/automations/{id}/runs/{run_id}/cancel
Terminal
curl -X POST https://api.emailit.com/v2/automations/aut_3Mv8Xq2nKp5Lt/runs/aur_7Kp2Vx9mQt4Lw/cancel \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"reason": "Customer asked to stop"}'

Rimuovi un contatto da un’automazione

Annulla tutte le esecuzioni di questa automazione ancora nello stato running per un contatto, ad esempio dal tuo shop quando un ordine viene pagato. Le esecuzioni passano allo stato canceled. Richiede una chiave API con il permesso full.

Per far uscire i contatti automaticamente quando succede qualcosa, usa invece le condizioni di uscita.

POST/automations/{id}/exit

Parametri di percorso

idstringobbligatorio
L’ID dell’automazione (aut_…).

Parametri del corpo

contact_idstring
L’ID del contatto (con_…). Invia questo campo o email.
emailstring
L’indirizzo email del contatto.
reasonstringpredefinito: exited_by_api
Salvato come cancel_reason di ogni esecuzione, fino a 200 caratteri.

Restituisce

dataobject
automation_id, contact_id e canceled_runs, gli ID delle esecuzioni annullate. Vuoto quando il contatto non aveva esecuzioni in corso.
messagestring
Ad esempio Canceled 1 run.

Restituisce 400 senza contact_id o email, e 404 se l’automazione o il contatto non esiste.

POST/automations/{id}/exit
Terminal
curl -X POST https://api.emailit.com/v2/automations/aut_3Mv8Xq2nKp5Lt/exit \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email": "ada@example.com"}'

Elenca le esecuzioni di un contatto

Restituisce le ultime 100 esecuzioni di un contatto in tutte le automazioni, a partire dalla più recente, ciascuna con il nome dell’automazione. Richiede una chiave API con il permesso full.

GET/automations/runs

Parametri di query

contact_idstring
L’ID del contatto (con_…). Invia questo campo o email.
emailstring
L’indirizzo email del contatto.
statusstring
Solo le esecuzioni con questo stato: running, completed, failed o canceled.

Restituisce

dataobject[]
Le esecuzioni, nella stessa forma di Elenca le esecuzioni, più automation_name.

Restituisce 400 senza contact_id o email, e 404 se il contatto non esiste.

GET/automations/runs
Terminal
curl "https://api.emailit.com/v2/automations/runs?email=ada@example.com&status=running" \
  -H "Authorization: Bearer $EMAILIT_API_KEY"

Recupera le statistiche

Restituisce i conteggi di ogni passaggio di un’automazione, indicizzati per chiave del passaggio. Richiede una chiave API con il permesso full.

GET/automations/{id}/stats

Parametri di percorso

idstringobbligatorio
L’ID dell’automazione (aut_…).

Parametri di query

sincestring
Conta solo le esecuzioni dei passaggi create in questo momento o dopo. Data e ora RFC 3339, ad esempio 2026-10-01T00:00:00Z.
untilstring
Conta solo le esecuzioni dei passaggi create in questo momento o prima. Data e ora RFC 3339.
run_ids[]string
Conta solo queste esecuzioni (aur_…). Ripeti il parametro per indicare più esecuzioni.

Restituisce

Restituisce data, un oggetto con una voce per ogni chiave di passaggio. I passaggi che nessuna esecuzione ha raggiunto hanno total pari a 0.

totalinteger
Quante volte le esecuzioni hanno raggiunto il passaggio.
by_statusobject
Conteggi per stato del passaggio: running, waiting, completed, failed.
by_outcomeobject
Conteggi per esito. send_email e forward_email: accepted, poi lo stato più recente dell’email (delivered, loaded, clicked, bounced, failed, complained, unsubscribed, canceled). condition: matched, not_matched. experiment: la chiave della variante scelta. call_webhook: 2xx, 4xx, 5xx, timeout, network_error. Passaggi non riusciti: error.
funnelobject
Solo per i passaggi send_email. Conteggi cumulativi: accepted include ogni email che è andata oltre, delivered include le email caricate e cliccate, e loaded include quelle cliccate. bounced, failed, complained e unsubscribed sono conteggi semplici.
GET/automations/{id}/stats
Terminal
curl -G https://api.emailit.com/v2/automations/aut_3xqC9YD79FZZA36uTekWTBO1ghe/stats \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -d since=2026-10-01T00:00:00Z
JSON
{
  "data": {
    "joined": { "total": 0, "by_status": {}, "by_outcome": {} },
    "welcome_email": {
      "total": 412,
      "by_status": { "completed": 409, "failed": 3 },
      "by_outcome": { "delivered": 251, "loaded": 98, "clicked": 41, "bounced": 19, "error": 3 },
      "funnel": {
        "accepted": 390,
        "delivered": 390,
        "loaded": 139,
        "clicked": 41,
        "bounced": 19,
        "failed": 0,
        "complained": 0,
        "unsubscribed": 0
      }
    },
    "wait_1_day": {
      "total": 409,
      "by_status": { "completed": 352, "waiting": 57 },
      "by_outcome": {}
    },
    "is_free_user": {
      "total": 352,
      "by_status": { "completed": 352 },
      "by_outcome": { "matched": 270, "not_matched": 82 }
    },
    "upgrade_tips": {
      "total": 270,
      "by_status": { "completed": 270 },
      "by_outcome": { "accepted": 12, "delivered": 180, "loaded": 61, "clicked": 17 },
      "funnel": {
        "accepted": 270,
        "delivered": 258,
        "loaded": 78,
        "clicked": 17,
        "bounced": 0,
        "failed": 0,
        "complained": 0,
        "unsubscribed": 0
      }
    },
    "done": {
      "total": 82,
      "by_status": { "completed": 82 },
      "by_outcome": {}
    }
  }
}

Recupera le statistiche dei passaggi

Restituisce i conteggi di un passaggio di un’automazione. Richiede una chiave API con il permesso full. I campi sono gli stessi di Recupera le statistiche.

GET/automations/{id}/steps/{step_key}/stats

Parametri di percorso

idstringobbligatorio
L’ID dell’automazione (aut_…).
step_keystringobbligatorio
La key del passaggio, ad esempio welcome_email.

Parametri di query

sincestring
Conta solo le esecuzioni dei passaggi create in questo momento o dopo. Data e ora RFC 3339.
untilstring
Conta solo le esecuzioni dei passaggi create in questo momento o prima. Data e ora RFC 3339.

Restituisce

Restituisce data con total, by_status, by_outcome e, per i passaggi send_email, funnel. Restituisce 404 se l’automazione o la chiave del passaggio non esiste.

GET/automations/{id}/steps/{step_key}/stats
Terminal
curl https://api.emailit.com/v2/automations/aut_3xqC9YD79FZZA36uTekWTBO1ghe/steps/welcome_email/stats \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
JSON
{
  "data": {
    "total": 412,
    "by_status": { "completed": 409, "failed": 3 },
    "by_outcome": { "delivered": 251, "loaded": 98, "clicked": 41, "bounced": 19, "error": 3 },
    "funnel": {
      "accepted": 390,
      "delivered": 390,
      "loaded": 139,
      "clicked": 41,
      "bounced": 19,
      "failed": 0,
      "complained": 0,
      "unsubscribed": 0
    }
  }
}

Questa pagina ti è stata utile?

Grazie del feedback.

Grazie, leggiamo ogni messaggio.