Integração

Conecte o HeroPay a mais de 10 mil apps via Zapier

Integre o HeroPay ao Zapier por webhook: venda confirmada vira linha no Google Sheets e aviso no Slack, formulário vira link de pagamento. Passo a passo.

3 passos · em minutos
  1. 01token do sandbox
  2. 02link de pagamento
  3. 03webhook confirma

Para conectar o HeroPay ao Zapier hoje, você usa o Webhooks by Zapier nos dois sentidos: o trigger Catch Hook recebe os eventos do HeroPay (venda confirmada, Pix gerado, estorno, assinatura cancelada) e dispara qualquer app do catálogo; a action Custom Request chama POST /payment_links e devolve um link de checkout com Pix, boleto e cartão. Não existe app oficial do HeroPay no Zapier, então a integração é por webhook e API REST, e isso exige um plano pago do Zapier. Em minutos, cada venda vira linha no Google Sheets e aviso no Slack.

Resumo

O essencial em 60 segundos

  • O HeroPay se conecta ao Zapier pelo Webhooks by Zapier: Catch Hook para receber eventos e Custom Request (método POST) para criar links de pagamento pela API.
  • Não há app oficial do HeroPay no diretório do Zapier. O Webhooks by Zapier faz o trabalho com a API REST, com dois campos a mais para configurar.
  • Webhooks by Zapier é um app premium: não funciona no plano Free, só a partir do Professional (a partir de US$ 19,99/mês no plano anual, com 750 tasks). Verificado em set/2026 em zapier.com/pricing.
  • O HeroPay envia 9 gatilhos, entre eles spark_payment_confirmed, payment_pix_created, refunded e subscription_cancel, cada um registrado com POST /webhook apontando para a URL do Zap.
  • O Catch Hook não valida assinatura HMAC. Para validar o header X-HeroPay-Signature, use o Catch Raw Hook mais um passo de Code by Zapier; sem isso, não use o Zap para liberar acesso ou mover dinheiro.
  • No Zapier você paga por task (cada action concluída); no n8n, por execução do fluxo inteiro ou nada se hospedar você mesmo. Acima de poucas centenas de vendas por mês, o n8n tende a sair mais barato.
  • Pix e boleto custam R$ 0 por transação no HeroPay; cartão, 3,49% por transação aprovada. O Zapier é um custo à parte, cobrado por ele (preços).

Como conectar o HeroPay ao Zapier?

O fluxo tem duas metades independentes. Use só a que precisa.

SentidoApp no ZapierO que faz no HeroPay
HeroPay → ZapierWebhooks by Zapier, trigger Catch Hook (ou Catch Raw Hook)Recebe os eventos que você registrou com POST /webhook
Zapier → HeroPayWebhooks by Zapier, action Custom RequestChama a API: POST /payment_links, consultas de venda, saldo

Antes de começar, tenha três coisas: conta sandbox no HeroPay com o token de API copiado do painel (app.heropay.tech), um plano pago do Zapier (Professional ou acima, que já libera o teste gratuito deles) e um terminal para rodar um curl.

Zap 1: venda confirmada vira linha no Google Sheets e aviso no Slack

É o Zap que quase todo mundo monta primeiro: controle de vendas numa planilha que o financeiro já usa, e o time comemorando no canal.

Passo 1: crie o Zap com o Catch Hook

No editor do Zapier, clique em Create > Zaps, escolha Webhooks by Zapier como trigger e o evento Catch Hook. Deixe o campo "Pick off a Child Key" vazio e continue. O Zapier mostra uma URL no formato https://hooks.zapier.com/hooks/catch/123456/abcdef/. Copie.

Na tela, você vê o botão "Test trigger" e a mensagem de que o Zap ainda não recebeu nenhuma requisição. Deixe essa aba aberta.

Passo 2: registre a URL do Zap no HeroPay

Um registro por gatilho. Para este Zap, só o de pagamento confirmado:

curl -X POST https://api.beta.heropay.tech/webhook \
  -H "Authorization: Bearer $HEROPAY_API_KEY" \
  -H "Accept: application/vnd.herospark.com; version=1" \
  -H "Content-Type: application/json" \
  -d '{
    "webhook": {
      "trigger": "spark_payment_confirmed",
      "webhook_url": "https://hooks.zapier.com/hooks/catch/123456/abcdef/",
      "request_method": "post"
    }
  }'

