Automações

Cotação de frete, etiquetas e rastreamento via Frenet.

Nó Frenet

O nó de workflow Frenet é um cliente REST para a Frenet API. Use-o para cotar fretes e rastrear envios pelo agregador logístico Frenet — ideal para automação pós-checkout em e-commerce brasileiro.

Node ID no editor: frenet_request
URL padrão: POST https://api.frenet.com.br/shipping/quote

O que faz

  • Chama endpoints de frete Frenet com autenticação via header token
  • Suporta GET e POST
  • Retorna HTTP status, data da resposta e headers da resposta
  • Auth padrão: token: {{frenet_token}} (não use Authorization Bearer)

Pré-requisitos

  1. Conta Frenet com acesso à API
  2. API token do dashboard Frenet
  3. Integration key em Configurações → API Keys:
    • frenet_token

Como configurar

Passo 1 — Obter API token

Faça login na Frenet e copie seu API token nas configurações de integração.

Passo 2 — Definir credenciais

Adicione frenet_token como integration key (campo Token).

Passo 3 — Configurar o nó

CampoObrigatórioDescrição
URL / EndpointSimURL Frenet API
MethodNãoCotação e rastreio usam POST
Headers (JSON)NãoHeader token (pré-configurado)
Body (JSON)SimCEP/dimensões (cotação) ou código de rastreio (tracking)

Templates de operação integrados

OperaçãoMethodEndpoint
Cotar fretePOSThttps://api.frenet.com.br/shipping/quote
Rastrear envioPOSThttps://api.frenet.com.br/tracking/trackinginfo

Exemplo — cotar frete (POST body):

{
  "SellerCEP": "{{variables.seller_cep}}",
  "RecipientCEP": "{{variables.destination_cep}}",
  "ShipmentInvoiceValue": 100,
  "ShippingItemArray": [
    {
      "Weight": {{variables.package_weight}},
      "Length": {{variables.package_length}},
      "Height": {{variables.package_height}},
      "Width": {{variables.package_width}},
      "Quantity": 1
    }
  ]
}

Use workflow variables para CEP e dimensões a partir de dados do pedido (saída de nó de e-commerce).

Exemplo — rastrear envio:

  • URL: https://api.frenet.com.br/tracking/trackinginfo
  • Method: POST
  • Body:
{
  "ShippingServiceCode": "{{variables.shipping_service_code}}",
  "TrackingNumber": "{{variables.tracking_code}}"
}

ShippingServiceCode é obrigatório e precisa ser o da transportadora que realmente levou o pacote. Rode GET https://api.frenet.com.br/shipping/info para listar os serviços habilitados na sua conta com ServiceCode e CarrierCode.

⚠️ A Frenet não valida o código contra o rastreio. Com o serviço errado a API responde 200 sem erro, só que TrackingEvents vem vazio — e em alguns casos ela ainda monta um TrackingUrl de outra transportadora, que abre em "Não encontramos informações do rastreio". Trate lista de eventos vazia como código errado, não como "pacote sem movimentação".

Passo 4 — Usar dados da resposta

Opção mais barata: {{frenet_1.data.ShippingSevicesArray[0].ServiceDescription}}
Preço: {{frenet_1.data.ShippingSevicesArray[0].ShippingPrice}}
Prazo: {{frenet_1.data.ShippingSevicesArray[0].DeliveryTime}}

Inspecione a saída de execução — a Frenet retorna array de opções em ShippingSevicesArray (grafia oficial da API) e, no tracking, TrackingEvents.

Link de rastreio. Nem todo serviço devolve TrackingUrl (J&T JTE_INT, por exemplo, sempre devolve null). O link público segue o formato https://rastreio.frenet.com.br/{CarrierCode}/{TrackingNumber}, então monte-o em um nó JS Code e só envie quando houver eventos:

const data = nodes['frenet_1'].data || {};
const events = Array.isArray(data.TrackingEvents) ? data.TrackingEvents : [];
// Sem eventos o ShippingServiceCode não bate com o pacote: não há link confiável
const trackingUrl = events.length
  ? (data.TrackingUrl || 'https://rastreio.frenet.com.br/JTE/' + variables.tracking_code)
  : '';
return { trackingUrl, hasEvents: events.length ? 'true' : 'false' };

Status legível. A Frenet devolve os eventos do mais recente para o mais antigo (TrackingEvents[0] é o atual). Prefira mapear o EventType a rótulos curtos em vez de usar EventDescription — a descrição é uma frase longa que muda a cada centro de distribuição, então comparar por ela dispara notificação repetida no mesmo estágio:

