E-commerce Summary

Resumo de pedidos Shopify

GET
/v1/shopify/orders/summary

Totais agregados de pedidos do Shopify no período informado. status filtra a coluna status derivada do Shopify (closed | cancelled | processed | open). Dimensões de groupBy: source_name, utm_source, utm_campaign (colunas do pedido; a UTM vem da última visita da jornada do cliente) e product (faz join com shopify_order_items; totalRevenue = preço unitário original × quantity, bruto de descontos de linha; totalOrders = pedidos distintos; a linha (outros) informa apenas key e totalRevenue — seus totalOrders, avgTicket e uniqueCustomers são null). O Shopify não expõe dados de pagamento — payment_method retorna 400.

Autorização

ClientIdAuthClientSecretAuth
headerx-client-id<token>

Client ID

headerx-client-secret<token>

Client secret

Parâmetros de query

organizationId*string

Identificador da organização (obrigatório)

dateStart*string

Início do período (YYYY-MM-DD), filtra created_at

Formatodate
dateEnd*string

Fim do período (YYYY-MM-DD), filtra created_at (dia inteiro incluído)

Formatodate
integrationName?string

Restringe a uma única integração de loja

status?string

Status do pedido no Shopify (closed | cancelled | processed | open). Quando omitido, pedidos cancelados/reembolsados são excluídos por padrão; informá-lo substitui esse padrão.

groupBy?string

Detalha o resumo por uma dimensão. O Shopify suporta: utm_source, utm_campaign, product, source_name.

Valor em"utm_source""utm_campaign""product""source_name"

Corpo da resposta

Resumo de pedidos (com eco de groupBy e groups quando solicitado)

application/json
  1. response
totalOrders?integer
totalRevenue?number
Formatofloat
avgTicket?number
Formatofloat
totalCustomers?integer
uniqueCustomers?integer
period?
platform?string
Valor em"vtex""shopify""tray"
integrationName?string|null
groupBy?string

Eco da dimensão solicitada. Presente apenas quando groupBy foi enviado.

Valor em"payment_method""utm_source""utm_campaign""product""source_name"
groups?array<>

Presente apenas quando groupBy foi enviado. Os 20 principais grupos ordenados por totalRevenue decrescente, mais uma linha '(outros)' agregando o restante, quando existe. Valores de dimensão null/em branco são agrupados como '(sem valor)'. O grupo '(sem valor)', quando tem linhas, é sempre retornado como seu próprio grupo explícito — mesmo fora do top 20 — e seus números são excluídos de '(outros)'. Em dimensões de granularidade de pedido (payment_method, utm_source, utm_campaign, source_name), a linha '(outros)' é completa — seu uniqueCustomers é uma aproximação de limite inferior ajustada (contagens distintas não se subtraem entre grupos). Para groupBy=product (granularidade de item), a linha '(outros)' traz APENAS key e totalRevenue: totalOrders, avgTicket e uniqueCustomers são null, porque as contagens de pedidos por produto se sobrepõem (um pedido conta uma vez por produto que contém) e as contagens do restante não podem ser derivadas; o grupo '(sem valor)' na granularidade de item é um grupo normal com todas as métricas.

curl -X GET "https://example.com/v1/shopify/orders/summary?organizationId=org_123&dateStart=2019-08-24&dateEnd=2019-08-24"
{  "totalOrders": 847,  "totalRevenue": 152340.5,  "avgTicket": 179.86,  "totalCustomers": 612,  "uniqueCustomers": 489,  "period": {    "start": "2026-06-01",    "end": "2026-06-23"  },  "platform": "vtex",  "integrationName": "lupo-vtex",  "groupBy": "payment_method",  "groups": [    {      "key": "creditCard",      "totalOrders": 412,      "totalRevenue": 80231.4,      "avgTicket": 194.74,      "uniqueCustomers": 322    }  ]}