Templates da Meta com botão de URL dinâmica seguem uma regra restritiva: o domínio precisa ser fixo, e só a parte do path pode ser variável. Quem está vindo de e-mail/SMS tropeça nessa diferença — esse artigo explica o padrão correto e como o plugin colabora com o modificador relative_url do lado da Rishi.
A regra da Meta
Quando você cria um botão de URL em template do WhatsApp, há dois tipos:
- Estático — URL fixa, sem variáveis (
https://sualoja.com/promo). - Dinâmico — URL com prefixo fixo + uma variável no final (
https://sualoja.com/{{1}}).
O que a Meta não aceita: botão com a URL inteira como variável ({{1}}). Vai dar reprovação direta no template ou rejeição na hora de submeter.
Isso é proteção contra spam e phishing: o domínio precisa ser previsível e auditável.
O problema com checkout_url e similares
As variáveis de URL que o plugin entrega no webhook vêm completas, com domínio:
checkout_url = https://sualoja.com/checkout/?wcf_ac_token=ABC
pay_for_order_url = https://sualoja.com/checkout/order-pay/123/?key=wc_order_xyz
tracking_url = https://rastreio.com.br/?code=BR123
Se você mapear {{1}} do botão https://sualoja.com/{{1}} direto pra {{checkout_url}}, o resultado fica duplicado:
https://sualoja.com/https://sualoja.com/checkout/?wcf_ac_token=ABC
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
URL completa, não path
A Meta entrega isso e o link quebra.
A solução — o modificador relative_url
O Rishi (do lado do servidor que recebe o webhook) aceita modificadores de variável com sintaxe pipe:
{{checkout_url|relative_url}}
O modificador relative_url pega a URL completa e devolve só o path + querystring:
Entrada: https://sualoja.com/checkout/?wcf_ac_token=ABC
Saída: /checkout/?wcf_ac_token=ABC
Note o / inicial — ele faz parte do path. Por isso o template usa https://sualoja.com/{{1}} (sem barra antes da chave), e a variável já vem com a barra.
O modificador é processado no Rishi, não no WordPress. O plugin não tem controle nem visibilidade sobre isso — ele só envia o webhook com as variáveis completas. A sintaxe {{nome|modificador}} é configurada no painel da Rishi quando você mapeia placeholders.
O padrão completo, passo a passo
1. No painel da Meta (ou Rishi, se ela cria pra você)
No template, configure o botão como:
Tipo: URL Dinâmica
URL: https://sualoja.com.br/{{1}}
Substitua sualoja.com.br pelo domínio real da sua loja (precisa ser o mesmo da configuração).
2. No painel da Rishi, no mapeamento da mensagem
Pro placeholder {{1}} do botão, configure:
{{checkout_url|relative_url}}
Ou outra variável de URL relevante pro gatilho (pay_for_order_url, tracking_url, etc.) — sempre com o modificador |relative_url.
3. Resultado entregue ao cliente
O cliente recebe um botão de WhatsApp clicável. Ao clicar, ele é direcionado para:
https://sualoja.com.br/checkout/?wcf_ac_token=ABC
Que é o URL completo, válido, sem duplicação.
Variáveis de URL que vão no webhook
Lista de campos do payload que contêm URL e fazem sentido com relative_url:
| Variável | Gatilho |
|---|---|
{{checkout_url}} |
Carrinho abandonado (CartFlows) |
{{pay_for_order_url}} |
Gatilhos de pedido (cliente refazer pagamento) |
{{reset_password_url}} |
Recuperação de senha |
{{checkout_direct_login}} |
WC Smart Checkout (link de acesso direto) |
Se o seu domínio aparece na URL, use relative_url.
Se a URL vai pra outro domínio (rastreio em site dos Correios, link de gateway externo, página de avaliação de um plugin de terceiros), não use — o modificador iria extrair só o path, mas o botão precisa do domínio externo. Nesses casos, a estratégia é:
- Criar um template separado com URL fixa (se o domínio for previsível).
- Ou mandar via texto no corpo da mensagem (sem botão).
Alternativa quando a URL é totalmente externa
Templates com botões só pra um domínio externo fixo ainda funcionam — basta o domínio ser sempre o mesmo:
Tipo: URL Dinâmica
URL: https://rastreio.correios.com.br/?code={{1}}
Mapeie {{1}} pra {{tracking_code}} (sem relative_url, porque é só o código, não uma URL completa).
Considerações
Domínio com www. ou sem — fixe a forma que aparece nas URLs reais. Se a loja redireciona sualoja.com → www.sualoja.com, use a versão final no template, pra não ter redirect que quebra UTM/conversão.
HTTPS sempre — a Meta exige HTTPS em botões de URL. Se sua loja tem URLs http, configure SSL antes de subir o template.
/wp-admin em URLs internas — algumas integrações geram links que passam pelo admin (raro, mas acontece com plugins legados). Esses links pedem login, então não funcionam pelo WhatsApp mesmo com path correto. Verifique antes de mapear.
Próximos passos
- Variáveis dos gatilhos de pedido — a lista de variáveis disponíveis, incluindo URLs de pedido.
- Variáveis do gatilho Carrinho abandonado (CartFlows) — gatilho com
{{checkout_url}}, o caso mais comum de uso dorelative_url. - Variáveis enviadas no webhook — entender o payload completo.