# Como configurar uma campanha de carrinho abandonado

Compradores que adicionam itens a um carrinho e saem sem comprar são algumas das conversões mais fáceis de recuperar. Eles já demonstraram intenção.

Este guia mostra como enviar a eles um e-mail de carrinho abandonado no Pushwoosh: dispare o evento `PW_AbandonedCart` da sua loja, mostre os itens deixados para trás no e-mail com o bloco [Produtos](/pt/product/content/email-content/drag-and-drop-email-editor/blocks/#products) e acione o envio a partir de uma Customer Journey.

## O que é PW_AbandonedCart

`PW_AbandonedCart` marca que um usuário deixou itens em seu carrinho sem comprar. Não é um [evento padrão](/pt/product/audience-data-and-segmentation/events/default-events/) integrado. É um nome de evento compartilhado usado em todas as integrações de e-commerce do Pushwoosh para que as journeys, o bloco de Produtos e os segmentos funcionem da mesma maneira.

*   **[Integração com Magento](/pt/product/integrations/magento-integration/):** envia `PW_AbandonedCart` e `PW_OrderCreated` para você automaticamente.
*   **[Integração com Shopify](/pt/product/integrations/shopify-integration/):** envia `PW_AbandonedCart`, `PW_OrderCreated` e `PW_AbandonedCartUpdate` (dispara novamente enquanto o comprador continua editando o mesmo checkout) para você automaticamente, com os itens do carrinho enriquecidos do seu Catálogo de Produtos.
*   **Qualquer outra loja ou backend personalizado:** sua equipe envia ambos os eventos via [postEvent](/pt/developer/api-reference/user-centric-api/#postevent) com os nomes e atributos em [Como enviar lembretes de carrinho abandonado](#how-to-send-abandoned-cart-reminders).

### O que acontece quando você envia PW_AbandonedCart

O envio de `PW_AbandonedCart` faz duas coisas do lado do Pushwoosh:

1.  É registrado como qualquer outro evento personalizado, para que você possa vê-lo nas [Estatísticas de Eventos](/pt/product/audience-data-and-segmentation/events/) e usá-lo em [segmentos](/pt/product/audience-data-and-segmentation/segmentation/create-segments/by-events/).
2.  O Pushwoosh armazena o conteúdo do carrinho e marca o usuário com:
    *   **PW_AbandonedCartID:** um identificador para o carrinho atual, usado para buscar seu conteúdo no momento do envio.
    *   **PW_AbandonedCartDate:** o valor `abandonedDate` do payload do evento.

### O que acontece quando você envia PW_OrderCreated

Quando o comprador faz um pedido, envie `PW_OrderCreated` (ou `PW_OrderUpdated`). O Pushwoosh limpa `PW_AbandonedCartID` e `PW_AbandonedCartDate` para esse usuário imediatamente. Ele não corresponde aos valores de `orderId`: qualquer pedido do usuário remove ambas as tags, mesmo que a compra tenha sido de um carrinho diferente.

**Exemplo:** Um comprador abandona o carrinho `ORDER-100` e, em seguida, compra o `ORDER-200` antes que o lembrete seja enviado. O Pushwoosh limpa as tags, então ele não receberá um lembrete sobre o `ORDER-100`.

<Aside type="note" title="O que aparece no e-mail de lembrete">
O bloco de Produtos lê o carrinho armazenado no perfil do usuário no momento do envio. Ele não usa a lista de itens do evento `PW_AbandonedCart` que iniciou a journey.

*   **Mesmo `orderId`:** cada novo `PW_AbandonedCart` sobrescreve o carrinho armazenado. O lembrete mostra os itens mais recentes.
*   **`orderId` diferente:** O Pushwoosh armazena um carrinho separado. Os itens não são mesclados.
</Aside>

## Como enviar lembretes de carrinho abandonado

Siga estas etapas para criar os eventos, enviá-los da sua loja, construir o e-mail e lançar a Customer Journey.

### Crie os eventos no seu Painel de Controle

[O Pushwoosh cria automaticamente](/pt/product/audience-data-and-segmentation/events/#1-create-events-in-pushwoosh-control-panel) um evento e seus atributos a partir da primeira chamada `postEvent` sob um nome que não reconhece, inferindo o tipo de cada atributo a partir do valor enviado. Essa inferência não é confiável para campos de dinheiro em `PW_AbandonedCart`. Declare ambos os eventos explicitamente para que os tipos sejam definidos corretamente:

1.  Vá para **Público → Eventos** no seu Painel de Controle do Pushwoosh e clique em **Criar Evento**.
2.  Crie um evento personalizado chamado `PW_AbandonedCart` com estes atributos:

| Atributo | Tipo |
| :--- | :--- |
| `email` | string |
| `orderId` | string |
| `customerId` | string |
| `orderUrl` | string |
| `abandonedDate` | date |
| `createdDate` | date |
| `totalPrice` | decimal (preço) |
| `shippingAmount` | decimal (preço) |
| `taxAmount` | decimal (preço) |
| `discountAmount` | decimal (preço) |
| `currency` | string |

3.  Repita para `PW_OrderCreated` com um único atributo `orderId`.

<Aside type="caution" title="Use os tipos de atributo corretos">
O Pushwoosh armazena cada valor de atributo apenas no tipo definido para ele, seja declarado aqui ou inferido para um atributo criado automaticamente. Um valor que não corresponde ao tipo é descartado silenciosamente, e o `postEvent` ainda retorna sucesso, então você não verá na resposta que os dados foram perdidos. Você pode corrigir um tipo errado mais tarde editando o evento no Painel de Controle, mas quaisquer dados enviados antes da correção já foram perdidos.

Para que o carrinho abandonado funcione, corresponda aos tipos na tabela acima:

*   **Campos de dinheiro** (`totalPrice`, `shippingAmount`, `taxAmount`, `discountAmount`): use **decimal (preço)**. Se não for declarado, um valor de número inteiro como `129` é inferido como **inteiro**. Declarado como **string**, o carrinho não é armazenado e nenhuma tag é definida. Declarado como **inteiro**, `129.90` se torna `129`.
*   **Datas** (`abandonedDate`, `createdDate`): use **date**.
*   **`items`:** não o adicione à definição do evento. Envie-o no payload JSON como um array de objetos. Use números JSON reais para `price` e `quantity`, não strings entre aspas.
</Aside>

[Saiba mais sobre a criação de eventos personalizados](/pt/product/audience-data-and-segmentation/events/custom-events/#creating-custom-events).

### Envie os eventos do seu backend

<Aside type="caution" icon="setting" title="É necessária a ajuda de um desenvolvedor">
Você precisará da ajuda da sua equipe de desenvolvimento para enviar eventos da sua loja ou backend. Por favor, compartilhe este guia com eles.
</Aside>

Peça à sua equipe de desenvolvimento para chamar o [postEvent](/pt/developer/api-reference/user-centric-api/#postevent) sempre que um carrinho for abandonado, usando este esquema de atributos:

```json
{
  "request": {
    "hwid": "8f65b16df378e7a6bece9614e1530fb2",
    "application": "XXXXX-XXXXX",
    "event": "PW_AbandonedCart",
    "attributes": {
      "email": "shopper@example.com",
      "orderId": "ORDER-10293",
      "customerId": "CUST-4471",
      "orderUrl": "https://yourstore.com/cart/restore/ORDER-10293",
      "abandonedDate": "2026-07-28T10:15:00Z",
      "createdDate": "2026-07-28T09:40:00Z",
      "totalPrice": 129.90,
      "shippingAmount": 9.90,
      "taxAmount": 0,
      "discountAmount": 0,
      "currency": "USD",
      "items": [
        {
          "productId": "SKU-4821",
          "name": "Wireless headphones",
          "quantity": 1,
          "price": 119.90,
          "sku": "SKU-4821",
          "description": "Over-ear, noise-cancelling",
          "imageUrl": "https://yourstore.com/media/sku-4821.jpg",
          "productUrl": "https://yourstore.com/products/sku-4821",
          "category": "Audio"
        }
      ]
    },
    "userId": "shopper@example.com"
  }
}
```

Quando o carrinho se converter em um pedido, envie `PW_OrderCreated` apenas com o `orderId` para limpar as tags do carrinho:

```json
{
  "request": {
    "hwid": "8f65b16df378e7a6bece9614e1530fb2",
    "application": "XXXXX-XXXXX",
    "event": "PW_OrderCreated",
    "attributes": {
      "orderId": "ORDER-10293"
    },
    "userId": "shopper@example.com"
  }
}
```

<Aside type="tip">
Se você usa a [integração com Magento](/pt/product/integrations/magento-integration/#abandoned-cart-sync-configuration) ou a [integração com Shopify](/pt/product/integrations/shopify-integration/#part-5-track-orders-carts-and-checkout-steps), não precisa enviar esses eventos do seu backend. O Magento envia `PW_AbandonedCart` e `PW_OrderCreated` para você em um cronograma; o Shopify os envia (além de `PW_AbandonedCartUpdate` para edições de checkout em andamento) a partir de webhooks em tempo real.
</Aside>

### Adicione um bloco de Produtos ao seu e-mail

1.  Abra o [editor de conteúdo de e-mail](/pt/product/content/email-content/drag-and-drop-email-editor/) e adicione um bloco de [Produtos](/pt/product/content/email-content/drag-and-drop-email-editor/blocks/#products) à tela.
2.  No painel de configurações, defina a **Fonte** como [Carrinho](/pt/product/content/email-content/drag-and-drop-email-editor/blocks/#show-items-from-the-cart).

<Aside type="note">
A fonte **Carrinho** do bloco de Produtos requer **Modelos de Conteúdo** no seu plano e um [token de acesso à API](/pt/developer/api-reference/api-access-token/). Consulte [Bloco de Produtos](/pt/product/content/email-content/drag-and-drop-email-editor/blocks/#products).
</Aside>

3.  Defina **Máximo de produtos exibidos** para limitar quantos itens do carrinho aparecem no e-mail.

<img src="/lifecycle-marketing-campaigns-how-to-set-up-an-abandoned-cart-campaign-1.webp" alt="Configurações do bloco de Produtos com a Fonte definida como Carrinho e Máximo de produtos exibidos"/>

4.  Estilize a grade e o modelo de cartão conforme necessário. Consulte [Estilizar a grade](/pt/product/content/email-content/drag-and-drop-email-editor/blocks/#style-the-grid).

<img src="/lifecycle-marketing-campaigns-how-to-set-up-an-abandoned-cart-campaign-2.webp" alt="Bloco de Produtos na tela de e-mail com modelo de cartão e configurações de estilo de grade" width="580"/>

Quando o e-mail é enviado, o bloco de Produtos procura o carrinho armazenado de cada destinatário usando sua tag `PW_AbandonedCartID`. Em seguida, ele preenche o bloco com os itens atuais do carrinho: imagem, título, preço e um link de volta para o carrinho. O layout vem do modelo de cartão que você definiu no editor. Destinatários sem essa tag (nada abandonado ou já pedido) pulam o bloco em vez de mostrar conteúdo vazio, então é seguro usá-lo também em uma campanha mais ampla.

<Aside type="tip">
A fonte Carrinho está disponível no editor de conteúdo de e-mail. Para lembrar os compradores com um push, use uma etapa de [Push](/pt/product/customer-journey/journey-elements/channels/push/) com [personalização](/pt/product/personalization/dynamic-content/) que faça referência aos detalhes do carrinho do evento.
</Aside>

### Construa a Customer Journey

1.  Adicione uma [Entrada Baseada em Gatilho](/pt/product/customer-journey/journey-elements/entry-elements/trigger-based-entry/) usando o evento `PW_AbandonedCart`.
2.  Adicione uma etapa de [Aguardar Gatilho](/pt/product/customer-journey/journey-elements/flow-controls/wait-for-trigger/). Defina seu período de espera para uma ou duas horas. Nomeie a ramificação como **Pedido realizado** e adicione o evento `PW_OrderCreated` a ela.

<Aside type="caution">
Defina o período de espera no próprio **Aguardar Gatilho**. Não adicione uma etapa separada de **Atraso de Tempo** antes dele.

**Aguardar Gatilho** só começa a escutar por `PW_OrderCreated` quando o comprador atinge essa etapa. Se o **Atraso de Tempo** vier primeiro e o comprador fizer um pedido durante esse atraso, o evento do pedido não será detectado. O comprador se move para a ramificação **Não acionado**, mas o `PW_OrderCreated` já limpou o `PW_AbandonedCartID`. O bloco de Produtos não encontra nenhum carrinho e o pula. O comprador ainda recebe o e-mail de carrinho abandonado sem produtos, mesmo que já tenha concluído a compra.
</Aside>

3.  Encaminhe a ramificação **Pedido realizado** para [Sair](/pt/product/customer-journey/journey-elements/flow-controls/exit/). O usuário já comprou, então não o lembre.
4.  Encaminhe a ramificação **Não acionado** para a etapa de [E-mail](/pt/product/customer-journey/journey-elements/channels/email/). Salve o e-mail que você construiu em [Adicione um bloco de Produtos ao seu e-mail](#add-a-products-block-to-your-email) como [conteúdo de e-mail](/pt/product/content/email-content/) e, em seguida, selecione-o como o conteúdo desta etapa.

<img src="/lifecycle-marketing-campaigns-how-to-set-up-an-abandoned-cart-campaign-3.webp" alt="Tela da Customer Journey com Entrada Baseada em Gatilho, Aguardar Gatilho com ramificações Pedido realizado e Não acionado, etapas de E-mail e Saída, e sem Atraso de Tempo"/>

### Teste antes de lançar

1.  Envie um evento de teste `PW_AbandonedCart` para um dispositivo de teste. Não defina a tag `PW_AbandonedCartID` manualmente: o bloco de Produtos carrega o conteúdo do carrinho armazenado que o evento cria, não do valor da tag. Sem um evento real, o bloco é renderizado vazio.
2.  Visualize o e-mail e confirme o layout e o conteúdo do produto antes de enviar para compradores reais.