EventTypeStatus
0Postado
1Em trânsito
2Atraso
3Objeto devolvido
4Extravio
5Saiu para entrega
9Objeto entregue

Saídas do nó

Campo de saídaDescrição
statusHTTP status code
dataCorpo da resposta JSON parseado
headersResponse headers

Dicas e boas práticas

  • Peso tipicamente em quilogramas; dimensões em centímetros — confirme em documentação Frenet
  • Auth: use o header token. Authorization: Bearer retorna 401
  • Cote antes da compra — use nó Condition para escolher transportadora mais barata vs. mais rápida
  • Encadeie com nós de e-commerce: buscar pedido → extrair CEP → cotação Frenet → notificar cliente
  • Tracking exige ShippingServiceCode + TrackingNumber válidos e do mesmo pacote
  • Em rastreio recorrente, grave o último status enviado (planilha, CRM, variável) e notifique só quando ele mudar — sem isso o cliente recebe a mesma mensagem a cada ciclo
  • Pare de consultar rastreios em status terminal (entregue, devolvido, extravio): economiza chamadas e evita reenvio
  • Teste com pares de CEP reais — CEPs inválidos retornam listas vazias ou serviços com Error: true

Exemplos de uso

Cotar frete após pagamento

  1. Webhook — pedido pago (NuvemShop, WooCommerce, etc.)
  2. Nó de e-commerce — obter CEP do endereço de entrega
  3. Frenet POST — cotar com dimensões padrão do pacote
  4. Send WhatsApp — "Opções de frete: {{frenet_1.data.ShippingSevicesArray[0].ServiceDescription}} — R$ {{frenet_1.data.ShippingSevicesArray[0].ShippingPrice}}"

Atualização de rastreamento ao cliente

  1. Schedule — a cada 4 horas
  2. Variable — código de rastreamento e ShippingServiceCode dos metadados do pedido
  3. Frenet POST — tracking/trackinginfo
  4. JS Code — rótulo pelo EventType do evento mais recente e link rastreio.frenet.com.br/{CarrierCode}/{código}
  5. Condition — houve eventos e o status difere do último notificado
  6. Send WhatsApp — atualização de entrega + link, e grave o novo status na origem

FAQ

Por que array ShippingSevicesArray vazio ou só erros?
CEP inválido, rota não suportada ou pacote excede limites da transportadora. Verifique dimensões e peso.

Por que 401 Unauthorized / Acesso negado?
frenet_token inválido, ausente, ou header errado (Authorization: Bearer em vez de token). Regenere o token no dashboard Frenet.

O rastreio volta 200 com TrackingEvents vazio — o pacote não saiu?
Quase sempre é ShippingServiceCode de outra transportadora. Liste os serviços da conta em GET https://api.frenet.com.br/shipping/info e repita a consulta com o ServiceCode correto antes de concluir que não há movimentação.

O link de rastreio abre "Não encontramos informações do rastreio".
O CarrierCode na URL não corresponde ao pacote. Isso acontece quando se usa o TrackingUrl devolvido para um ShippingServiceCode errado — a Frenet monta o link sem conferir o código. Só envie o link quando TrackingEvents tiver itens.

TrackingUrl veio null.
Normal em alguns serviços (J&T JTE_INT, por exemplo). Monte o link como https://rastreio.frenet.com.br/{CarrierCode}/{TrackingNumber} — o CarrierCode sai de GET /shipping/info.

A Frenet gera etiquetas neste nó?
Templates integrados cobrem apenas cotação e rastreamento. Geração de etiqueta pode exigir endpoints Frenet adicionais — configure URL/body manualmente conforme docs, ou use nó Melhor Envio para etiquetas.

Posso cotar múltiplos itens?
Use ShippingItemArray com vários objetos conforme a documentação da API.

Referência da API

ItemValor
Quote URLPOST https://api.frenet.com.br/shipping/quote
Tracking URLPOST https://api.frenet.com.br/tracking/trackinginfo
Serviços da contaGET https://api.frenet.com.br/shipping/info
Página pública de rastreiohttps://rastreio.frenet.com.br/{CarrierCode}/{TrackingNumber}
AuthHeader token
Docs oficiaisFrenet API documentation

Relacionado

Este artigo foi útil?

Precisa de mais ajuda? Falar com suporte

Central de Ajuda