Módulos grátis

Frenet no Magento 2: cotação de Correios e transportadora no checkout

Um composer require, quatro campos no admin e o cliente vê preço de Correios e transportadora antes de fechar o pedido. O trabalho real está no mapeamento de peso e dimensão.

Por Roger Takemiya · Publicado em · 5 min de leitura

Toda loja brasileira chega nesse ponto: o cliente põe o produto no carrinho e quer saber quanto custa para chegar em casa. Sem um carrier configurado, o Magento não tem o que responder e o checkout fica travado no passo de entrega.

A Frenet publica um módulo aberto no GitHub e no Packagist que resolve isso agregando Correios, Jadlog e as transportadoras habilitadas na sua conta. O módulo não custa nada — o LICENSE.md do repositório é MIT. A conta e o contrato com a Frenet é assunto entre você e eles.

Instalar em cinco comandos

Na raiz do Magento, com o servidor em modo de manutenção se for produção:

composer require frenet/frenet-magento2
php bin/magento module:enable Frenet_Shipping
php bin/magento setup:upgrade
php bin/magento setup:di:compile
php bin/magento cache:flush

O setup:di:compile não é opcional em modo production — pule ele e o admin abre com erro de classe não gerada.

Uma esquisitice do pacote que vale saber antes de digitar: as tags do módulo já foram numeradas como as versões do Magento (2.4.7-p3, 2.4.8-p1) e hoje seguem outro esquema. O último release no Packagist é o 248.1.4, de 24/08/2026, e é ele que o composer require sem constraint vai trazer. Se você precisa fixar uma versão antiga por causa de um Magento 2.4.7, seja explícito:

composer require frenet/frenet-magento2:2.4.7-p3

O pacote atual pede PHP 8.2, 8.3, 8.4 ou 8.5, e aceita magento/framework de ^101.0.0 a ^104.0.0. Se o Composer reclamar de conflito, é PHP velho ou Magento fora dessa faixa — não insista com --ignore-platform-reqs.

As quatro configurações que fazem funcionar

Tudo mora em Stores > Configuration > Sales > Delivery Methods > Frenet Shipping Gateway. Na ordem em que eu preencho:

  1. Enabled em Yes. O padrão do módulo é desligado (carriers/frenetshipping/active nasce em 0).
  2. API Token, pego no painel da Frenet. O campo é gravado criptografado (carriers/frenetshipping/token usa o backend model Encrypted), então não adianta procurar o valor em texto puro no banco.
  3. Attributes Mapping. Esse é o campo que quebra a instalação de quase todo mundo — veja a seção seguinte.
  4. Default Measurements. Os valores de fábrica são altura 2 cm, comprimento 16 cm, largura 11 cm e peso 0,1 kg. Servem de rede de segurança para produto sem dimensão, e não de configuração definitiva: cotação de caixa de 2 cm para um produto que é uma cadeira volta preço errado e você só descobre no prejuízo.

Vale reforçar: a unidade de peso do módulo é kg (weight_type nasce em kg). Se o seu catálogo foi cadastrado em gramas, corrija o catálogo, não o módulo.

O mapeamento que pega todo mundo

O etc/config.xml do módulo já vem com um mapeamento padrão:

<attributes_mapping>
    <weight_attribute>weight</weight_attribute>
    <height_attribute>volume_height</height_attribute>
    <length_attribute>volume_length</length_attribute>
    <width_attribute>volume_width</width_attribute>
</attributes_mapping>

O weight existe no Magento padrão. Os três volume_* não existem — procure no seu catálogo e não vai achar. Ou seja: sem mexer nada, todo produto cai no Default Measurements e o frete sai igual para uma caneta e para um micro-ondas.

Você tem dois caminhos. Ou cria os atributos volume_height, volume_length e volume_width em Stores > Attributes > Product e preenche o catálogo, ou aponta o mapeamento para os atributos de dimensão que a sua loja já usa (muita loja brasileira já tem algo vindo do ERP). Os dois funcionam; o que não funciona é deixar como veio.

Depois de configurar, ligue o Debug por um dia. O módulo grava requisição e resposta da API em var/log/ com o nome definido em Debug Filename, que nasce como frenet_request_debug.log. É ali que você vê se o peso que saiu daqui era o peso certo.

tail -f var/log/frenet_request_debug.log

Multi quote e os limites de segurança

O Enable Multi Quote divide o carrinho em vários pacotes quando o peso total passa do Package Max Weight, que nasce em 30 kg. Faz sentido para loja que vende volume, mas cada pacote gerado é uma chamada a mais na API: carrinho grande vira várias requisições e o checkout demora. Eu ligo isso quando o cliente reclama de frete recusado por peso, não por padrão.

Tem também o Maximum Item Quantity per Shipping Line, com teto de 5000. É um limite de segurança para o cálculo de empacotamento, não uma regra de negócio — só mexa se você tiver um motivo específico.

Por fim, o módulo já nasce restrito ao Brasil (specificcountry vem BR) e com sort_order 10. Se você tem outros carriers ligados, é o sort order que decide quem aparece primeiro na lista do checkout.

Perguntas rápidas

O módulo é grátis mesmo?

O módulo é. O código está no GitHub, o pacote está no Packagist e o arquivo LICENSE.md do repositório é MIT. O que você contrata é a conta na Frenet, que é a plataforma que faz a cotação — condições comerciais são com eles.

Preciso de módulo dos Correios separado?

Não. A Frenet devolve as opções de todas as transportadoras habilitadas na sua conta, Correios incluído, numa chamada só. Manter dois carriers cotando Correios ao mesmo tempo só serve para confundir o cliente com duas linhas parecidas no checkout.

O frete não aparece no checkout. Por onde começo?

Confira nesta ordem: Enabled em Yes, token colado sem espaço no fim, CEP de origem preenchido em Shipping Settings e peso do produto maior que zero. Depois ligue o Debug e leia a resposta da API no var/log, que costuma dizer exatamente o que faltou.

Pra conferir na fonte

  1. Frenet Gateway de Fretes para Magento 2 — GitHub
  2. frenet/frenet-magento2 — Packagist
  3. Shipping settings — Adobe Experience League

frenet frete correios

Precisa de um orçamento? Ficarei feliz em ajudar. Clique Aqui