# E-commerce

> Produtos, carrinho e pedidos de cada contato.

Endereço: https://docs.nextags.com.br/referencia/ecommerce/
Tipo: Referência

A loja dentro da conversa: os produtos do E-commerce (**Ferramentas** › **Ecommerce**), o carrinho de cada contato e os pedidos. Cuidado com os centavos: os valores do carrinho e do pedido (`total`, `subtotal`, `coupon_discount`) e o `amount_received` vão em centavos (`8082` = R$ 80,82), mas o `price` do produto e o de cada item do carrinho não (`49.9` = R$ 49,90). Veja o guia [Carrinho, pedidos e produtos](https://docs.nextags.com.br/guias/carrinho-e-pedidos/) e [Carrinho e pedidos na conversa](https://help.nextags.com.br/tutoriais/ecommerce/carrinho-e-pedidos/).

## Endpoints

- [Consultar produto](https://docs.nextags.com.br/referencia/ecommerce/consultar-produto.md): `GET /products/{product_id}`
- [Atualizar produto](https://docs.nextags.com.br/referencia/ecommerce/atualizar-produto.md): `POST /products/{product_id}`
- [Enviar produtos ao contato](https://docs.nextags.com.br/referencia/ecommerce/enviar-produtos-ao-contato.md): `POST /contacts/{contact_id}/send/products`
- [Consultar carrinho](https://docs.nextags.com.br/referencia/ecommerce/consultar-carrinho.md): `GET /contacts/{contact_id}/cart`
- [Esvaziar carrinho](https://docs.nextags.com.br/referencia/ecommerce/esvaziar-carrinho.md): `DELETE /contacts/{contact_id}/cart`
- [Adicionar produto ao carrinho](https://docs.nextags.com.br/referencia/ecommerce/adicionar-produto-ao-carrinho.md): `POST /contacts/{contact_id}/cart/{product_id}`
- [Remover produto do carrinho](https://docs.nextags.com.br/referencia/ecommerce/remover-produto-do-carrinho.md): `DELETE /contacts/{contact_id}/cart/{product_id}`
- [Consultar pedido](https://docs.nextags.com.br/referencia/ecommerce/consultar-pedido.md): `GET /contacts/{contact_id}/order/{order_id}`
- [Alterar pedido](https://docs.nextags.com.br/referencia/ecommerce/alterar-pedido.md): `POST /contacts/{contact_id}/order/{order_id}`
- [Marcar pedido como pago](https://docs.nextags.com.br/referencia/ecommerce/marcar-pedido-como-pago.md): `POST /contacts/{contact_id}/pay/{order_id}`

## O objeto: Carrinho

| Campo | Tipo | Descrição |
|---|---|---|
| `order_id` | string | O ID do pedido (texto). |
| `page_id` | integer | O ID da conta. |
| `user_id` | integer | O ID do contato. |
| `currency` | string | A moeda da loja, como `BRL`. |
| `total` | integer | O total, em centavos. |
| `subtotal` | integer | A soma dos itens, em centavos. |
| `total_items` | integer | Quantos itens o carrinho tem. |
| `coupon_discount` | integer | O desconto do cupom, em centavos. |
| `coupon` | string | O código do cupom aplicado (o **Código de desconto** da aba **Cupons**). |
| `line_items` | array de objeto Item do carrinho | Os itens do carrinho. |
| `line_items[].id` | integer | O ID do produto. |
| `line_items[].name` | string | O nome do produto. |
| `line_items[].img` | string | O endereço da imagem do produto. |
| `line_items[].price` | number | O preço de uma unidade, na moeda da loja. Não é em centavos: `49.9` = R$ 49,90. |
| `line_items[].amount` | integer | A quantidade. |
| `line_items[].descr_min` | string | A descrição curta do produto. |
| `line_items[].manufacturer` | integer | O ID do vendedor do produto (aba **Vendedores**). |
| `line_items[].variant` | string | A variante escolhida, como o tamanho ou a cor. |
| `line_items[].user_msg` | string | O pedido especial que o contato anotou no item, quando o produto permite anexar notas. |
| `contact` | objeto Contato | O contato dono do carrinho. |
| `contact.id` | integer | O ID do contato: o `contact_id` das outras chamadas. |
| `contact.page_id` | integer | O ID da conta. |
| `contact.first_name` | string | O nome. |
| `contact.last_name` | string | O sobrenome. |
| `contact.channel` | integer | O canal atual do contato: 0 Messenger, 5 WhatsApp, 8 Telegram, 9 Webchat, 10 Instagram, 17 TikTok. |
| `contact.profile_pic` | string | O endereço da foto de perfil. |
| `contact.locale` | string | O idioma do contato, como `pt_BR`. |
| `contact.gender` | integer | O gênero: 0 feminino, 1 masculino, 2 desconhecido. |
| `contact.timezone` | integer | O fuso horário do contato, em horas em relação ao UTC (-3 em Brasília). |
| `contact.last_sent` | integer | Quando a última mensagem foi enviada ao contato, em Unix timestamp em milissegundos. |
| `contact.last_delivered` | integer | Quando a última mensagem foi entregue ao contato, em Unix timestamp em milissegundos. |
| `contact.last_seen` | integer | Quando o contato foi visto pela última vez (**Visto pela última vez**, no app), em Unix timestamp em milissegundos. |
| `contact.last_interaction` | integer | Quando o contato interagiu com a conta pela última vez, em Unix timestamp em milissegundos. |
| `contact.subscribed_date` | string | Quando o contato entrou na conta, em UTC, no formato `2026-10-12 14:40:00`. |
| `contact.subscribed` | integer | 1 inscrito; 2 inscrição cancelada (o contato saiu das transmissões e não recebe Broadcasts). Veja [Contatos que pediram para sair das transmissões](https://help.nextags.com.br/tutoriais/contatos/cancelar-inscricao/). |
| `contact.tags` | array de objeto Etiqueta | As etiquetas do contato. |
| `contact.tags[].id` | integer | O ID da etiqueta. |
| `contact.tags[].name` | string | O nome da etiqueta. |
| `contact.custom_fields` | array de objeto Campo personalizado | Os campos personalizados do contato, com o valor de cada um. |
| `contact.custom_fields[].id` | integer | O ID do campo. |
| `contact.custom_fields[].name` | string | O nome do campo. |
| `contact.custom_fields[].type` | integer | O tipo: 0 texto, 1 número, 2 data, 3 data e hora, 4 sim/não, 5 texto longo, 6 seleção única, 7 seleção múltipla. Valores: `0`, `1`, `2`, `3`, `4`, `5`, `6`, `7`. |
| `contact.custom_fields[].value` | string ou number | O valor do contato, no formato do tipo: texto nos campos de texto e de texto longo; número nos de número, de data e de data e hora (Unix timestamp, em segundos) e de sim/não (1 ou 0). |

```json
{
  "order_id": "PED-1001",
  "page_id": 123456,
  "user_id": 123456789,
  "currency": "BRL",
  "total": 8082,
  "subtotal": 8980,
  "total_items": 2,
  "coupon_discount": 898,
  "coupon": "BEMVINDO10",
  "line_items": [
    {
      "id": 6001,
      "name": "Camiseta Básica Preta",
      "img": "https://exemplo.com.br/produtos/camiseta-preta.jpg",
      "price": 49.9,
      "amount": 1,
      "descr_min": "Camiseta 100% algodão, gola redonda.",
      "manufacturer": 0,
      "variant": "M",
      "user_msg": ""
    },
    {
      "id": 6002,
      "name": "Boné Aba Curva",
      "img": "https://exemplo.com.br/produtos/bone.jpg",
      "price": 39.9,
      "amount": 1,
      "descr_min": "Boné ajustável de algodão.",
      "manufacturer": 0,
      "variant": "",
      "user_msg": "Embrulhar para presente."
    }
  ],
  "contact": {
    "id": 123456789,
    "page_id": 123456,
    "first_name": "Ana",
    "last_name": "Souza",
    "channel": 5,
    "profile_pic": "https://exemplo.com.br/fotos/ana.jpg",
    "locale": "pt_BR",
    "gender": 0,
    "timezone": -3,
    "last_sent": 1792933200000,
    "last_delivered": 1792933202000,
    "last_seen": 1792933500000,
    "last_interaction": 1792933560000,
    "subscribed_date": "2026-03-10 14:22:00",
    "subscribed": 1,
    "tags": [
      {
        "id": 2001,
        "name": "cliente-vip"
      }
    ],
    "custom_fields": [
      {
        "id": 3001,
        "name": "cidade",
        "type": 0,
        "value": "São Paulo"
      }
    ]
  }
}
```
