VipterCentral de Ajuda
Desenvolvedores

Parâmetros de URL do checkout

Referência técnica de cada parâmetro que o link de checkout aceita, com formato, validação, o que acontece com um valor inválido e como montar os links no seu código.

Esta é a referência para quem gera links de checkout no código, por exemplo numa página de vendas, num e-mail transacional ou num CRM. O que cada parâmetro faz para o comprador, com exemplos para o lojista, está em Link de pagamento e parâmetros de URL.

O endereço base

https://pay.vipter.com/<slug-ou-id-da-oferta>
ParteFormato
Slug da ofertaLetras minúsculas, números e hífens, de 3 a 61 caracteres, começando com letra ou número: ^[a-z0-9][a-z0-9-]{2,60}$.
ID da ofertaofr_ seguido de letras e números, como ofr_a3454b7c008d455fbc5c3fc436c1879d. Funciona mesmo quando a oferta tem slug.
Hostpay.vipter.com ou o domínio próprio ativo da loja, com o mesmo caminho. O domínio próprio só abre ofertas da loja dele.

Quando o link não pode abrir, o checkout redireciona para /unavailable?reason=<motivo>. O motivo fica no endereço para diagnóstico:

reasonCausa
not_foundO slug ou o ID não existe, a oferta é de outra loja que não a do domínio, ou o slug tem letra maiúscula.
link_disabledO link de pagamento da oferta está desligado.
offer_archivedA oferta foi arquivada.
no_pricesA oferta não tem preço.
no_settleable_priceNenhum preço está numa moeda que a loja consegue receber.
project_unavailableA loja não está vendendo no momento.
pack_unavailableO pack não é um pacote da oferta, ou a oferta é uma assinatura.

Parâmetros

Todos são opcionais e a ordem não importa. Um parâmetro repetido vale pelo primeiro valor. Parâmetros desconhecidos são ignorados.

ParâmetroFormato aceitoSe o valor for inválidoExemplo
packInteiro de 1 a 999, só dígitos. Precisa ser a quantidade de um pacote da oferta.A página de link indisponível, com pack_unavailable. Vazio (pack=) é ignorado.pack=3
codeCupom: até 40 caracteres, só letras, números, - e _.Formato inválido é ignorado. Um cupom que não vale para o pedido aparece no resumo com o motivo, e a compra segue sem desconto.code=BLACK10
vCódigo de vendedor: 2 a 31 caracteres, letras minúsculas, números e hífens, começando com letra ou número. Maiúsculas e espaços nas pontas são normalizados.Código malformado, inexistente ou de vendedor inativo não atribui a venda a ninguém.v=ana
langExatamente um de pt, en, es, fr, de, it, ja, ko, ru, zh, em minúsculas.Ignorado: o idioma sai da escolha anterior do comprador, do navegador ou do país.lang=en
currencyCódigo ISO 4217 de três letras. Maiúsculas ou minúsculas.Sem preço nessa moeda, o checkout abre na moeda da loja, no preço padrão ou no primeiro preço da oferta, nessa ordem.currency=USD
emailTexto. Preenche o e-mail do comprador, que ele pode corrigir.Não é validado na abertura: o formulário valida no envio.email=ana%40example.com
nameTexto. Preenche o nome do comprador.Não é validado na abertura.name=Ana%20Souza
utm_source, utm_medium, utm_campaign, utm_content, utm_term, utm_idTexto, até 500 caracteres. Espaços nas pontas são removidos e o resto é cortado em 500.Vazio é ignorado.utm_source=instagram
src, sckTexto, até 500 caracteres. Mesma regra das UTMs.Vazio é ignorado.src=bio
fbclid, gclid, gbraid, wbraid, ttclid, epik, tblci, ob_click_id, msclkidIDs de clique, texto até 500 caracteres. As plataformas de anúncio acrescentam sozinhas.Vazio é ignorado.gclid=Cj0KCQ…
fbp, fbc, ttp, ga_client_idValores dos cookies _fbp, _fbc, _ttp e do ID de cliente do _ga da sua página. O script t.js acrescenta sozinho.Vazio é ignorado.fbp=fb.1.1790600000000.123456789

