# Conectar a sua loja

> Envie produtos e pedidos do backend da sua loja e adicione o script de rastreamento do Emailit para registrar visualizações de produtos, carrinhos e compras e reconhecer os visitantes que chegam pelos seus e-mails. Alfa: aberto apenas à equipe do Emailit.

Uma loja envia dois tipos de dados ao Emailit: o catálogo e os pedidos, a partir do backend, com a API, e o que os visitantes fazem no site, com o script de rastreamento do [rastreamento de eventos](/pt/docs/events/). Use os dois para ter o quadro completo: a API é o registro confiável dos pedidos, e o script acrescenta as visualizações de produtos, os carrinhos e os visitantes que chegam pelos seus e-mails.

> **O e-commerce está em alfa:** O e-commerce está aberto apenas à equipe do Emailit enquanto o testamos. A API e o script de rastreamento funcionam apenas em workspaces que pertencem à equipe do Emailit. Consulte [Quem pode usar o e-commerce](/pt/docs/commerce/#who-can-use-commerce).

## Antes de começar

- Uma [chave de API](/pt/docs/developers/api-keys/) para as chamadas do backend. Uma chave **Events Only** pode enviar produtos, pedidos e carrinhos: é a mesma chave que envia [eventos do seu backend](/pt/docs/events/send-events/). Ela não consegue ler nada de volta, então as respostas dela trazem apenas `object`, `id` e `external_id`. Use uma chave **Full Access** para também ler dados, gerenciar cupons ou alterar configurações.
- Para o script de rastreamento, permissão para adicionar um script às páginas da sua loja.

## Enviar dados do seu backend

### Produtos

Envie o seu catálogo com [Criar ou atualizar produtos em massa](/pt/docs/api-reference/products/batch/), e de novo sempre que os produtos mudarem. Cada produto é identificado pelo ID do produto na sua loja, então enviá-lo de novo o atualiza.

```bash
curl https://api.emailit.com/v2/products/batch \
  -X POST \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "products": [{
      "id": "1234",
      "title": "Trail Runner GTX",
      "url": "https://shop.example.com/products/trail-runner",
      "image_url": "https://shop.example.com/images/trail-runner.jpg",
      "price": 139,
      "compare_at_price": 169,
      "currency": "EUR",
      "categories": ["Shoes", "Running"],
      "inventory_quantity": 40
    }]
  }'
```

Os feeds de produtos nos e-mails deixam de fora os produtos arquivados e os produtos com estoque 0, então mantenha `status` e `inventory_quantity` atualizados.

### Pedidos

Quando um pedido é feito, envie-o com [Criar ou atualizar um pedido](/pt/docs/api-reference/orders/create/):

```bash
curl https://api.emailit.com/v2/orders \
  -X POST \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "1001",
    "email": "jane@example.com",
    "currency": "EUR",
    "total": 125,
    "shipping": 5,
    "coupon_codes": ["WLC-8K2M4P"],
    "cart_id": "cart_789",
    "items": [{ "product_id": "1234", "title": "Trail Runner GTX", "quantity": 1, "price": 120 }]
  }'
```

- `id` é o número do pedido na sua loja. Enviar o mesmo `id` de novo atualiza o pedido em vez de adicionar outro.
- O Emailit atribui o pedido ao e-mail em que o comprador clicou ou que ele abriu por último. Consulte [Como os pedidos são atribuídos](/pt/docs/commerce/#how-orders-are-credited-to-emails).
- O comprador vira um contato se ainda não for um. Adicione `"accepts_marketing": true` e um `audience_id` para também inscrevê-lo, por exemplo quando ele marcou uma caixa de newsletter no checkout. `"create_contact": false` faz o Emailit não criar o contato. O comando `purchase` do script de rastreamento nunca cria nem inscreve um contato.
- `cart_id` marca esse carrinho como convertido.

Quando o pedido for pago, processado, cancelado ou reembolsado, envie a mudança com [Atualizar um pedido](/pt/docs/api-reference/orders/update/) ou envie o pedido de novo com o novo `status`. Os pedidos cancelados não contam para a receita, e os reembolsos são subtraídos.

### Pedidos anteriores

Importe o seu histórico de pedidos com [Importar pedidos em massa](/pt/docs/api-reference/orders/batch/), até 1.000 pedidos por requisição. As importações são históricas por padrão: elas preenchem o histórico de compras, as métricas e as recomendações, mas não são atribuídas a e-mails e não iniciam automações.

## O script de rastreamento

O script de rastreamento registra o que os visitantes fazem no seu site: visualizações de produtos, o carrinho, compras e visitas. Ele também reconhece os visitantes que chegam pelos seus e-mails, para que a atividade deles fique ligada ao contato deles.

### Adicionar o script

1. **Crie uma chave de rastreamento.** Em **Email API → Events**, abra a aba **Tracking** e selecione **Create tracking key**. Em **Allowed origins**, liste os domínios da sua loja, por exemplo `shop.example.com` ou `*.example.com`. Deixe vazio para aceitar qualquer site.

2. **Adicione o trecho de código a todas as páginas,** antes de `</head>`. A aba **Tracking** mostra o trecho com a sua chave preenchida:

```html
<script>window.emailit=window.emailit||function(){(window._emailitq=window._emailitq||[]).push(arguments)};</script>
<script async src="https://js.emailit.com/track/TRACKING_KEY/events.js"></script>
```

   As chaves de rastreamento são públicas: elas só podem enviar eventos, nunca ler dados. Se o script dos [formulários do Emailit](/pt/docs/forms/install/) já estiver na página, mantenha os dois.

Para registrar também uma visualização de página em todas as páginas, adicione `data-autotrack="pages"` à tag do script. As visualizações de página atualizam a última atividade do contato no seu site e o fuso horário dele; elas não são armazenadas como eventos.

### Registrar a atividade da loja

Chame estes comandos onde as ações acontecem:

```js
// Product page
emailit("product", { id: "1234", title: "Trail Runner GTX", url: location.href,
  image_url: "https://shop.example.com/images/trail-runner.jpg", price: 139, currency: "EUR",
  categories: ["Shoes", "Running"] });

// Every time the cart changes
emailit("cart", { id: "cart_789", currency: "EUR", checkout_url: "https://shop.example.com/checkout",
  items: [{ product_id: "1234", title: "Trail Runner GTX", quantity: 1, price: 139 }] });

// Order confirmation page
emailit("purchase", { id: "1001", total: 125, currency: "EUR",
  items: [{ product_id: "1234", quantity: 1, price: 120 }], coupon_codes: ["WLC-8K2M4P"] });
```

| Comando | Registra |
| --- | --- |
| `product` | Uma visualização de produto. Um produto que ainda não está no seu catálogo é adicionado a partir desses campos; os produtos que você envia pela API não são alterados. |
| `cart` | O carrinho atual inteiro, substituindo a versão anterior. Sem um `id`, o carrinho do visitante é rastreado com um ID próprio. Envie uma lista `items` vazia quando o carrinho for esvaziado. |
| `purchase` | Um pedido, com os mesmos campos da [API de pedidos](/pt/docs/api-reference/orders/create/). Ele também converte o carrinho do visitante. Prefira enviar os pedidos do seu backend: os bloqueadores de anúncios podem impedir as chamadas do navegador. Se você fizer as duas coisas, use o mesmo `id` de pedido para que o pedido não seja contado duas vezes. O script nunca altera um pedido que você enviou do seu backend, e nunca cria nem inscreve um contato. |
| `page` | Uma visualização de página. Enviada em todas as páginas com `data-autotrack="pages"`. |

### Identificar visitantes

A atividade passa a contar para um contato quando o script sabe quem é o visitante:

- **Por um link de e-mail.** Quando um contato clica em um link de um e-mail de campanha ou de automação que leva ao seu site, o link leva um parâmetro `_eit` assinado. O script o armazena e o remove da barra de endereço. Os links recebem esse parâmetro quando o rastreamento de cliques está ativado e o link vai para uma origem permitida de uma chave de rastreamento ou, no caso de chaves sem origens permitidas, para o seu domínio de envio.
- **Quando o visitante entrar ou fizer o checkout,** chame `identify` com o endereço de e-mail ou o ID de contato dele:

```js
emailit("identify", { email: "jane@example.com" });
```

- **Quando ele sair da conta,** chame `emailit("reset")` para esquecê-lo nesse navegador.

As visualizações de produtos e os carrinhos de antes da identificação do visitante são movidos para o contato. O script também registra o fuso horário do navegador, que o envio no [horário local do destinatário](/pt/docs/campaigns/sending-options/#recipients-local-time) usa, e quando o contato esteve ativo pela última vez no seu site.

`emailit("debug", true)` registra no console do navegador o que o script envia.

### Onde a atividade aparece

A atividade da loja vai para o mesmo log de eventos que os seus outros eventos. As visualizações de produtos viram eventos [`product.viewed`](/pt/docs/webhooks/events/product/viewed/), os carrinhos novos ou alterados, [`cart.updated`](/pt/docs/webhooks/events/cart/updated/), e as compras, [`order.placed`](/pt/docs/webhooks/events/order/placed/). Você os vê em **Email API → Events** e na atividade do contato, e os webhooks podem ser inscritos neles. `product.viewed` e `cart.updated` não fazem parte de **All events**, então inscreva o webhook neles pelo nome. Consulte [Eventos de e-commerce](/pt/docs/commerce/#events).

## Confirmar que funcionou

- **Email Marketing → Commerce** mostra os seus produtos e pedidos, e **Carts** mostra os carrinhos vindos do script.
- **Email API → Events** lista os eventos `product.viewed`, `cart.updated` e `order.placed` conforme os visitantes navegam e compram.
- Abra um contato que fez um pedido: o card **Purchases** mostra os pedidos, o total gasto e os produtos vistos recentemente.
- Depois de uma campanha, os pedidos atribuídos a ela aparecem na aba **Revenue** da campanha.

## Veja também

  - [E-commerce](/pt/docs/commerce/): Atribuição, configurações e as páginas de e-commerce.
  - [API de pedidos](/pt/docs/api-reference/orders/create/): Todos os campos de um pedido.

---
Fonte: https://emailit.com/pt/docs/commerce/connect-your-shop/
