Magic Link na Nuvemshop: Cupons Automatizados no Checkout Sem Vazamento de Margem


O Problema: Duas Falhas Simultâneas no Fluxo de Cupons

Operações de e-commerce na Nuvemshop enfrentam um conflito estrutural entre conversão e proteção de margem quando usam cupons promocionais.

Falha 1: Fricção no Checkout

O fluxo padrão de cupom exige que o comprador:

  1. Lembre o código do cupom visto no anúncio.
  2. Navegue até o checkout.
  3. Encontre o campo de cupom (frequentemente colapsado ou pouco visível em mobile).
  4. Digite o código manualmente.
  5. Clique em “Aplicar”.

Cada etapa é um ponto de abandono. Dados de mercado indicam que 30-40% dos usuários mobile abandonam o checkout quando precisam interagir com campos de texto adicionais. O cupom — que deveria ser um incentivo — se torna fricção.

Uma parcela desses usuários abre uma nova aba, pesquisa “[nome da loja] cupom” no Google, e cai em um site agregador de cupons. Se encontra um código genérico válido, aplica. Se não encontra, abandona o carrinho. A loja perdeu a conversão ou a margem.

Falha 2: Vazamento de Cupons Genéricos

Cupons com código fixo (ex: FRETEGRATIS, 10OFF) são indexáveis. Sites como Pelando, Cuponomia e similares coletam e publicam esses códigos. O resultado:

  • Visitantes que não viram o anúncio e não teriam desconto passam a usá-lo. O cupom subsidia tráfego orgânico que já converteria sem incentivo.
  • A margem por pedido cai em segmentos que o media buyer não planejou descontar.
  • O cálculo de CAC e POAS fica contaminado: o custo real do cupom não é atribuído à campanha que o gerou.

O cenário extremo: uma campanha com ROAS aparente de 5x que, após contabilizar o vazamento de cupons para tráfego orgânico, opera com margem negativa.

O Nexopath Magic Link resolve ambas as falhas com uma abordagem que separa o veículo de entrega (o link) do mecanismo de aplicação (o checkout). O comprador nunca vê, digita ou compartilha um código de cupom.

Geração do Token

Cada link promocional contém um token opaco no query parameter:

https://loja.com.br/produto?ml=eyJjIjoiRlJFVEUxMCIsImUiOjE3MTc4...

O token é um JWT compacto (ou opaco, dependendo da configuração) que encapsula:

  • Código do cupom — o cupom real da Nuvemshop, configurado normalmente no painel da loja.
  • Expiração absoluta — timestamp Unix após o qual o token é inválido, independentemente de quantas vezes foi acessado.
  • Limite de uso — número máximo de resgates permitidos para aquele token específico.
  • Assinatura HMAC — garante que o token não foi adulterado. Alteração de qualquer byte invalida a verificação server-side.
{
  "coupon": "FRETE10",
  "expires_at": 1717804800,
  "max_uses": 500,
  "current_uses": 127,
  "campaign_id": "google_frete_maio",
  "signature": "a1b2c3d4e5f6..."
}

O ponto crítico: mesmo que alguém extraia e publique a URL completa em um site de cupons, o token expira. Um link gerado para uma campanha de 7 dias para de funcionar no dia 8. Um link com limite de 500 usos para de funcionar no uso 501. O cupom subjacente (FRETE10) continua existindo na Nuvemshop, mas sem o token válido, ninguém consegue aplicá-lo automaticamente.

Captura do Token no Storefront

Quando o visitante acessa a URL com ?ml=, um script leve (injetado via API da Nuvemshop, não via GTM) executa:

(function () {
  var params = new URLSearchParams(window.location.search);
  var token = params.get("ml");
  if (!token) return;

  sessionStorage.setItem("nx_ml_token", token);

  // Limpa o parâmetro da URL sem reload
  var clean = new URL(window.location.href);
  clean.searchParams.delete("ml");
  window.history.replaceState(null, "", clean.toString());
})();

Três decisões técnicas nesse trecho:

  1. sessionStorage em vez de cookie — o token não precisa ser enviado ao servidor em cada request HTTP (como cookies fazem). Ele só é necessário no momento do checkout. sessionStorage é mais leve e não tem implicações de tamanho de header.
  2. Limpeza da URLhistory.replaceState remove o ?ml= da barra de endereços sem causar navegação. O visitante não vê o token, não pode copiá-lo acidentalmente, e a URL fica limpa para compartilhamento orgânico.
  3. Execução imediata — o script roda no primeiro carregamento. Se o visitante navegar para outras páginas antes de chegar ao checkout, o token já está em sessionStorage e sobrevive à navegação intra-site.

