# Passaggi delle automazioni

> Riferimento di tutti i passaggi delle automazioni, da invio di email, attesa e condizione ai passaggi su liste, contatti e soppressioni, più diramazioni ed errori dei passaggi.

I passaggi sono ciò che un’esecuzione fa dopo che è scattato il trigger. Questa pagina elenca tutti i passaggi per contesto con le loro impostazioni e regole, spiega come i passaggi si collegano in diramazioni e mostra cosa succede quando un passaggio non riesce.

## Aggiungi e configura i passaggi

Nella scheda **Editor** dell’automazione (disponibile mentre l’automazione è in bozza o in pausa):

- **Aggiungi un passaggio:** seleziona il pulsante più sotto l’ultimo passaggio, oppure sotto **Yes** o **No** in una condizione. Cerca nel selettore o scegli tra le **Actions**.
- **Configura un passaggio:** selezionalo sulla tela. Le sue impostazioni si aprono in un pannello laterale. Dopo la prima esecuzione del passaggio, accanto a **Configure** compare una scheda **Stats**.
- **Rimuovi un passaggio:** selezionalo e seleziona **Delete step** nel pannello laterale.
- **Salva:** seleziona **Save**. I passaggi con problemi vengono evidenziati con il numero di errori.

## Passaggi per contesto

