Automazioni
Crea flussi con trigger e passaggi, eseguili e analizza le loro esecuzioni.
- POST/automations
- GET/automations/{id}
- POST/automations/{id}
- GET/automations
- DEL/automations/{id}
- POST/automations/{id}/start
- POST/automations/{id}/pause
- POST/automations/{id}/stop
- POST/automations/{id}/trigger
- GET/automations/{id}/runs
- GET/automations/{id}/runs/{run_id}
- POST/automations/{id}/runs/{run_id}/cancel
- POST/automations/{id}/exit
- GET/automations/runs
- GET/automations/{id}/stats
- GET/automations/{id}/steps/{step_key}/stats
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.
/automationsParametri del corpo
contextstringobbligatoriocontact, email o event. Il contesto stabilisce quali trigger e azioni puoi usare e non si può cambiare in seguito. Vedi Contesti.namestringobbligatoriodescriptionstring | nullsettingsobjectstepsobject[]obbligatorioconnectionsobject[]obbligatorio[] 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: falsetrue 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: stopstop 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: truefalse ignora un trigger quando lo stesso contatto (o la stessa email) ha già un’esecuzione in corso in questa automazione.max_concurrent_runsintegerpredefinito: 0running. 0 significa nessun limite.cooldown_secondsintegerpredefinito: 0Passaggi
keystringobbligatoriowelcome_email. I collegamenti, le statistiche dei passaggi e gli aggiornamenti fanno riferimento ai passaggi tramite la chiave.typestringobbligatoriotrigger o action.triggerstringactionstringconfigobjectCollegamenti
fromstringobbligatoriotostringobbligatoriobranchstringpredefinito: defaultfrom 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:
conditionsegue solo il collegamento il cuibranchèyesono, in base al risultato.wait_untilsegue solomatchedotimeout(eventi e condizioni), oppuredefaultopassed(date).experimentsegue i collegamenti della variante scelta. Quando quel percorso finisce, l’esecuzione prosegue sui collegamentidefaultdel passaggio experiment.waitritarda il passaggio successivo.- Tutte le altre azioni seguono i propri collegamenti
default. Un passaggio con più collegamenti in uscita li esegue tutti. - Un passaggio
goalviene 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 |
Arriva un’email in entrata. | |
email.delivered, email.bounced, email.complained, email.loaded, email.clicked, email.failed, email.suppressed, email.canceled |
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_idstringcontact.added_to_audience e contact.removed_from_audience: scatta solo per questa lista (aud_…).segment_idstringcontact.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: falsecontact.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_fieldstringcontact.date_anniversary e contact.on_date: la chiave del campo personalizzato che contiene la data, ad esempio birthday.offset, time, timezone, repeatobject, string, string, stringoffset è { "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.tagstringcontact.tag_added e contact.tag_removed: solo questo tag.threshold, directionnumber, stringcontact.score_changed: solo quando il punteggio attraversa threshold, verso l’alto (up, predefinito) o verso il basso (down).fieldstringcontact.updated: solo quando è cambiato questo campo, ad esempio custom_fields.purchased, tags o score.event_namestringcontact.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.automation_id, campaign_id, link_containsstringform_idstringform.submitted: solo questo modulo.filterobjectScatta 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_emailinvia il template. Per impostazione predefinitafromè il mittente del template, e deve appartenere a un dominio di invio verificato.subjectsostituisce l’oggetto del template.reply_toè un indirizzo o un array di indirizzi, e può essere un segnaposto. Nel contestocontactl’email va al contatto dell’esecuzione; nei contestiemailedeventimpostato.email_typeèmarketing(predefinito nel contestocontact: non viene inviata ai contatti disiscritti e include un link di disiscrizione e gli headerList-Unsubscribe) otransactional.tracking: { "loads": true, "clicks": true }sostituisce le impostazioni di tracciamento del dominio, etracking: {}torna a usarle.wait_untilattende 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" }, dovedate.typeècontact(confield),global(conkey),fixed(convalue) opayload(conpath), eif_passedècontinueobranch. 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.goalaccetta un criterio sull’evento inevent(come inexit_conditions) o unacondition. Quando il contatto soddisfa l’obiettivo, l’esecuzione salta al passaggiogoal.if_not_met(continue,waitoend) stabilisce cosa succede quando un’esecuzione arriva all’obiettivo prima di averlo soddisfatto. I passaggi obiettivo richiedono un piano Pro, Business o Custom.forward_emailinoltra l’email dell’esecuzione (o l’email indicata inemail_id) ato. Per impostazione predefinitafromè il mittente originale esubjectèFwd: <original subject>.conditionaccetta{ "match": "all" | "any", "rules": [...] }. Vedi Condizioni. Il passaggio prosegue suyesono.experimentsceglie a caso, in base al peso, una dellevariants(compresocontrol), ciascuna nella forma{ "key": "a", "weight": 50 }, e prosegue sulla diramazione che porta il nome della chiave scelta.call_webhookinvia una richiesta HTTP (metodo predefinitoPOST,Content-TypeJSON) e registra la classe dello stato (2xx,4xx,5xx) oppuretimeoutonetwork_error. Senzabody, invia come JSON l’automazione, l’esecuzione, il contatto e il payload. Consecret, il corpo viene firmato inX-Emailit-Signature. Una risposta diversa da 2xx non fa fallire il passaggio, a meno chefail_on_errorsiatrue. Gli indirizzi privati sono bloccati.run_automationavvia un’esecuzione di un’altra automazione attiva per lo stesso contatto, con il payload di questa esecuzione. L’esecuzione corrente prosegue, oppure termina conexit_current: true.exit_automationannulla le esecuzioni in corso del contatto nelle automazioni indicate inautomation_ids, oppure in tutte le altre automazioni conall: true.end_runtermina l’esecuzione, comprese le altre diramazioni.endtermina solo la propria diramazione.add_tageremove_tagmodificano i tag del contatto.update_scoremodifica il lead score.update_subscriptioniscrive o disiscrive il contatto: per una lista, per tutte le liste (solounsubscribe) o per tutte le email di marketing (global).remove_from_audienceelimina l’appartenenza del contatto alla lista (mode: "remove", il valore predefinito) o lo tiene nella lista come disiscritto (mode: "unsubscribe").emit_events(predefinitotrue) suadd_to_audience,remove_from_audience,create_contactededit_contactinvia i consueti eventisubscriber.*econtact.*, così i webhook li ricevono e le altre automazioni si avviano. I passaggi salvati prima del 2026-10-20 hannoemit_events: false, e i loro passaggiremove_from_audiencehannomode: "unsubscribe".edit_contactaccettafields: [{ "key": "first_name", "value": "Ada" }]. Le chiaviemail,first_name,last_nameeunsubscribedaggiornano il contatto; qualsiasi altra chiave (con o senzacustom_fields.) imposta un campo personalizzato, convertito nel suo tipo.operationèset(predefinito),clear,incrementodecrement.add_to_suppressionssopprime l’indirizzo dell’esecuzione (typepredefinitorecipient,reasonpredefinitoautomation).remove_from_suppressionslo rimuove. Nel contestoevent, passaemail.create_contactcrea il contatto (o trova quello esistente) e facoltativamente lo iscrive aaudience_id. Nel contestoemail, per impostazione predefinitaemailè 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.
{
"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
}{
"message": "Validation failed.",
"errors": {
"steps.1.action": ["Action \"forward_email\" is not allowed for context \"contact\"."],
"steps": ["Action step \"upgrade_tips\" is not reachable from any trigger."]
}
}Recupera un’automazione
Recupera un’automazione con il suo grafo completo. Richiede una chiave API con il permesso full.
/automations/{id}Parametri di percorso
idstringobbligatorioaut_…).Restituisce
Restituisce l’automazione in data.
idstringaut_.contextstringcontact, email o event.namestringdescriptionstring | nullstatusstringdraft, running, paused, stopped o archived.settingsobjecton_step_failure, allow_reentry, max_concurrent_runs, cooldown_seconds. Vuoto se non ne hai impostata nessuna.last_triggered_atstring | nullpublished_atstring | nullstepsobject[]id (aus_…), key, type, trigger, action e config. I dettagli delle esecuzioni fanno riferimento ai passaggi tramite id; le statistiche tramite key.connectionsobject[]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.
{
"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" }
]
}
}{
"message": "Automation not found."
}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.
/automations/{id}Parametri di percorso
idstringobbligatorioaut_…).Parametri del corpo
namestringdescriptionstringsettingsobjectexit_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[]connections. Vedi Passaggi.connectionsobject[]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.
{
"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
}{
"message": "Validation failed.",
"errors": {
"steps.2.config.seconds": ["Wait seconds cannot exceed 2592000 (30 days)."],
"steps.1.config.template_id": ["Template ID is required when type is \"template\"."]
}
}{
"message": "Automation not found."
}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.
/automationsParametri di query
pageintegerpredefinito: 1per_pageintegerpredefinito: 25filter[context]stringcontact, email o event.filter[status]stringdraft, running, paused, stopped o archived.filter[name]stringsortstringpredefinito: created_atname, created_at, updated_at o last_triggered_at.orderstringpredefinito: descasc 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[]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_recordsintegerper_pageintegercurrent_pageintegertotal_pagesinteger{
"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.
/automations/{id}Parametri di percorso
idstringobbligatorioaut_…).Restituisce
Restituisce un message che conferma l’eliminazione. Restituisce 404 se l’automazione non esiste o è già stata eliminata.
{
"message": "Automation was deleted successfully.",
"notify": true
}{
"message": "Automation not found."
}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.
/automations/{id}/startParametri di percorso
idstringobbligatorioaut_…).Restituisce
Restituisce l’automazione in data con status impostato su running. Restituisce 404 se l’automazione non esiste.
{
"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
}{
"message": "Automation not found."
}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.
/automations/{id}/pauseParametri di percorso
idstringobbligatorioaut_…).Restituisce
Restituisce l’automazione in data con status impostato su paused. Restituisce 404 se l’automazione non esiste.
{
"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
}{
"message": "Automation not found."
}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.
/automations/{id}/stopParametri di percorso
idstringobbligatorioaut_…).Restituisce
Restituisce l’automazione in data con status impostato su stopped. Restituisce 404 se l’automazione non esiste.
{
"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
}{
"message": "Automation not found."
}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.
/automations/{id}/triggerParametri di percorso
idstringobbligatorioaut_…).Parametri del corpo
payloadobjectI 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: passacontact_id(con_…). Le azioni sui contatti esend_emailusano quel contatto.email: passaemail_id(em_…). Le azioni sulle email usano quell’email.event: dati qualsiasi. Impostatooemailnella 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.
{
"message": "Automation trigger dispatched."
}{
"message": "Automation must be running to trigger."
}{
"message": "Automation not found."
}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.
/automations/{id}/runsParametri di percorso
idstringobbligatorioaut_…).Parametri di query
pageintegerpredefinito: 1per_pageintegerpredefinito: 25filter[status]stringrunning, completed, failed o canceled.filter[contact_id]stringcon_…). 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[]total_records, per_page, current_page, total_pagesintegerOgni esecuzione ha:
idstringaur_.automation_idstringaut_…).contact_idstring | nullcon_…) nel contesto contact.email_idstring | nullem_…) nel contesto email.event_idstring | nulleventstringcontact.added_to_audience o system.manual.payloadobjectmetaobjectfailure_reason, recupera l’esecuzione.statusstringrunning, completed, failed o canceled.cancel_reasonstring | nullexit_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{
"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
}{
"message": "Automation not found."
}Recupera un’esecuzione
Recupera un’esecuzione di un’automazione, compresi i passaggi che ha eseguito. Richiede una chiave API con il permesso full.
/automations/{id}/runs/{run_id}Parametri di percorso
idstringobbligatorioaut_…).run_idstringobbligatorioaur_…).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{ "object": { … } }) o il payload che hai passato ad Avvia un’esecuzione, con l’aggiunta di automation_id.metaobject | nullsource_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_keyeaction, la chiave e l’azione del passaggio.status:running,waiting(un passaggiowaitowait_untilnon ancora terminato),completed,failed,skipped(saltato perché l’esecuzione è passata a un obiettivo o è terminata in anticipo) ocanceled.outcome: il risultato, ad esempio l’ultimo stato dell’email inviata da un passaggiosend_email(delivered,loaded,clicked…),skippedper un’email di marketing a un contatto disiscritto,matchedonot_matchedper una condizione,matchedotimeoutper unwait_until, oppurereachedonot_reachedper un obiettivo.data: il risultato del passaggio. Ad esempiosend_emailrestituisce{ "result": "email_queued", "email_oid": "em_…", "to": "…" },conditionrestituisce{ "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.
{
"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"
}
]
}
}{
"message": "Run not found."
}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.
/automations/{id}/runs/{run_id}/cancelParametri di percorso
idstringobbligatorioaut_…).run_idstringobbligatorioaur_…).Parametri del corpo
reasonstringpredefinito: canceled_by_usercancel_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.
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.
/automations/{id}/exitParametri di percorso
idstringobbligatorioaut_…).Parametri del corpo
contact_idstringcon_…). Invia questo campo o email.emailstringreasonstringpredefinito: exited_by_apicancel_reason di ogni esecuzione, fino a 200 caratteri.Restituisce
dataobjectautomation_id, contact_id e canceled_runs, gli ID delle esecuzioni annullate. Vuoto quando il contatto non aveva esecuzioni in corso.messagestringCanceled 1 run.Restituisce 400 senza contact_id o email, e 404 se l’automazione o il contatto non esiste.
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.
/automations/runsParametri di query
contact_idstringcon_…). Invia questo campo o email.emailstringstatusstringrunning, completed, failed o canceled.Restituisce
dataobject[]automation_name.Restituisce 400 senza contact_id o email, e 404 se il contatto non esiste.
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.
/automations/{id}/statsParametri di percorso
idstringobbligatorioaut_…).Parametri di query
sincestring2026-10-01T00:00:00Z.untilstringrun_ids[]stringaur_…). 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.
totalintegerby_statusobjectrunning, waiting, completed, failed.by_outcomeobjectsend_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.funnelobjectsend_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.{
"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": {}
}
}
}{
"message": "Automation not found."
}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.
/automations/{id}/steps/{step_key}/statsParametri di percorso
idstringobbligatorioaut_…).step_keystringobbligatoriokey del passaggio, ad esempio welcome_email.Parametri di query
sincestringuntilstringRestituisce
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.
{
"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
}
}
}{
"message": "Step not found."
}