A resposta 201 Created traz o data.id do webhook. Guarde: é com ele que você pausa (PUT /webhook/{id}/disable) ou remove (DELETE /webhook/{id}) o envio. Os três campos são obrigatórios; use request_method = post. Detalhes do contrato em webhooks.

Passo 3: faça uma venda de teste no sandbox

Crie um link de pagamento no painel do sandbox (ou pela API, como no Zap 2), faça uma compra de teste e volte ao Zapier. Clique em Test trigger: o evento aparece com os campos já separados pelo Zapier, do comprador (buyer), do pagamento (payment) e do carrinho (cart src).

O payload segue o mesmo template em todos os gatilhos: comprador (buyer), pagamento (payment, com ID, data, valor, método e status), oferta (offer), produto (product), carrinho (cart, com o src), assinatura, parcelamento e dados de cada método. Um esboço da estrutura, só para orientar o mapeamento:

{
  "buyer": { "name": "...", "email": "..." },
  "payment": { "id": "...", "value": "...", "method": "...", "status": "..." },
  "offer": { "...": "..." },
  "product": { "...": "..." },
  "cart": { "src": "instagram" }
}

Os nomes exatos e o formato de cada campo (por exemplo, se o valor vem em reais ou em centavos, e como vêm as datas) estão no exemplo de payload da documentação. O teste do trigger mostra o evento real: confira nele antes de mapear.

Passo 4: adicione a linha no Google Sheets

Adicione uma action Google Sheets > Lookup Spreadsheet Row, procure pela coluna payment_id com o valor payment id e marque a opção de criar a linha se ela não existir. Mapeie as colunas: data, nome, e-mail, produto, valor, método, origem (cart src) e payment_id.

Por que lookup e não "Create Spreadsheet Row" direto: o HeroPay tem retentativa automática de entrega, e o mesmo evento pode chegar duas vezes. Buscar pelo payment id antes de criar evita a venda duplicada na planilha.

Passo 5: avise o Slack

Adicione Slack > Send Channel Message, escolha o canal e escreva a mensagem com os campos do trigger, por exemplo: "Venda confirmada: {product name}, R$ {payment value} via {payment method}. Origem: {cart src}." Teste, publique o Zap e faça mais uma compra no sandbox para ver a linha e a mensagem aparecerem sozinhas.

