cURL
curl --request GET \
--url https://api.cakto.com.br/public_api/orders/analytics/ \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.cakto.com.br/public_api/orders/analytics/"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.cakto.com.br/public_api/orders/analytics/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.cakto.com.br/public_api/orders/analytics/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}require 'uri'
require 'net/http'
url = URI("https://api.cakto.com.br/public_api/orders/analytics/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_bodyHttpResponse<String> response = Unirest.get("https://api.cakto.com.br/public_api/orders/analytics/")
.header("Authorization", "Bearer <token>")
.asString();using RestSharp;
var options = new RestClientOptions("https://api.cakto.com.br/public_api/orders/analytics/");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
{
"group_by": "utm_source",
"results": [
{
"utm_source": "google",
"order_count": 42,
"gross_volume": "12500.00",
"net_value": "10625.00",
"total_discount": "625.00",
"total_fees": "500.00"
},
{
"utm_source": "facebook",
"order_count": 18,
"gross_volume": "5400.00",
"net_value": "4590.00",
"total_discount": "0",
"total_fees": "270.00"
},
{
"utm_source": "(unclassified)",
"order_count": 10,
"gross_volume": "3000.00",
"net_value": "2550.00",
"total_discount": "0",
"total_fees": "120.00"
}
],
"totals": {
"order_count": 70,
"gross_volume": "20900.00",
"net_value": "17765.00",
"total_discount": "625.00",
"total_fees": "890.00"
}
}Pedidos
Analytics de Vendas
Descubra quais canais, campanhas e origens de tráfego geram mais vendas e receita. Tome decisões baseadas em dados para otimizar seus investimentos em marketing e aumentar o retorno sobre cada real gasto.
GET
/
public_api
/
orders
/
analytics
/
cURL
curl --request GET \
--url https://api.cakto.com.br/public_api/orders/analytics/ \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.cakto.com.br/public_api/orders/analytics/"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.cakto.com.br/public_api/orders/analytics/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.cakto.com.br/public_api/orders/analytics/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}require 'uri'
require 'net/http'
url = URI("https://api.cakto.com.br/public_api/orders/analytics/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_bodyHttpResponse<String> response = Unirest.get("https://api.cakto.com.br/public_api/orders/analytics/")
.header("Authorization", "Bearer <token>")
.asString();using RestSharp;
var options = new RestClientOptions("https://api.cakto.com.br/public_api/orders/analytics/");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
{
"group_by": "utm_source",
"results": [
{
"utm_source": "google",
"order_count": 42,
"gross_volume": "12500.00",
"net_value": "10625.00",
"total_discount": "625.00",
"total_fees": "500.00"
},
{
"utm_source": "facebook",
"order_count": 18,
"gross_volume": "5400.00",
"net_value": "4590.00",
"total_discount": "0",
"total_fees": "270.00"
},
{
"utm_source": "(unclassified)",
"order_count": 10,
"gross_volume": "3000.00",
"net_value": "2550.00",
"total_discount": "0",
"total_fees": "120.00"
}
],
"totals": {
"order_count": 70,
"gross_volume": "20900.00",
"net_value": "17765.00",
"total_discount": "625.00",
"total_fees": "890.00"
}
}Escopo
read orders
O que é este endpoint?
Este endpoint mostra o desempenho das suas vendas agrupado por canal de aquisição, campanha ou origem de tráfego. Em vez de olhar pedido por pedido, você recebe métricas financeiras agregadas que revelam onde seu dinheiro de marketing está rendendo mais.Valores financeiros são retornados como strings para preservar a precisão decimal. Pedidos sem UTM preenchido aparecem agrupados como
"(unclassified)".Por que analisar canais de venda?
Essa visão permite direcionar investimentos, cortar desperdícios e escalar o que funciona.Descobrir o que funciona
Identifique quais canais (Google, Facebook, Instagram, orgânico etc.) trazem mais pedidos e receita líquida.
Otimizar investimentos
Reduza gastos em canais com baixo retorno e aumente o budget nas origens que realmente convertem.
Comparar campanhas
Avalie o desempenho financeiro de campanhas específicas e descubra quais mensagens e criativos geram mais resultado.
Construir relatórios
Alimente dashboards e apresentações com dados consolidados de performance por origem de tráfego.
Casos de uso
Avaliar retorno por canal
Avaliar retorno por canal
Descubra se o tráfego pago do Facebook está gerando mais receita líquida do que o tráfego orgânico do Google. Use o parâmetro
group_by=utm_source para comparar canais lado a lado.Medir performance de campanhas
Medir performance de campanhas
Lançou três campanhas diferentes este mês? Use
group_by=utm_campaign para ver qual delas trouxe mais pedidos, maior ticket médio e melhor margem líquida.Analisar o impacto de mídia paga
Analisar o impacto de mídia paga
Meça o resultado real dos seus anúncios. Filtre por período (
start_date e end_date) e compare semanas com e sem investimento em tráfego pago para calcular o ROI.Monitorar sazonalidades
Monitorar sazonalidades
Acompanhe semanal ou mensalmente como cada canal performa. Identifique picos de vendas em datas específicas (Black Friday, lançamentos etc.) e replique estratégias vencedoras.
Filtrar por produto ou oferta
Filtrar por produto ou oferta
Quer saber se o curso novo está vendendo mais pelo Instagram ou pelo YouTube? Filtre por
product ou offer e agrupe por utm_source para descobrir.Insights que podem ser obtidos
Canais mais lucrativos
Canais mais lucrativos
O volume de pedidos não conta toda a história. Um canal com menos vendas pode ter ticket médio maior e menos taxas, resultando em maior receita líquida. Analise
gross_volume, net_value e total_fees juntos.Eficiência de descontos
Eficiência de descontos
O campo
total_discount mostra quanto você está abrindo mão em cada canal. Se um canal depende muito de cupons para vender, a receita líquida pode ser menor do que parece.Custo de aquisição por origem
Custo de aquisição por origem
Combine
net_value e order_count com seus gastos em anúncios para calcular o CAC (Custo de Aquisição de Cliente) de cada canal. Isso revela onde cada real investido rende mais.Oportunidades escondidas
Oportunidades escondidas
Canais classificados como
"(unclassified)" indicam vendas sem UTM. Isso pode ser tráfego direto, indicação ou campanhas mal configuradas. Corrigir o rastreamento pode revelar de onde vem sua melhor conversão.Dimensão de análise
Use o parâmetrogroup_by para segmentar e comparar resultados. Escolha a dimensão que faz mais sentido para a sua pergunta de negócio:
| Dimensão | O que permite analisar | Quando usar |
|---|---|---|
utm_source | Compare vendas entre Google, Facebook, Instagram, orgânico etc. | Para entender qual plataforma traz mais resultado. |
utm_medium | Analise performance por tipo de mídia (cpc, email, social, organic etc). | Para entender qual formato de tráfego funciona melhor. |
utm_campaign | Descubra quais campanhas nomeadas geram mais receita. | Para comparar campanhas específicas uma a uma. |
?start_date=01-01-2025&end_date=31-12-2025&group_by=utm_medium
Retorna a performance financeira agrupada por tipo de mídia (cpc, email, social etc) durante todo o ano de 2025.
Filtros adicionais
Filtros podem ser combinados com a dimensão de análise para refinar os resultados. Quanto mais específico, mais acionável é o insight.
Filtros por Status
Filtros por Status
status— Status do pedido (múltiplos valores separados por vírgula)
Para analisar apenas vendas concluídas, use
status=paid.?status=paid — Considera apenas pedidos pagos na agregação, ignorando pendentes, cancelados ou reembolsados.Filtros por Relacionamentos
Filtros por Relacionamentos
product— Id ou nome do produtoproducts— Id dos produtos (múltiplos valores suportados)offer— Id da ofertapaymentMethod— Método de pagamento
?product=123&status=paid — Vendas pagas de um produto específico, útil para entender a performance de um lançamento.Filtros por Tipo
Filtros por Tipo
offer_type— Tipo da oferta (main,upsell,downsell,orderbump)type— Tipo do produto (unique,subscription)installments— Número de parcelas
?offer_type=upsell&group_by=utm_source — Descubra qual canal traz mais vendas adicionais (upsell).Como interpretar a resposta
A resposta contém três elementos principais:| Campo | O que representa |
|---|---|
group_by | A dimensão que você escolheu para agrupar (ex: utm_source) |
results | Lista com as métricas de cada valor encontrado (ex: google, facebook, unclassified) |
totals | Soma de todas as linhas, representando o total do período filtrado |
Métricas de cada linha
| Métrica | Descrição | Como usar |
|---|---|---|
order_count | Quantidade de pedidos | Volume de vendas por canal |
gross_volume | Valor bruto total | Receita antes de descontos e taxas |
net_value | Valor líquido total | O que realmente entra no caixa |
total_discount | Descontos aplicados | Quanto você abriu mão para vender |
total_fees | Taxas e custos | Quanto foi gasto em taxas de pagamento |
A diferença entre
gross_volume e net_value mostra o impacto real dos descontos e taxas. Um canal com alto gross_volume mas baixo net_value pode estar mascarando uma margem fraca.Authorizations
Token de autenticação do tipo Bearer {access_token}, onde {access_token} é o token obtido no fluxo de autenticação.
Was this page helpful?