# Etapas de automação

> Referência de todas as etapas de automação, de enviar e-mail, esperar e condição a etapas de lista de contatos, de contato e de supressão, além de ramificações e falhas de etapas.

As etapas são o que uma execução faz depois que o gatilho dela dispara. Esta página lista todas as etapas por contexto, com as configurações e as regras delas, explica como as etapas se conectam em ramificações e mostra o que acontece quando uma etapa falha.

## Adicionar e configurar etapas

Na aba **Editor** da automação (disponível enquanto a automação está em rascunho ou pausada):

- **Adicionar uma etapa:** selecione o botão de mais abaixo da última etapa, ou abaixo de **Yes** ou **No** em uma condição. Pesquise no seletor ou escolha em **Actions**.
- **Configurar uma etapa:** selecione-a no canvas. As configurações dela abrem em um painel lateral. Depois que a etapa for executada, uma aba **Stats** aparece ao lado de **Configure**.
- **Remover uma etapa:** selecione-a e selecione **Delete step** no painel lateral.
- **Salvar:** selecione **Save**. As etapas com problemas ficam destacadas com uma contagem de erros.

## Etapas por contexto

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

As configurações das etapas podem incluir placeholders como `{{contact.first_name}}` ou `{{payload.object.to}}`, preenchidos em cada execução. Consulte [Dados disponíveis para as etapas](/pt/docs/automations/triggers/#data-available-to-steps).

## Send email

Envia um e-mail montado a partir de um dos seus [templates](/pt/docs/templates/).

| Configuração | Obrigatória | Observações |
| --- | --- | --- |
| **Email template** | Sim | O template a enviar. Pela API, `template_id` recebe um ID `tem_` ou um alias, que usa a versão publicada. |
| **To (recipient)** | Contextos Email e Event | O endereço para o qual enviar. As automações do contexto Contact sempre enviam para o contato da execução. |
| **Subject** | Não | Substitui o assunto do template. |
| **From** | Não | Substitui o remetente do template, por exemplo, `"Acme" <hello@acme.com>`. |
| **Reply to** | Não | Substitui o endereço de resposta do template. |

Regras:

- **O template é renderizado com o [Temple](/pt/docs/templates/temple/).** Nas automações do contexto Contact, os campos do contato ficam disponíveis diretamente, então `{{first_name}}`, `{{email}}` e `{{custom_fields.plan}}` funcionam. Todos os contextos também têm `{{contact.*}}`, `{{payload.*}}` e `{{meta.*}}`. As tags de mesclagem de campanhas, como `{{cf.plan}}` e `{{unsubscribe_url}}`, não são preenchidas.
- **O remetente deve estar em um domínio verificado.** A substituição em **From** ou o remetente do template devem usar um domínio verificado no workspace. **Save** verifica as substituições, e a etapa falha durante a execução se o domínio não estiver verificado.
- **Um assunto e um conteúdo são obrigatórios**, vindos do template ou das substituições.
- **Cada e-mail custa 1 crédito**, além dos 3 créditos da execução.
- **Ela não verifica as inscrições.** O e-mail é enviado mesmo que o contato tenha se descadastrado das suas listas de contatos. Os endereços suprimidos continuam bloqueados na entrega, e os workspaces em sandbox só podem enviar para os endereços das contas dos membros.
- **Sem link de descadastro nem carregamentos e cliques.** Os e-mails de automações não recebem cabeçalhos `List-Unsubscribe`, e os carregamentos e cliques não são rastreados.

As **Stats** da etapa acompanham cada e-mail enviado por ela em **Accepted** e **Delivered** e contam os bounces, as falhas e as reclamações.

## Wait / Delay

Pausa a execução antes da próxima etapa.

| Configuração | Observações |
| --- | --- |
| **Duration** e **Unit** | **Minutes**, **Hours** ou **Days**. A espera mais longa é de 30 dias. Pela API, defina `seconds`, até `2592000`. |

Enquanto uma execução espera, ela continua em **Running**, e a etapa de espera aparece como aguardando. Pausar a automação não interrompe as execuções que estão esperando.

## Condition (If/Else)

Envia a execução para a ramificação **Yes** quando as regras correspondem, ou para a ramificação **No** quando não correspondem.

- **Regras:** um campo, um operador e um valor, combinados com **All rules match** ou **Any rule matches**. Os operadores são os mesmos dos [filtros de gatilho](/pt/docs/automations/triggers/#filters).
- **Campos:** nas automações do contexto Contact, **Email**, **First name**, **Last name** e os seus campos personalizados. Nas automações do contexto Email, os campos do evento do gatilho. Pela API, `field` pode ser qualquer caminho, com os prefixos `contact.`, `email.`, `payload.` e `meta.`.
- **Ramificações:** adicione a próxima etapa em **Yes**, em **No** ou nas duas. Uma ramificação sem etapa termina a execução ali.

## Add to audience

Contexto Contact. Inscreve o contato da execução na lista escolhida em **Audience**. Se o contato tiver se descadastrado dela, ele é inscrito de novo. A etapa falha se a lista tiver atingido o [limite de inscritos](/pt/docs/audiences/#limits). Ela não inicia automações **Added to audience**.

## Remove from audience

Contexto Contact. Desativa a inscrição do contato na lista escolhida em **Audience**. O contato continua na lista como inscrito descadastrado, ao contrário de **Remove from audience** no painel, que exclui a participação.

## Edit contact

Contexto Contact. Define um ou mais campos no contato da execução. Adicione uma linha por campo, com **Field name** e **Value**:

| Nome do campo | Efeito |
| --- | --- |
| `first_name`, `last_name`, `email` | Atualiza esse campo. |
| `unsubscribed` | Define o status de marketing do contato. Use `true` para descadastrar o contato de todas as campanhas. Qualquer valor não vazio conta como `true`. |
| Qualquer outro nome | Guarda o valor no campo personalizado com essa chave, mantendo os outros campos personalizados. |

Os valores podem usar placeholders, por exemplo, `{{payload.object.audience.name}}`. A alteração não envia um evento `contact.updated`, então não inicia automações **Contact updated** nem webhooks.

## Forward email

Contextos Email e Event. Envia uma cópia do e-mail da execução, com o conteúdo e os anexos originais, para o endereço em **Forward to**. O assunto passa a ser “Fwd: ” seguido do assunto original. O e-mail deve vir de um domínio de envio verificado no workspace, e cada encaminhamento custa 1 crédito. Consulte [Encaminhar com automações](/pt/docs/inbound/forward-with-automations/).

## Add to suppressions

Contextos Email e Event. Adiciona um endereço à sua [lista de supressão](/pt/docs/suppressions/) com o tipo `recipient`, que bloqueia todos os envios para ele, e com o motivo informado em **Reason** (padrão `automation`). Nas automações do contexto Email, o endereço é o destinatário do e-mail. Nas automações do contexto Event, defina `email` pela API, por exemplo, `{{payload.email}}`. A etapa envia um evento `suppression.created`.

## Remove from suppressions

Contextos Email e Event. Remove o endereço da lista de supressão: o destinatário do e-mail nas automações do contexto Email, ou o `email` definido pela API nas automações do contexto Event.

## Create contact

Contextos Email e Event. Cria um contato e, se você escolher uma lista em **Audience (optional)**, inscreve o contato nela.

- Nas automações do contexto Email, o contato é o endereço do destinatário do e-mail. Nos e-mails recebidos, é o endereço para o qual o e-mail foi enviado. Para criar um contato para o remetente, defina `email` como `{{email.mail_from}}` pela API.
- Nas automações do contexto Event, defina `email` e, se quiser, `first_name` pela API.
- Se o contato já existir, ele é mantido como está e apenas inscrito na lista.
- A etapa não inicia automações **Added to audience**.

## Etapas exclusivas da API

Estas etapas podem ser adicionadas pela API, mas ainda não no editor do painel. Elas funcionam em todos os contextos.

| Etapa | Chave na API | Configuração | O que faz |
| --- | --- | --- | --- |
| Call webhook | `call_webhook` | `url` (obrigatório), `method` (padrão `POST`), `headers`, `body` | Envia uma requisição HTTP com content type JSON e registra a resposta. Uma resposta diferente de 2xx ou um timeout é registrado como resultado da etapa (`2xx`, `4xx`, `5xx`, `timeout` ou `network_error`) e não faz a execução falhar. |
| Run automation | `run_automation` | `automation_id` (obrigatório) | Inicia uma execução de outra automação em execução com o mesmo payload e depois continua. A outra execução custa os próprios 3 créditos. É ignorada se essa automação não estiver em execução. |
| Random split | `experiment` | `variants`: lista de `{ "key", "weight" }`, `control` opcional | Envia cada execução para uma ramificação aleatória, na proporção dos pesos. A ramificação de cada variante tem o nome da `key` dela. Quando a ramificação de uma variante termina, a execução continua pela ramificação `default` da etapa. |
| End | `end` | Nenhuma | Marca o fim de uma ramificação. |

```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" }
  }
}
```

## Ramificações e conexões

Pela API, uma automação é uma lista de `steps`, cada uma com uma `key` única, e uma lista de `connections` da chave de uma etapa para a próxima:

```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` para uma próxima etapa normal, `yes` ou `no` depois de uma condição e a chave de uma variante depois de um random split.
- **Uma condição só segue a ramificação que escolheu.** Uma conexão `default` saindo de uma condição nunca é seguida.
- **Uma etapa com várias conexões de saída na mesma ramificação** inicia todas elas, e as ramificações são executadas lado a lado.
- **Toda etapa deve ser alcançável a partir de um gatilho.** Nas automações dos contextos Contact e Email com vários gatilhos, todos os gatilhos devem se conectar à mesma primeira etapa.
- **Envie `steps` e `connections` juntos** ao atualizar uma automação. As etapas cujas chaves não mudam mantêm o histórico e as estatísticas.

## Quando uma etapa falha

Por padrão, uma etapa com falha faz a execução inteira falhar, e as etapas restantes não são executadas. O erro fica salvo na etapa, e você pode lê-lo nos detalhes da execução na aba **Runs**. Defina `on_step_failure` como `skip` nas `settings` da automação pela API para que as execuções continuem depois de etapas com falha.

| Erro | Causa |
| --- | --- |
| `send_email: Template '…' not found or not published` | O template foi excluído, ou o alias não tem versão publicada. |
| `send_email: Sending domain is not verified or not found` | O domínio do remetente não está verificado no workspace. |
| `send_email: Unable to determine recipient address` | **To (recipient)** está vazio, ou o contato não existe mais. |
| `send_email: Insufficient credits (…)` | O workspace ficou sem créditos. |
| `Pro includes 50,000 subscribers per audience.` (ou o limite do seu plano) | Uma etapa **Add to audience** ou **Create contact** encontrou uma lista cheia. |
| `forward_email: Source email has no raw content to forward` | O conteúdo do e-mail já foi removido pelas suas configurações de [retenção de dados](/pt/docs/data-retention/). |

Consulte [Execuções e estatísticas](/pt/docs/automations/runs/#debug-a-failed-run) para saber como encontrar e corrigir execuções com falha.

## Veja também

  - [Gatilhos](/pt/docs/automations/triggers/): O que inicia uma execução.
  - [Receitas](/pt/docs/automations/recipes/): Automações prontas para começar.

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