Quando estiver tudo certo, registre o mesmo webhook na API de produção (https://api.heropay.tech/webhook) com o token de produção. O Zap não muda.

O caso de quem vende serviço, mentoria ou inscrição: a pessoa preenche um Typeform ou Google Forms e recebe na hora um link para pagar com Pix, boleto ou cartão.

Passo 1: trigger no formulário

Escolha Typeform > New Entry ou Google Forms > New Form Response e conecte o formulário. Os campos mínimos são nome e e-mail. O preço não vem do formulário: ele fica fixo no Zap, para ninguém pagar o valor que digitou.

Adicione Webhooks by Zapier > Custom Request. Use Custom Request, não a action POST simples, porque o corpo do HeroPay tem um objeto aninhado (payment_link) e uma lista (payment_methods); na Custom Request, o JSON vai exatamente como você escreve.

CampoValor
MethodPOST
URLhttps://api.beta.heropay.tech/payment_links
HeadersAuthorization = Bearer SEU_TOKEN · Accept = application/vnd.herospark.com; version=1 · Content-Type = application/json
Datao JSON abaixo, com os campos do formulário inseridos
{
  "payment_link": {
    "name": "Mentoria de 1 hora",
    "description": "Sessão para {nome do formulário}",
    "price_cents": 29700,
    "absorbs_fees": true,
    "max_installments": 6,
    "payment_methods": ["pix", "credit_card", "bank_slip"],
    "src": "{id da resposta do formulário}"
  }
}

price_cents é inteiro em centavos: 29700 é R$ 297,00, e o mínimo é 500 (R$ 5,00). O src volta em cart.src em todo webhook dessa compra, então o Zap 1 sabe exatamente de qual resposta do formulário veio o pagamento. Use no src um identificador sem espaços, como o id da resposta.

Teste a action. O Zapier lê a resposta 201 e expõe os campos, entre eles Data Offer Url, que é o checkout pronto.

Adicione Gmail > Send Email (ou o app de e-mail que você usa), com destinatário no e-mail do formulário e o Data Offer Url no corpo: "Oi, {nome}. Seu link para garantir a vaga: {Data Offer Url}. Pix, boleto ou cartão em até 6x."

Criar um link por resposta gasta uma task a mais por lead e enche o painel de links. Se o produto e o preço são sempre os mesmos, crie o link uma vez no painel e, no Zap, monte a URL com Formatter by Zapier (que não consome task): URL_DO_LINK?src={id da resposta}. O src da URL chega em cart.src do mesmo jeito. O Zap cai de duas tasks por lead para uma.

Descreva o Zap para o assistente de IA

O editor do Zapier tem um assistente de IA que monta o rascunho do Zap a partir de uma descrição. Cole o texto abaixo, troque o que está entre colchetes e revise campo a campo antes de publicar: o assistente não conhece a API do HeroPay, então os headers e o JSON vêm desta página.

Crie um Zap com estes passos:
1. Trigger: Webhooks by Zapier, evento Catch Hook.
2. Action: Google Sheets, Lookup Spreadsheet Row na planilha [Vendas HeroPay], aba [2026], buscando a coluna payment_id pelo campo "payment id" do trigger; se não encontrar, crie a linha com as colunas data, nome (buyer name), email (buyer email), produto (product name), valor (payment value), metodo (payment method), origem (cart src) e payment_id (payment id).
3. Action: Slack, Send Channel Message no canal [#vendas] com o texto "Venda confirmada: {product name}, R$ {payment value} via {payment method}. Origem: {cart src}."
Não adicione passos além desses.

Para o Zap com validação de assinatura, peça o código do passo Code by Zapier ao Claude, ChatGPT, Cursor ou outra IA de sua preferência com o prompt da seção seguinte, ou copie o código pronto.

O Zapier valida a assinatura dos webhooks do HeroPay?

Não nativamente. O HeroPay assina cada evento com o header X-HeroPay-Signature, um HMAC SHA-256 do corpo calculado com o segredo de assinatura exibido no painel. O trigger Catch Hook do Zapier não confere assinatura nenhuma, e ainda faz o parse do corpo e não entrega os headers. Qualquer pessoa que descobrir a URL do Zap consegue mandar um evento falso.

O que isso significa na prática:

  • Zap de registro e aviso (planilha, Slack, CRM): o risco é uma linha falsa na planilha. Aceitável para muita gente, desde que ninguém tome decisão financeira só por ela.
  • Zap que libera acesso, emite nota ou manda produto: valide a assinatura. Sempre.

Workaround: Catch Raw Hook + Code by Zapier

Troque o trigger por Catch Raw Hook, que entrega o corpo sem parse e os headers da requisição. Depois adicione Code by Zapier > Run JavaScript e mapeie três campos em Input Data: corpo (o raw body do trigger), assinatura (o header da assinatura, que aparece nos dados de teste com o nome normalizado pelo Zapier) e segredo (o segredo do webhook, colado como texto).

const crypto = require('crypto');

const hmac = () => crypto.createHmac('sha256', inputData.segredo).update(inputData.corpo, 'utf8');
// confira o formato da assinatura (hex ou base64) na documentação e mantenha só o certo
const esperadas = [hmac().digest('hex'), hmac().digest('base64')];
const recebida = Buffer.from((inputData.assinatura || '').trim());

const valido = esperadas.some((e) => {
  const b = Buffer.from(e);
  return recebida.length === b.length && crypto.timingSafeEqual(recebida, b);
});

let evento = {};
if (valido) evento = JSON.parse(inputData.corpo);
const buyer = evento.buyer || {};
const payment = evento.payment || {};

output = {
  valido: valido,
  payment_id: payment.id || '',
  valor: payment.value || '',
  metodo: payment.method || '',
  nome: buyer.name || '',
  email: buyer.email || '',
  origem: (evento.cart || {}).src || '',
};

Em seguida, um passo Filter by Zapier com "Only continue if valido is true" (o Filter não consome task). Tudo depois dele só roda com evento autêntico. O Code by Zapier aceita apenas a biblioteca padrão do Node.js, o que inclui o módulo crypto, e está disponível nos mesmos planos pagos que liberam o Webhooks.

Limites honestos desse workaround:

  • O segredo fica no campo de Input Data do Zap, visível para quem edita o Zap na sua conta. O Zapier não tem um cofre de segredos para passos de código.
  • O Catch Raw Hook aceita corpo de até 2 MB (o Catch Hook, 10 MB); os eventos do HeroPay ficam muito abaixo disso.
  • O passo de código consome uma task por evento.

Se o fluxo mexe em dinheiro ou acesso e você não quer manter código dentro do Zapier, o caminho mais sólido é um endpoint seu (ou um fluxo no n8n) que valida o HMAC e só então repassa ao Zap.

Zapier ou n8n: qual usar com o HeroPay?

Os dois recebem o mesmo webhook e chamam a mesma API. A diferença é o modelo de cobrança e onde o fluxo roda.

Zapiern8n Cloudn8n self-hosted
Como cobraPor task (cada action concluída; trigger, Filter e Formatter não contam)Por execução do fluxo inteiro, qualquer número de passosGrátis (Community Edition); você paga o servidor
Plano de entrada com webhookProfessional: US$ 19,99/mês (anual) ou US$ 29,99 (mensal), 750 tasksStarter: € 20/mês (anual), 2.500 execuçõesR$ 0 de licença
Zap 1 (Sheets + Slack), por venda2 tasks (3 com validação HMAC)1 execução1 execução
Vendas/mês cobertas no plano de entradacerca de 375 (250 com HMAC)cerca de 2.500limitado pelo servidor
Validação HMACWorkaround com Code by ZapierNó de código ou CryptoNó de código ou Crypto
Catálogo de apps10.147+ appsMenor, com nó HTTP genéricoIgual ao Cloud
Quem mantémZapiern8nVocê

Verificado em set/2026. Fontes: zapier.com/pricing, zapier.com/apps, n8n.io/pricing.

Resumo honesto: use o Zapier se o seu time já vive nele, precisa de um app de nicho que só ele tem e o volume é de dezenas a poucas centenas de vendas por mês. Passou disso, ou o fluxo mexe em dinheiro e precisa de validação robusta, o n8n sai mais barato e dá mais controle, principalmente hospedado por você.

Quais são as armadilhas mais comuns com Zapier e pagamento?

Token no lugar errado

O token vai no header Authorization da Custom Request, dentro da sua conta do Zapier. Nunca cole o token em formulário, planilha compartilhada ou mensagem do Slack. Se vazar, regenere o token no painel do HeroPay e atualize o Zap.

Esquecer o header Accept

Sem Accept: application/vnd.herospark.com; version=1, a API usa a versão mais recente disponível. Funciona no teste e pode mudar sozinho em produção. Fixe a versão.

Reais onde a API espera centavos

price_cents: 297 cria um link de R$ 2,97, que a API recusa porque o mínimo é R$ 5,00. Em R$ 297,00, mande 29700. No sentido contrário, confira no teste do trigger o formato do valor que chega no payload e, se preciso, converta com o Formatter antes de somar na planilha.

Tratar o redirect como pagamento

Quem confirma pagamento é o evento spark_payment_confirmed, não a página de obrigado. O Pix pode ser pago minutos depois no celular. Confie no evento, não na volta do navegador.

Contar com a retentativa do HeroPay para erros dentro do Zap

O Zapier responde 200 assim que recebe o evento. A partir daí, a retentativa automática do HeroPay já considerou a entrega feita. Se o passo do Sheets falhar, quem reexecuta é o Zapier (histórico de Zaps e reexecução de passos com erro), não o HeroPay. Olhe o histórico do Zap depois de publicar.

Um Zap para todos os eventos sem saber qual chegou

Cada POST /webhook registra um gatilho. Se você apontar vários gatilhos para a mesma URL, acrescente um parâmetro na URL de cada registro, como ?evento=refunded: o Catch Hook costuma expor parâmetros da query string como campos, o que permite separar com Paths ou Filter. Confira no teste do trigger. O caminho mais simples continua sendo um Zap por gatilho.

Dá para cobrar sem Zapier nem código?

Dá. Crie um link de pagamento no painel, com nome, preço e métodos, e mande a URL por WhatsApp, e-mail ou bio. As vendas aparecem no painel e nos relatórios. O Zapier só entra quando você quer que outra ferramenta reaja à venda sozinha. Se o que você quer é colocar pagamento dentro de um app, veja Lovable ou a página de desenvolvedores; se quer que a IA escreva a integração, veja HeroPay para IA.

Perguntas frequentes

Existe app oficial do HeroPay no Zapier?

Não. A integração usa o Webhooks by Zapier, que o próprio Zapier oferece para conectar qualquer serviço com API: o trigger Catch Hook recebe os eventos do HeroPay e a action Custom Request chama a API para criar links de pagamento. Na prática, você configura uma URL e alguns headers a mais do que num app oficial, e ganha acesso a todos os 9 gatilhos de webhook e a qualquer endpoint da API, não só aos que um app pré-pronto exporia.

O Webhooks by Zapier funciona no plano grátis?

Não. O Webhooks by Zapier é um app premium e não está disponível no plano Free, segundo a central de ajuda do Zapier (atualizada em maio/2026). Ele aparece a partir do Professional, que custa US$ 19,99 por mês no plano anual ou US$ 29,99 no mensal, com 750 tasks, e também nos planos Team e Enterprise. O Code by Zapier, usado para validar a assinatura HMAC, segue a mesma regra. Verificado em set/2026 em zapier.com/pricing.

Como receber um webhook de pagamento no Zapier?

Crie um Zap com o trigger Webhooks by Zapier > Catch Hook e copie a URL que ele gera. Depois registre essa URL no HeroPay com POST /webhook, informando o gatilho (por exemplo, spark_payment_confirmed), a webhook_url e request_method: post. Faça uma compra de teste no sandbox e clique em Test trigger: os campos do comprador, do pagamento e do carrinho aparecem prontos para mapear nos próximos passos, como Google Sheets, Slack, CRM ou e-mail.

Quanto custa usar Zapier com o HeroPay?

São duas contas separadas. No HeroPay, Pix e boleto custam R$ 0 por transação e o cartão custa 3,49% por transação aprovada, sem mensalidade. No Zapier, você paga o plano: o Professional começa em US$ 19,99 por mês (anual) com 750 tasks. Um Zap que grava na planilha e avisa no Slack usa 2 tasks por venda, então cobre cerca de 375 vendas por mês nesse plano. Com validação HMAC, são 3 tasks e cerca de 250 vendas.

Zapier ou n8n: qual é melhor para pagamentos?

Depende do volume e do seu time. O Zapier cobra por task, tem mais de 10 mil apps e ninguém precisa manter servidor: bom para dezenas ou poucas centenas de vendas por mês. O n8n cobra por execução do fluxo inteiro (Starter a € 20/mês com 2.500 execuções) ou é gratuito se você hospedar a Community Edition, e valida HMAC com um nó de código sem gambiarra. Para volume alto ou fluxos que liberam acesso, o n8n costuma ser a escolha melhor.

Consegue, com a action Webhooks by Zapier > Custom Request. Configure método POST, URL https://api.heropay.tech/payment_links, os headers Authorization: Bearer <token>, Accept: application/vnd.herospark.com; version=1 e Content-Type: application/json, e o JSON com payment_link (nome, price_cents em centavos, métodos e src). A resposta traz o checkout em data.offer.url, que o Zapier expõe como campo para o passo seguinte, como um e-mail ou mensagem de WhatsApp.

Como evitar venda duplicada na planilha?

O HeroPay tem retentativa automática de entrega, então o mesmo evento pode chegar mais de uma vez. No Google Sheets, use Lookup Spreadsheet Row buscando pelo payment id com a opção de criar a linha se não existir, em vez de Create Spreadsheet Row direto. Em outros apps, use a action de busca equivalente ou um Filter que compara o payment id com o último registrado. O payment id é único por pagamento e serve de chave de deduplicação.

Dá para saber de qual campanha veio a venda no Zapier?

Dá, pelo campo cart.src. Acrescente ?src=instagram (ou o nome da campanha) na URL do link de pagamento, ou envie src ao criar o link pela API. Esse valor é salvo no carrinho e chega em cart.src em todos os webhooks daquela compra, e o Zapier mostra como campo cart src. Mapeie numa coluna "origem" da planilha e você tem vendas por canal sem depender de UTM, que costuma se perder no redirecionamento.

O Zapier recebe eventos de assinatura e estorno?

Recebe, desde que você registre cada gatilho com POST /webhook. Os gatilhos de assinatura são subscription_activate, subscription_update e subscription_cancel; os de devolução são refunded e chargeback_request. Há ainda payment_pix_created, spark_payment_boleto_created e payment_credit_cart_refused (grafia com "cart"). O mais simples é um Zap por gatilho: por exemplo, subscription_cancel remove o cliente de uma lista no seu e-mail marketing e avisa o suporte no Slack.

Comece agora

Crie a conta sandbox, registre a URL do seu Zap e veja a primeira venda de teste cair na planilha em minutos. Sem fila de homologação: quando funcionar no sandbox, registre o webhook em produção e pronto.

Conecte e cobre em minutos

Sandbox grátis, docs abertas e llms.txt para a sua ferramenta de IA.

Pix e boleto R$ 0 · cartão 3,49% em até 12x · saque sem tarifa