Aplicação Silenciosa no Checkout via NubeSDK

A Nuvemshop expõe o NubeSDK — um ambiente seguro de Web Worker que permite apps autorizados interagirem com o checkout sem acesso direto ao DOM do formulário de pagamento.

Quando o comprador chega ao checkout, o fluxo é:

  1. O app verifica se existe nx_ml_token em sessionStorage.
  2. Envia o token ao backend do Nexopath para validação.
  3. O backend verifica: assinatura HMAC, expiração, limite de uso.
  4. Se válido, retorna o código do cupom.
  5. O app usa a API do NubeSDK para aplicar o cupom ao carrinho programaticamente.
// Pseudocódigo simplificado do fluxo NubeSDK
nube.checkout.onCartLoaded(async function (cart) {
  var token = sessionStorage.getItem("nx_ml_token");
  if (!token) return;

  var response = await fetch("https://api.nexopath.com/ml/validate", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({ token: token, store_id: cart.storeId }),
  });

  if (!response.ok) return;

  var data = await response.json();

  // Aplica o cupom via API nativa do NubeSDK
  cart.applyCoupon(data.coupon_code);

  // Limpa o token após uso
  sessionStorage.removeItem("nx_ml_token");
});

O comprador vê o desconto aparecer no resumo do pedido sem ter digitado nada. Sem campo de cupom exposto, sem código visível, sem etapa adicional.

Proteção de Margem: Três Camadas

Camada 1: Expiração temporal — cada token tem um expires_at absoluto. Campanhas de Black Friday geram tokens que expiram no dia seguinte. Não existe cupom “eterno” circulando na internet.

Camada 2: Limite de uso — o max_uses é contabilizado no backend do Nexopath, não na Nuvemshop. Isso permite controle granular: 500 usos para a campanha do Google, 300 para a do Meta, cada um com seu token independente — mesmo que ambos usem o mesmo cupom subjacente.

Camada 3: Validação server-side — a verificação do HMAC garante que tokens adulterados são rejeitados. Não é possível alterar o expires_at ou max_uses no client-side para burlar as restrições.

AspectoCupom ManualMagic Link
Input do usuário no checkoutDigitar código + clicar “Aplicar”Nenhum (aplicação automática)
Risco de vazamentoAlto (código fixo, indexável)Baixo (token expirável com limite de uso)
Atribuição por campanhaImpossível (mesmo código para todas)Nativa (cada campanha tem seu token)
Taxa de resgate15-25% (típica para cupons manuais)60-80% (sem fricção de input)
Dependência de GTMGeralmente sim (para injetar campo)Não (script nativo via API)
Compatibilidade PCIDepende da implementaçãoGarantida (NubeSDK opera fora do contexto de pagamento)

Rastreamento e Métricas

Cada token carrega um campaign_id que permite ao painel do Nexopath reportar:

  • Taxa de captura — quantas sessões capturaram o token (visitantes que clicaram no link).
  • Taxa de resgate — quantas sessões efetivamente chegaram ao checkout e tiveram o cupom aplicado.
  • Receita atribuída — valor dos pedidos que usaram tokens de cada campanha.
  • Margem protegida — diferença entre o desconto total concedido via Magic Link (controlado) e o desconto estimado que teria vazado para tráfego não atribuído com cupons genéricos.

Esses dados são exportáveis e podem ser cruzados com o painel de POAS do Nexopath para calcular o impacto real do cupom na margem por campanha.

Limitações

  • Checkout headless — lojas com checkout totalmente customizado (headless, fora da Nuvemshop) não usam NubeSDK. O Magic Link funciona apenas com o checkout nativo da Nuvemshop.
  • Múltiplos cupons — a Nuvemshop permite apenas um cupom por pedido. Se o comprador já tiver um cupom aplicado manualmente, o Magic Link não sobrescreve. O app detecta essa condição e não tenta aplicar.
  • Sessão perdida — se o visitante fechar a aba e reabrir a loja digitando a URL diretamente (sem o ?ml=), o sessionStorage está vazio e o cupom não é aplicado. Isso é um comportamento esperado — o token foi entregue àquela sessão específica.

Próximo Passo

O Nexopath Magic Link está na Nuvemshop App Store. O free trial de 14 dias inclui geração ilimitada de tokens e acesso completo ao painel de métricas de resgate. O setup leva menos de 5 minutos: instale, configure o primeiro link no painel, e use a URL gerada nos seus anúncios.