Magic Link na Nuvemshop: Tentativa Automática de Cupom no Checkout com Menos Exposição
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:
- Lembre o código do cupom visto no anúncio.
- Navegue até o checkout.
- Encontre o campo de cupom (frequentemente colapsado ou pouco visível em mobile).
- Digite o código manualmente.
- Clique em “Aplicar”.
Cada etapa adiciona fricção ao checkout. O cupom — que deveria ser um incentivo — pode se tornar mais uma tarefa manual.
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 — as rotas de entrada do código nesses agregadores são mais numerosas do que parece. 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.
A Arquitetura: Deep-Links Tokenizados com Aplicação Silenciosa
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 não precisa ver, lembrar ou digitar um código de cupom.
Link Público e Token de Checkout
O Magic Link público é a URL estável que você compartilha, inclusive em links sem expiração:
https://magiclink.nexopath.com/go/{public-token}
Esse link público aponta para um destino e tem sua configuração guardada no servidor:
- Código do cupom — o cupom real da Nuvemshop, configurado normalmente no painel da loja.
- Expiração opcional — data/hora após a qual o link fica Expirado; sem essa regra, ele pode ser permanente.
- Limite de cliques opcional — número máximo de acessos permitidos; ao alcançá-lo, o link fica Esgotado. Sem limite, ele pode receber cliques ilimitados.
Ao acessar o link público, a pessoa é redirecionada para o destino com um token temporário de checkout:
https://loja.com.br/produto?ml={redeem-token}
O redeem-token é um identificador opaco e temporário, válido por aproximadamente 90 minutos. Ele não carrega nem define a expiração ou o limite de cliques da campanha: essas regras pertencem ao Magic Link público e continuam no servidor.
O Magic Link é uma URL compartilhável: qualquer pessoa que a receba pode acessá-la enquanto estiver ativa e dentro das regras configuradas. Um link com expiração de 7 dias fica Expirado no dia 8; um link com limite de 500 cliques fica Esgotado depois de atingir o limite. O cupom subjacente (FRETE10) continua existindo na Nuvemshop, mas o Magic Link tenta aplicá-lo apenas quando há um redeem-token válido.
Captura do Token no Storefront
Depois que o link público redireciona para a loja com ?ml={redeem-token}, o app do Magic Link roda num Web Worker isolado (NubeSDK) — sem acesso ao DOM, a window ou ao sessionStorage da página. Ele lê esse token temporário da query e o guarda no asyncLocalStorage do NubeSDK, o único armazenamento compartilhado entre vitrine e checkout:
// Contexto de vitrine (Web Worker, via NubeSDK)
const token = state.location.queries.ml;
if (token) {
await storage.setItem("ml_token", token, TTL);
}
Três decisões técnicas nesse trecho:
asyncLocalStorageem vez de cookie ousessionStorage— o checkout da Nuvemshop roda em domínio próprio (iframe + Web Worker) e não enxerga cookies ou storage da vitrine. OasyncLocalStorageé a ponte oficial que a plataforma compartilha entre os dois contextos para o mesmo app.- Salvo cedo, no carregamento — o token é guardado assim que a vitrine carrega, não no clique de “Comprar agora” (que redireciona na hora e perderia a corrida).
- TTL — o
redeem-tokencurto do checkout dura aproximadamente 90 minutos no armazenamento e sobrevive à navegação entre páginas até o checkout. Isso é independente de o Magic Link público ser permanente ou não ter limite de cliques.
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 é:
- No evento
checkout:ready, o app lê oml_tokendoasyncLocalStorage. - Consulta o backend do Nexopath (
GET /api/redeem/preview) para validar oredeem-tokene obter o código do cupom — sem consumi-lo. - O backend verifica o token temporário e as regras do Magic Link público associado: ele está ativo, não está Expirado, não está Esgotado e a cobrança está ativa.
- Se válido, o app dispara
coupon:addpara aplicar o cupom ao carrinho. - Quando o cupom é aplicado com sucesso, o app consome o token de uso único (
POST /api/redeem). Se a aplicação falha (regra de carrinho, valor mínimo), o token é preservado para uma próxima tentativa.
// Pseudocódigo simplificado do fluxo NubeSDK (contexto de checkout)
nube.on("checkout:ready", async () => {
const token = await storage.getItem("ml_token");
if (!token) return;
const res = await fetch(`${API}/api/redeem/preview?token=${token}`);
if (!res.ok) return; // 422 = token morto, 403 = cobrança inativa
const { coupon_code } = await res.json();
nube.send("coupon:add", () => ({ cart: { coupon: { code: coupon_code } } }));
});
Quando a aplicação funciona, o comprador vê o desconto no resumo sem precisar digitar o código. Se houver conflito ou falha na aplicação automática, o app pode mostrar um código copiável como alternativa.
Proteção de Margem: Três Camadas
Camada 1: Regras opcionais do link — campanhas de Black Friday podem usar data de expiração e limite de cliques. Também é possível criar links permanentes e sem limite; uma URL compartilhável não identifica a pessoa ou o canal que a acessa.
Camada 2: Limite de cliques — o limite é contabilizado no backend do Nexopath, não na Nuvemshop. Isso permite controle granular: 500 cliques para a campanha do Google, 300 para a do Meta, cada um com seu link independente — mesmo que ambos usem o mesmo cupom subjacente. É a mesma mecânica usada para calibrar links por influenciador pelo tamanho da audiência de cada creator.
Camada 3: Validação server-side — cada redeem-token é validado contra o banco no checkout, junto das regras do Magic Link público associado (ativo? Expirado? Esgotado? cobrança ativa?). Como o token temporário é um identificador opaco, não há payload no cliente para adulterar: um token inexistente ou já consumido após aplicação bem-sucedida do cupom é rejeitado.
Comparação: Fluxo Manual vs. Magic Link
| Aspecto | Cupom Manual | Magic Link |
|---|---|---|
| Input do usuário no checkout | Digitar código + clicar “Aplicar” | Tentativa automática; código copiável pode aparecer em caso de falha ou conflito |
| Risco de vazamento | Alto (código fixo, indexável) | A URL é compartilhável; regras opcionais podem limitar sua vigência ou cliques |
| Relatório disponível | Não se aplica | Contagem de cliques por link, sem atribuição de campanha ou pessoa |
| Dependência de GTM | Não é requisito para usar um cupom normal | Não é requisito para a tentativa via NubeSDK |
Rastreamento por Link
Como cada campanha usa um link próprio, o painel do Nexopath mostra, por link:
- Cliques — quantos acessos o link recebeu.
- Status — Ativo, Desativado, Esgotado (limite de cliques atingido) ou Expirado (data de expiração passada).
Isso permite comparar o volume de tráfego que cada URL recebeu, sem tratar cliques como pedidos, vendas, receita, conversões, aplicações de cupom ou atribuição individual. Links comuns podem ser editados ou reativados no Magic Link; links gerenciados pelo Parceiros devem ser administrados pelo Parceiros. Para o caso de uso de recuperação de carrinho via WhatsApp e CRM, veja Automações de WhatsApp com Cupom Tentado no Checkout.
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 já houver um cupom diferente aplicado, o Magic Link não o sobrescreve e pode mostrar um código copiável como alternativa.
- Sem token guardado — se alguém chega à loja sem passar por um link com
?ml=(ou depois de o TTL expirar), não há token noasyncLocalStoragee o app não tenta aplicar o cupom. A URL não autentica nem identifica quem a acessa.
Próximo Passo
O Nexopath Magic Link está na Nuvemshop App Store. O free trial de 14 dias inclui criação ilimitada de links e acesso completo ao painel. O setup leva menos de 5 minutos: instale, configure o primeiro link no painel, e use a URL gerada nos seus anúncios.