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>| Parte | Formato |
|---|---|
| Slug da oferta | Letras 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 oferta | ofr_ seguido de letras e números, como ofr_a3454b7c008d455fbc5c3fc436c1879d. Funciona mesmo quando a oferta tem slug. |
| Host | pay.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:
reason | Causa |
|---|---|
not_found | O 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_disabled | O link de pagamento da oferta está desligado. |
offer_archived | A oferta foi arquivada. |
no_prices | A oferta não tem preço. |
no_settleable_price | Nenhum preço está numa moeda que a loja consegue receber. |
project_unavailable | A loja não está vendendo no momento. |
pack_unavailable | O 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âmetro | Formato aceito | Se o valor for inválido | Exemplo |
|---|---|---|---|
pack | Inteiro 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 |
code | Cupom: 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 |
v | Có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 |
lang | Exatamente 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 |
currency | Có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 |
email | Texto. 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 |
name | Texto. Preenche o nome do comprador. | Não é validado na abertura. | name=Ana%20Souza |
utm_source, utm_medium, utm_campaign, utm_content, utm_term, utm_id | Texto, até 500 caracteres. Espaços nas pontas são removidos e o resto é cortado em 500. | Vazio é ignorado. | utm_source=instagram |
src, sck | Texto, até 500 caracteres. Mesma regra das UTMs. | Vazio é ignorado. | src=bio |
fbclid, gclid, gbraid, wbraid, ttclid, epik, tblci, ob_click_id, msclkid | IDs de clique, texto até 500 caracteres. As plataformas de anúncio acrescentam sozinhas. | Vazio é ignorado. | gclid=Cj0KCQ… |
fbp, fbc, ttp, ga_client_id | Valores 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,scke 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
utmdo eventocheckout.abandoned. Os eventos de pedido não trazem UTMs nem vendedor.
Montar links no código
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=ptEm 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
- Veja como o comprador vê o checkout.
- Leve as UTMs da página de vendas até o checkout com o script t.js.
Tentativas, desativação e reenvio
Quando o Vipter tenta de novo uma entrega que falhou, quando desativa o endpoint sozinho, o que acontece com os eventos enquanto ele está desligado e como usar o evento de teste e o reenvio do painel.
Script t.js de rastreamento
O que o script https://pay.vipter.com/t.js faz na sua página de vendas, passo a passo, o atributo data-hosts, o que ele guarda e acrescenta aos links, como instalar com e sem gerenciador de tags e o que liberar na CSP.