| Passaggio | Chiave API | Contact | Email | Event (API) |
| --- | --- | --- | --- | --- |
| [Send email](#send-email) | `send_email` | Sì | Sì | Sì |
| [Wait / Delay](#wait--delay) | `wait` | Sì | Sì | Sì |
| [Condition (If/Else)](#condition-ifelse) | `condition` | Sì | Sì | Sì |
| [Add to audience](#add-to-audience) | `add_to_audience` | Sì | | |
| [Remove from audience](#remove-from-audience) | `remove_from_audience` | Sì | | |
| [Edit contact](#edit-contact) | `edit_contact` | Sì | | |
| [Forward email](#forward-email) | `forward_email` | | Sì | Sì |
| [Add to suppressions](#add-to-suppressions) | `add_to_suppressions` | | Sì | Sì |
| [Remove from suppressions](#remove-from-suppressions) | `remove_from_suppressions` | | Sì | Sì |
| [Create contact](#create-contact) | `create_contact` | | Sì | Sì |
| [Passaggi solo API](#api-only-steps) | `call_webhook`, `run_automation`, `experiment`, `end` | API | API | API |

Le impostazioni dei passaggi possono contenere segnaposto come `{{contact.first_name}}` o `{{payload.object.to}}`, compilati per ogni esecuzione. Vedi [Dati disponibili per i passaggi](/it/docs/automations/triggers/#data-available-to-steps).

## Send email

Invia un’email creata da uno dei tuoi [template](/it/docs/templates/).

| Impostazione | Obbligatoria | Note |
| --- | --- | --- |
| **Email template** | Sì | Il template da inviare. Con l’API, `template_id` accetta un ID `tem_` o un alias, che usa la versione pubblicata. |
| **To (recipient)** | Contesti Email ed Event | L’indirizzo a cui inviare. Le automazioni di tipo Contact inviano sempre al contatto dell’esecuzione. |
| **Subject** | No | Sostituisce l’oggetto del template. |
| **From** | No | Sostituisce il mittente del template, ad esempio `"Acme" <hello@acme.com>`. |
| **Reply to** | No | Sostituisce l’indirizzo di risposta del template. |

Regole:

- **Il template viene elaborato con [Temple](/it/docs/templates/temple/).** Nelle automazioni di tipo Contact, i campi del contatto sono disponibili direttamente, quindi `{{first_name}}`, `{{email}}` e `{{custom_fields.plan}}` funzionano. Ogni contesto ha anche `{{contact.*}}`, `{{payload.*}}` e `{{meta.*}}`. I tag di unione delle campagne come `{{cf.plan}}` e `{{unsubscribe_url}}` non vengono compilati.
- **Il mittente deve appartenere a un dominio verificato.** La sostituzione in **From** o il mittente del template deve usare un dominio verificato nel workspace. **Save** controlla le sostituzioni, e il passaggio non riesce in fase di esecuzione se il dominio non è verificato.
- **Oggetto e contenuto sono obbligatori**, dal template o dalle sostituzioni.
- **Ogni email costa 1 credito**, oltre ai 3 crediti dell’esecuzione.
- **Non controlla le iscrizioni.** L’email viene inviata anche se il contatto si è disiscritto dalle tue liste. Gli indirizzi soppressi vengono comunque bloccati alla consegna, e i workspace in sandbox possono inviare solo agli indirizzi degli account dei membri.
- **Niente link di disiscrizione né caricamenti e clic.** Le email delle automazioni non ricevono gli header `List-Unsubscribe`, e caricamenti e clic non vengono tracciati.

Le **Stats** del passaggio seguono ogni email inviata attraverso **Accepted** e **Delivered**, e contano bounce, errori e segnalazioni.

## Wait / Delay

Mette in pausa l’esecuzione prima del passaggio successivo.

| Impostazione | Note |
| --- | --- |
| **Duration** e **Unit** | **Minutes**, **Hours** o **Days**. L’attesa massima è di 30 giorni. Con l’API, imposta `seconds`, fino a `2592000`. |

Mentre un’esecuzione è in attesa, resta **Running** e il passaggio di attesa risulta in attesa. Mettere in pausa l’automazione non interrompe le esecuzioni in attesa.

## Condition (If/Else)

Indirizza l’esecuzione sulla diramazione **Yes** quando le regole corrispondono, o sulla diramazione **No** quando non corrispondono.

- **Regole:** un campo, un operatore e un valore, combinati con **All rules match** o **Any rule matches**. Gli operatori sono gli stessi dei [filtri dei trigger](/it/docs/automations/triggers/#filters).
- **Campi:** nelle automazioni di tipo Contact, **Email**, **First name**, **Last name** e i tuoi campi personalizzati. Nelle automazioni di tipo Email, i campi dell’evento del trigger. Con l’API, `field` può essere qualsiasi percorso, con i prefissi `contact.`, `email.`, `payload.` e `meta.`.
- **Diramazioni:** aggiungi il passaggio successivo sotto **Yes**, **No** o entrambi. Una diramazione senza passaggi termina lì l’esecuzione.

## Add to audience

Contesto Contact. Iscrive il contatto dell’esecuzione alla lista scelta in **Audience**. Se il contatto si era disiscritto, viene iscritto di nuovo. Il passaggio non riesce se la lista ha raggiunto il [limite di iscritti](/it/docs/audiences/#limits). Non avvia le automazioni **Added to audience**.

## Remove from audience

Contesto Contact. Disattiva l’iscrizione del contatto alla lista scelta in **Audience**. Il contatto resta nella lista come iscritto disiscritto, a differenza di **Remove from audience** nel pannello, che elimina l’appartenenza.

## Edit contact

Contesto Contact. Imposta uno o più campi del contatto dell’esecuzione. Aggiungi una riga per campo, con **Field name** e **Value**:

| Nome del campo | Effetto |
| --- | --- |
| `first_name`, `last_name`, `email` | Aggiorna quel campo. |
| `unsubscribed` | Imposta lo stato marketing del contatto. Usa `true` per disiscrivere il contatto da tutte le campagne. Qualsiasi valore non vuoto vale come `true`. |
| Qualsiasi altro nome | Salva il valore nel campo personalizzato con quella chiave, mantenendo gli altri campi personalizzati. |

I valori possono usare segnaposto, ad esempio `{{payload.object.audience.name}}`. La modifica non genera un evento `contact.updated`, quindi non avvia automazioni **Contact updated** né webhook.

## Forward email

Contesti Email ed Event. Invia una copia dell’email dell’esecuzione, con il contenuto e gli allegati originali, all’indirizzo indicato in **Forward to**. L’oggetto diventa «Fwd: » seguito dall’oggetto originale. L’email deve provenire da un dominio di invio verificato nel workspace, e ogni inoltro costa 1 credito. Vedi [Inoltra con le automazioni](/it/docs/inbound/forward-with-automations/).

## Add to suppressions

Contesti Email ed Event. Aggiunge un indirizzo alla [lista di soppressione](/it/docs/suppressions/) con tipo `recipient`, che blocca ogni invio a quell’indirizzo, e con il motivo inserito in **Reason** (predefinito `automation`). Nelle automazioni di tipo Email, l’indirizzo è il destinatario dell’email. Nelle automazioni di tipo Event, imposta `email` con l’API, ad esempio `{{payload.email}}`. Il passaggio genera un evento `suppression.created`.

## Remove from suppressions

Contesti Email ed Event. Rimuove l’indirizzo dalla lista di soppressione: il destinatario dell’email nelle automazioni di tipo Email, oppure `email` impostato con l’API nelle automazioni di tipo Event.

## Create contact

Contesti Email ed Event. Crea un contatto e, se scegli una lista in **Audience (optional)**, lo iscrive a quella lista.

- Nelle automazioni di tipo Email, il contatto è l’indirizzo del destinatario dell’email. Per le email ricevute, è l’indirizzo a cui è stata inviata l’email. Per creare invece un contatto per il mittente, imposta `email` su `{{email.mail_from}}` con l’API.
- Nelle automazioni di tipo Event, imposta `email` e, facoltativamente, `first_name` con l’API.
- Se il contatto esiste già, viene mantenuto così com’è e solo iscritto alla lista.
- Il passaggio non avvia le automazioni **Added to audience**.

## Passaggi solo API

Questi passaggi si possono aggiungere con l’API ma non ancora nell’editor del pannello. Funzionano in tutti i contesti.

| Passaggio | Chiave API | Configurazione | Cosa fa |
| --- | --- | --- | --- |
| Call webhook | `call_webhook` | `url` (obbligatorio), `method` (predefinito `POST`), `headers`, `body` | Invia una richiesta HTTP con content type JSON e registra la risposta. Una risposta non 2xx o un timeout viene registrato come esito del passaggio (`2xx`, `4xx`, `5xx`, `timeout` o `network_error`) e non fa fallire l’esecuzione. |
| Run automation | `run_automation` | `automation_id` (obbligatorio) | Avvia un’esecuzione di un’altra automazione in esecuzione con lo stesso payload, poi prosegue. L’altra esecuzione costa i propri 3 crediti. Viene saltato se quell’automazione non è in esecuzione. |
| Random split | `experiment` | `variants`: elenco di `{ "key", "weight" }`, `control` facoltativo | Indirizza ogni esecuzione su una diramazione a caso, in proporzione ai pesi. La diramazione di ogni variante prende il nome dalla sua `key`. Quando la diramazione di una variante termina, l’esecuzione prosegue sulla diramazione `default` del passaggio. |
| End | `end` | Nessuna | Segna la fine di una diramazione. |

```json
{
  "key": "notify-crm",
  "type": "action",
  "action": "call_webhook",
  "config": {
    "url": "https://crm.acme.com/hooks/new-subscriber",
    "method": "POST",
    "headers": { "Authorization": "Bearer crm_token" },
    "body": { "email": "{{contact.email}}", "source": "emailit" }
  }
}
```

## Diramazioni e collegamenti

Con l’API, un’automazione è un elenco di `steps`, ciascuno con una `key` univoca, e un elenco di `connections` dalla chiave di un passaggio a quella successiva:

```json
{
  "steps": [
    { "key": "trigger-1", "type": "trigger", "trigger": "contact.added_to_audience", "config": {} },
    { "key": "is-pro", "type": "action", "action": "condition", "config": {
      "filter": { "match": "all", "rules": [{ "field": "custom_fields.plan", "operator": "equals", "value": "pro" }] }
    } },
    { "key": "send-pro", "type": "action", "action": "send_email", "config": { "type": "template", "template_id": "welcome-pro" } },
    { "key": "send-free", "type": "action", "action": "send_email", "config": { "type": "template", "template_id": "welcome-free" } }
  ],
  "connections": [
    { "from": "trigger-1", "to": "is-pro", "branch": "default" },
    { "from": "is-pro", "to": "send-pro", "branch": "yes" },
    { "from": "is-pro", "to": "send-free", "branch": "no" }
  ]
}
```

- **`branch`** è `default` per un normale passaggio successivo, `yes` o `no` dopo una condizione e la chiave di una variante dopo un random split.
- **Una condizione segue solo la diramazione che ha scelto.** Un collegamento `default` in uscita da una condizione non viene mai seguito.
- **Un passaggio con più collegamenti in uscita sulla stessa diramazione** li avvia tutti, e le diramazioni vengono eseguite in parallelo.
- **Ogni passaggio deve essere raggiungibile da un trigger.** Nelle automazioni di tipo Contact ed Email con più trigger, tutti i trigger devono essere collegati allo stesso primo passaggio.
- **Invia `steps` e `connections` insieme** quando aggiorni un’automazione. I passaggi le cui chiavi non cambiano mantengono cronologia e statistiche.

## Quando un passaggio non riesce

Per impostazione predefinita, un passaggio non riuscito fa fallire l’intera esecuzione, e i passaggi rimanenti non vengono eseguiti. L’errore viene salvato sul passaggio, e puoi leggerlo nei dettagli dell’esecuzione nella scheda **Runs**. Per lasciare invece proseguire le esecuzioni oltre i passaggi non riusciti, imposta `on_step_failure` su `skip` nelle `settings` dell’automazione con l’API.

| Errore | Causa |
| --- | --- |
| `send_email: Template '…' not found or not published` | Il template è stato eliminato, oppure l’alias non ha una versione pubblicata. |
| `send_email: Sending domain is not verified or not found` | Il dominio del mittente non è verificato nel workspace. |
| `send_email: Unable to determine recipient address` | **To (recipient)** è vuoto, oppure il contatto non esiste più. |
| `send_email: Insufficient credits (…)` | Il workspace ha esaurito i crediti. |
| `Pro includes 50,000 subscribers per audience.` (o il limite del tuo piano) | Un passaggio **Add to audience** o **Create contact** ha trovato una lista piena. |
| `forward_email: Source email has no raw content to forward` | Il contenuto dell’email è già stato rimosso in base alle impostazioni di [conservazione dei dati](/it/docs/data-retention/). |

Per trovare e correggere le esecuzioni non riuscite, vedi [Esecuzioni e statistiche](/it/docs/automations/runs/#debug-a-failed-run).

## Vedi anche

  - [Trigger](/it/docs/automations/triggers/): Cosa avvia un’esecuzione.
  - [Modelli](/it/docs/automations/recipes/): Automazioni pronte da cui partire.

---
Fonte: https://emailit.com/it/docs/automations/steps/
