# Como configurar recomendações de produtos em e-mails

Definir a **Fonte** do bloco de Produtos como **Recomendações** pode classificar produtos por **Mais vendidos**, **De volta ao estoque**, **Queda de preço**, **Novidades**, **Comprados juntos** ou **Com base no que visualizaram**, sem que você precise escolher produtos ou escrever uma regra de catálogo. Consulte [Obter produtos recomendados](/pt/product/content/email-content/drag-and-drop-email-editor/blocks/#get-recommended-products) para cada campo que esta fonte adiciona. Três dessas estratégias precisam de dados de fora do seu catálogo para funcionar: **Mais vendidos** lê seu histórico de pedidos, e **Comprados juntos** e **Com base no que visualizaram** leem o que os compradores olharam e compraram. Este guia aborda o que enviar para que cada estratégia tenha algo para classificar.

<Aside type="tip">
Já está enviando `PW_AbandonedCart` e `PW_OrderCreated` para [recuperação de carrinho abandonado](/pt/tutorials/product-guides/email-marketing-campaigns/how-to-set-up-an-abandoned-cart-campaign/)? Continue lendo. A estratégia **Mais vendidos** precisa de mais um campo no `PW_OrderCreated` que o guia de carrinho abandonado não aborda.
</Aside>

## Antes de começar

Certifique-se de que o catálogo da sua conta tenha produtos. Vá para **Conteúdo → Catálogo de Produtos** e conecte um feed, importe um CSV ou adicione produtos manualmente. [Aprenda como popular seu catálogo](/pt/product/content/product-catalog/#ways-to-populate-your-catalog).

<Aside type="caution" icon="setting" title="Assistência de desenvolvedor necessária">
O envio dos eventos abaixo requer a ajuda da sua equipe de desenvolvimento, a menos que a integração da sua loja já os envie para você. Por favor, compartilhe este guia com eles.
</Aside>

<Aside type="note" title="Contas novas veem o catálogo regular primeiro">
Toda estratégia abaixo precisa de um histórico acumulado antes de poder classificar qualquer coisa. Até lá, o bloco mostra o catálogo regular. Veja a nota em [Obter produtos recomendados](/pt/product/content/email-content/drag-and-drop-email-editor/blocks/#get-recommended-products).
</Aside>

## Quais estratégias precisam de eventos

Três das seis estratégias classificam produtos a partir de eventos que você envia; as outras três classificam diretamente do seu catálogo e não precisam de nada de você.

| Estratégia | Precisa de eventos? | Fonte de dados |
| :---- | :---- | :---- |
| **De volta ao estoque** | Não | Alterações de estoque do catálogo |
| **Queda de preço** | Não | Alterações de preço do catálogo |
| **Novidades** | Não | Data de "adição" do catálogo |
| **Mais vendidos** (7/30 dias) | Sim | `PW_OrderCreated` / `PW_OrderUpdated` com `items` |
| **Com base no que visualizaram** | Sim | Qualquer evento que contenha um ID de produto |
| **Comprados juntos** | Sim | Qualquer evento que contenha um ID de produto, mais uma tag de dispositivo |

Uma alteração de estoque ou preço no seu feed, ou a próxima sincronização agendada, atualiza **De volta ao estoque**, **Queda de preço** e **Novidades** automaticamente. Nada a enviar para essas três.

## Mais vendidos: adicione itens aos seus eventos de pedido

**Mais vendidos (7 dias)** e **Mais vendidos (30 dias)** classificam produtos por quantas unidades foram vendidas nesse período. Eles leem o array `items` em `PW_OrderCreated` e `PW_OrderUpdated`, especificamente o `productId` e a `quantity` de cada item.

Se você já envia `PW_OrderCreated` para [limpar tags de carrinho abandonado](/pt/tutorials/product-guides/email-marketing-campaigns/how-to-set-up-an-abandoned-cart-campaign/#what-happens-when-you-send-pw_ordercreated), essa chamada mínima (apenas com `orderId`) ainda limpa o carrinho, mas não dá nada para a estratégia Mais vendidos contar. Adicione os itens de linha do pedido à mesma chamada:

```json
{
  "request": {
    "hwid": "8f65b16df378e7a6bece9614e1530fb2",
    "application": "XXXXX-XXXXX",
    "event": "PW_OrderCreated",
    "attributes": {
      "orderId": "ORDER-10293",
      "items": [
        {
          "productId": "SKU-4821",
          "quantity": 1
        },
        {
          "productId": "SKU-5190",
          "quantity": 2
        }
      ]
    },
    "userId": "shopper@example.com"
  }
}
```

O `productId` deve corresponder ao ID que seu [Catálogo de Produtos](/pt/product/content/product-catalog/) usa para esse item, para que a estratégia Mais vendidos possa procurar o produto para exibir. Campos de item extras (preço, nome e assim por diante) são ignorados para esta estratégia. Apenas `productId` e `quantity` contam para a classificação. Envie o mesmo array `items` em `PW_OrderUpdated` para edições de pedidos, reembolsos ou cancelamentos parciais, pois a estratégia Mais vendidos recontará a partir do que o evento mais recente para esse pedido disser.

<Aside type="tip">
Se você usa a [integração com o Shopify](/pt/product/integrations/shopify-integration/), o `PW_OrderCreated` já carrega `items` com `productId` e `quantity` para cada pedido — nada a adicionar do seu lado. A integração não envia `PW_OrderUpdated`, no entanto, então a estratégia Mais vendidos conta os pedidos como foram originalmente feitos e não subtrai unidades de edições, reembolsos ou cancelamentos posteriores.
</Aside>

<Aside type="caution" title="Envie a quantidade como um número">
Use um número JSON real para `quantity`, não uma string entre aspas. O Pushwoosh armazena cada valor de atributo apenas no tipo com o qual foi declarado ou inferido pela primeira vez; um valor incompatível é descartado silenciosamente, e o `postEvent` ainda retorna sucesso. Veja [Use os tipos de atributo corretos](/pt/tutorials/product-guides/email-marketing-campaigns/how-to-set-up-an-abandoned-cart-campaign/#create-the-events-in-your-control-panel) para o mesmo aviso sobre o `PW_AbandonedCart`.
</Aside>

<Aside type="note">
**Mais vendidos** classifica especificamente pelo histórico de pedidos. Visualizações e atividade no carrinho não contam. Para uma classificação que também inclua a navegação e a atividade no carrinho, use **Com base no que visualizaram** ou **Comprados juntos**.
</Aside>

## Com base no que visualizaram e Comprados juntos: rastreie a atividade do produto

Ambas as estratégias se baseiam no mesmo sinal: eventos que carregam um ID de produto. Você não precisa de um nome de evento dedicado para "produto visualizado" — qualquer [evento personalizado](/pt/product/audience-data-and-segmentation/events/custom-events/) enviado via [postEvent](/pt/developer/api-reference/user-centric-api/#postevent) conta, desde que seus `attributes` incluam uma destas chaves:

* Um único produto, como um atributo de nível superior: `product_id`, `productId`, `productid`, `item_id` ou `sku`.
* Vários produtos, como um array `products` onde cada item tem `product_id`, `productId`, `id` ou `sku`.

Por exemplo, dispare seu evento de visualização de produto existente com um atributo de ID de produto já nele:

```json
{
  "request": {
    "hwid": "8f65b16df378e7a6bece9614e1530fb2",
    "application": "XXXXX-XXXXX",
    "event": "ProductViewed",
    "attributes": {
      "product_id": "SKU-4821",
      "category": "Audio"
    },
    "userId": "shopper@example.com"
  }
}
```

**Com base no que visualizaram** classifica os produtos com os quais cada comprador interagiu recentemente — nenhuma configuração adicional é necessária depois que os eventos acima estiverem fluindo.

<Aside type="tip">
Se você usa a [integração com o Shopify](/pt/product/integrations/shopify-integration/), o embed do tema da vitrine já envia `PW_ProductViewed` com um `productId` em cada visualização de página de produto — nada a adicionar do seu lado, desde que o botão **Push Init Embed** esteja ativado (ele fica desativado por padrão). Veja [Eventos de navegação na vitrine](/pt/product/integrations/shopify-integration/#storefront-browsing-events).
</Aside>

**Comprados juntos** classifica produtos frequentemente comprados junto com um produto âncora, em todo o histórico da sua conta. Precisa de mais uma coisa: uma **Tag de Produto**, uma [tag de dispositivo](/pt/developer/api-reference/tags/) que armazena o ID do produto âncora atual. Defina o nome do campo ao configurar a estratégia no [bloco de Produtos](/pt/product/content/email-content/drag-and-drop-email-editor/blocks/#get-recommended-products) (por exemplo, `PW_LastViewedProductID`), e mantenha essa tag atualizada em cada dispositivo. Por exemplo, [defina-a](/pt/developer/api-reference/tags/) como o ID do produto sempre que o comprador visualizar um produto. Sem a tag definida em um destinatário, o bloco volta a exibir o catálogo regular para ele.

<Aside type="caution" title="Regras de nome de tag">
O nome da tag aceita apenas letras, dígitos, sublinhados e espaços, pois precisa ser endereçável em Liquid. Veja [Comprados juntos precisa de uma Tag de Produto](/pt/product/content/email-content/drag-and-drop-email-editor/blocks/#get-recommended-products).
</Aside>

## Confirme que seus eventos estão chegando

Antes de adicionar o bloco, verifique se o Pushwoosh está realmente recebendo os eventos acima: vá para **Público → Eventos**, abra o evento que você enviou (`PW_OrderCreated` ou o evento personalizado que carrega um ID de produto) e confirme que os acessos recentes aparecem. Veja [Estatísticas de eventos](/pt/product/audience-data-and-segmentation/events/).

<Aside type="note">
Um bloco de Produtos vazio pode significar "os eventos nunca chegaram" ou "ainda não há histórico suficiente acumulado" (veja a nota acima). As estatísticas de eventos descartam a primeira causa antes que você investigue a segunda.
</Aside>

## Adicione o bloco ao seu e-mail

Adicione um bloco de [Produtos](/pt/product/content/email-content/drag-and-drop-email-editor/blocks/#products) ao seu [conteúdo de e-mail](/pt/product/content/email-content/drag-and-drop-email-editor/create-email-content-with-drag-and-drop-editor/), defina a **Fonte** como **Recomendações** e escolha uma **Estratégia**. Veja [Obter produtos recomendados](/pt/product/content/email-content/drag-and-drop-email-editor/blocks/#get-recommended-products) para cada campo no painel de configurações. Clique em **Atualizar visualização** para verificar se a tela é preenchida com produtos reais antes de enviar.