Reservados: rec é o token do link de recuperação de checkout abandonado, que vem pronto no recovery_url do evento checkout.abandoned. ctx é de uso interno do Vipter. Não monte links com eles.

O checkout não aceita telefone, documento nem endereço por URL.

Regras de cada parâmetro

pack

Só ofertas de pagamento único têm pacotes. Numa oferta de assinatura, qualquer pack leva à página de link indisponível. Sem o parâmetro, o link vende 1 unidade pelo preço da oferta. O checkout não tem seletor de pacote: um link por pacote.

lang

O idioma do link vence a regra da loja que vende para um só país, que esconde o seletor e usa o idioma daquele país. O checkout guarda a escolha no cookie pay_locale por um ano, e as visitas seguintes sem lang usam esse cookie. Numa loja de um país só, o cookie não é usado: só o lang do próprio link muda o idioma.

Origem da campanha: UTMs, src e sck

Valem como primeiro toque: o primeiro link que trouxe utm_*, src ou sck para aquele navegador nos últimos 30 dias define todos esses valores juntos. Um link posterior com outra campanha não troca nenhum deles. O checkout guarda esses dados no localStorage do domínio do checkout, na chave vpt_attr, e o prazo de 30 dias conta da primeira vez que algo foi guardado.

IDs de clique, cookies e v

Valem pelo último valor recebido: um clique novo num anúncio troca o gclid guardado, e o último link de vendedor aberto define o v. Quando chega um fbclid sem fbc, o checkout monta o fbc no formato fb.1.<milissegundos>.<fbclid>. O código v é conferido quando o checkout cria a sessão de pagamento: vale o vendedor ativo naquele momento.

email e name

O endereço de entrada que o Vipter guarda com a venda sai sem email, name, phone, rec e ctx. Mesmo assim, esses dados ficam no histórico do navegador e nos logs de quem serve a página anterior. Use email e name só em links individuais, como num e-mail para um cliente, nunca em anúncios ou páginas públicas.

Para onde os dados vão

  • O vendedor (v) fica no pedido e entra nas comissões.
  • UTMs, src, sck e IDs de clique ficam na venda, alimentam a origem das vendas e o envio de conversões para as plataformas de anúncio.
  • As UTMs vão no campo utm do evento checkout.abandoned. Os eventos de pedido não trazem UTMs nem vendedor.

Codifique cada valor. Um + sem codificar, comum em e-mails como ana+loja@example.com, vira espaço. Use as funções da linguagem em vez de concatenar texto:

function checkoutLink(base, params) {
  const url = new URL(base);
  for (const [key, value] of Object.entries(params)) {
    if (value !== undefined && value !== null && value !== '') url.searchParams.set(key, String(value));
  }
  return url.toString();
}

checkoutLink('https://pay.vipter.com/kit-cha', { pack: 3, code: 'BLACK10', v: 'ana', utm_source: 'instagram', utm_campaign: 'black-friday' });
// https://pay.vipter.com/kit-cha?pack=3&code=BLACK10&v=ana&utm_source=instagram&utm_campaign=black-friday

checkoutLink('https://pay.vipter.com/curso-fotografia', { email: 'ana+teste@example.com', name: 'Ana Souza', lang: 'pt' });
// https://pay.vipter.com/curso-fotografia?email=ana%2Bteste%40example.com&name=Ana+Souza&lang=pt

Em Python, urllib.parse.urlencode gera a mesma query:

from urllib.parse import urlencode

"https://pay.vipter.com/curso-fotografia?" + urlencode({"email": "ana+teste@example.com", "name": "Ana Souza", "lang": "pt"})
# https://pay.vipter.com/curso-fotografia?email=ana%2Bteste%40example.com&name=Ana+Souza&lang=pt

+ e %20 valem como espaço no checkout. Se a sua página de vendas já tem UTMs no endereço, o script t.js leva esses valores até o link sem código.

O que fazer a seguir

Nesta página