Skip to main content

Introdução

GoHighLevel (GHL) é uma plataforma completa de CRM e marketing que inclui funis, sites, e-mail/SMS e automação (“Workflows”). O GHL não lista o Dodo Payments como um processador integrado, então você conecta os dois de uma destas três formas, dependendo de quanto deseja incorporar o checkout e de quanto código pode escrever. Em todas as abordagens, o fulfillment é tratado da mesma forma. O Dodo envia eventos de webhook para um Inbound Webhook Workflow do GHL, que adiciona uma tag ao contato, concede acesso e envia confirmações.

Escolha sua abordagem

Não conhece este processo? Comece pela Abordagem A (Links de pagamento). Ela não exige código, funciona para todos os usuários do GHL e leva apenas alguns minutos. As abordagens B e C precisam de um backend para criar checkout sessions e são destinadas a equipes familiarizadas com código.

Pré-requisitos

  • Uma conta do Dodo Payments com pelo menos um produto criado.
  • Uma conta do GoHighLevel com um funil, site ou workflow.
  • Acesso a Settings → Webhooks (e a Settings → Developer para obter uma API key) no dashboard do Dodo.
  • Para as abordagens B e C: um pequeno backend ou endpoint serverless para criar checkout sessions.
O GHL exige um connected domain para publicar um funil. Durante a criação, use o Preview do funil para testar. Observe que o JavaScript personalizado (abordagens B e C) geralmente é executado apenas na página publicada em um domínio real, não no Preview.

Fulfillment com webhooks (todas as abordagens)

Esta é a camada de automação. Configure-a uma vez e ela funcionará independentemente da abordagem de checkout escolhida.
1

Create the workflow

Na sub-account do GHL, abra Automation no menu à esquerda (isso abre a aba Workflows). Clique em Create workflow e escolha Start from Scratch.
2

Add the Inbound Webhook trigger

No builder, clique em Add new trigger. No painel Add trigger, pesquise por webhook e selecione Inbound webhook (listado em Triggers → Events). Copie a Webhook URL gerada.
3

Register the webhook in Dodo

No dashboard do Dodo, acesse Settings → Webhooks, adicione um novo endpoint e cole a URL do Inbound Webhook do GHL. Faça uma compra de teste para que o GHL capture um payload de exemplo e você possa mapear os campos (e-mail do cliente, produto, valor, status).
4

Add fulfillment actions

De volta ao workflow do GHL, adicione ações com base no evento, como find/create contact by email, add a tag, grant course/membership access e send a confirmation email. Em seguida, Publish o workflow.
Os pagamentos são processados no Dodo, portanto não aparecerão na aba Payments do GHL. Reconcilie-os no GHL usando o workflow de webhook acima e trate o webhook como a fonte de verdade para conceder acesso, não o redirecionamento do navegador, pois o cliente pode fechar a aba antes de retornar.
Adicione um link de pagamento do Dodo a qualquer botão do GHL, CTA de funil, botão de página de pedido, e-mail ou SMS.
1

Create a product and copy its payment link

No dashboard do Dodo, acesse Products → Add Product, defina o name e o price, escolha one-time ou subscription e clique em Save. Abra o produto e copie o Payment Link (formato: https://checkout.dodopayments.com/buy/{product_id}).
2

Add the link to your GHL button

Edite seu funil ou página do site, selecione o Buy / Checkout button, defina a ação como Open URL / Website e cole seu link de pagamento do Dodo.
3

Set a success page (optional)

Defina a return URL do produto no Dodo como uma página de agradecimento do GHL, para que os clientes retornem ao funil após o pagamento.
Você pode preencher previamente e bloquear os dados do cliente ou adicionar tracking usando parâmetros de query do payment link. Isso é útil para passar um ID de funil ou oferta como metadata, que poderá ser lido novamente a partir do webhook.

Abordagem B: Checkout em overlay (código personalizado)

Abre o checkout do Dodo como um modal overlay na página do GHL usando o Checkout SDK via CDN. Requer um backend para criar uma checkout session e retornar seu checkoutUrl.
1

Create a backend endpoint that calls the Checkout Sessions API

Esta etapa é obrigatória. O SDK precisa de um checkoutUrl ativo, e sua criação exige sua secret API key. O GHL hospeda apenas páginas estáticas; ele não pode executar essa chamada no lado do servidor por você. Além disso, você nunca deve chamar a Create Checkout Session API diretamente do navegador, pois isso exporia sua secret key no código-fonte da página. Portanto, o checkout overlay e o inline não funcionam apenas com o GHL: você precisa de um backend sob seu controle que crie a session e retorne somente a URL.Qualquer backend pequeno funciona: uma função serverless (Cloudflare Workers, Vercel Functions, AWS Lambda, Supabase Edge Functions e similares) ou um endpoint em um servidor que você já execute. A lógica é a mesma em qualquer plataforma: receber a solicitação, chamar a API do Dodo com sua secret key e retornar o checkout_url.Exemplo de lógica do handler (adapte à plataforma de sua preferência):
Armazene sua API key do Dodo como um secret na plataforma em que fizer o deploy (nunca faça commit dela no código), permita solicitações do seu domínio do GHL (CORS) e disponibilize o endpoint em um domínio sob seu controle, por exemplo, https://api.example.com/create-checkout. Mude para https://live.dodopayments.com/checkouts quando passar para o modo live.
2

Add a Custom Code element in the GHL page builder

Abra a etapa do funil ou a página do site no construtor de páginas do GHL e, em seguida:
  1. Clique no ícone + no canto superior esquerdo do builder para abrir Quick Add.
  2. Selecione Elements na lista de categorias à esquerda.
  3. Encontre Custom Code (também exibido como HTML) e arraste-o para a página.
  4. Cole o código abaixo no editor de código do elemento e salve.
3

Publish and test on your domain

O Custom JS é executado na página publicada (connected domain), mas nem sempre no Preview. Publique e clique em Pay Now para confirmar que o overlay é aberto.

Abordagem C: Checkout inline (incorporado)

Incorpora o formulário de checkout dentro da página do GHL (sem redirecionamento e sem popup) usando o mesmo SDK com um container de mount. Assim como a abordagem B, requer um backend para criar a session.
1

Create a backend endpoint that calls the Checkout Sessions API

O requisito é o mesmo do overlay e também é obrigatório: criar uma session exige sua secret API key, portanto isso deve acontecer no lado do servidor. O GHL não pode fazer isso sozinho. Reutilize o mesmo endpoint de backend descrito acima na seção Overlay Checkout (qualquer função serverless pequena ou servidor sob seu controle) que chama a Create Checkout Session API e retorna { checkoutUrl }.
2

Add a container and SDK via Custom Code

No construtor de páginas do GHL:
  1. Clique no ícone + no canto superior esquerdo do builder para abrir Quick Add.
  2. Selecione Elements na lista de categorias à esquerda.
  3. Encontre Custom Code (também exibido como HTML) e arraste-o para a página onde deseja que o formulário de checkout apareça.
  4. Cole o código abaixo no editor de código do elemento e salve.
3

Verify your domain for wallets (Apple Pay)

Para usar Apple Pay no checkout inline, verifique seu domínio. Hospede o arquivo de associação e registre o domínio no dashboard.
O inline é a opção mais complexa no GHL. Ele requer código personalizado, um backend, uma página publicada em um domínio real e, para o Apple Pay, a verificação do domínio. Se você não precisa de um formulário totalmente incorporado, prefira a abordagem A ou B.

Eventos a tratar

Todo webhook inclui o e-mail do cliente. Use a ação find/create contact by email do GHL para associar o pagamento ao contato correto. Para ver a lista completa, consulte o Webhook Event Guide.

Testes e entrada em produção

1

Test in test mode

Mantenha o Dodo no Test Mode, use o cartão de teste 4242 4242 4242 4242 (qualquer data de validade futura e qualquer CVC), conclua uma compra e confirme que o workflow do GHL é acionado e aplica a tag ou concede o acesso.
2

Go live

Mude o Dodo para Live Mode e atualize o endpoint de webhook do modo live. O que mais precisará ser alterado depende da sua abordagem:
  • Links de pagamento (A): substitua pelo link de pagamento live do produto.
  • Checkout overlay (B): aponte seu backend para https://live.dodopayments.com/checkouts usando sua live API key e defina o mode do SDK como "live" na chamada Initialize.
  • Checkout inline (C): igual ao overlay, pois usa o mesmo endpoint de backend e a mesma inicialização do SDK.
Em seguida, faça uma compra real de ponta a ponta para confirmar.

Dicas

Trate o webhook como a fonte de verdade para conceder acesso. Tome ações com base em payment.succeeded / subscription.active, não no redirecionamento do navegador.
Verifique a autenticidade do webhook usando o header webhook-signature (Standard Webhooks), para que somente eventos genuínos do Dodo acionem o fulfillment no GHL.

Solução de problemas

Verifique se o endpoint de webhook do Dodo aponta para a URL correta do Inbound Webhook do GHL, se o workflow está publicado e se o trigger capturou um payload de exemplo para que o mapeamento dos campos exista.
O Custom JS geralmente é executado apenas na página publicada (domínio real), não no Preview. Confirme se a página está publicada, se o SDK <script> foi carregado e se checkoutUrl é uma URL de session válida retornada pelo seu backend.
Verifique se seu workflow usa find/create contact by email e se o campo de e-mail foi mapeado a partir do payload do webhook.
Isso é esperado. Os pagamentos são processados no Dodo, portanto reconcilie-os no GHL usando o workflow de webhook.
Última modificação em 6 de agosto de 2026