Quer usar os Webhooks do Discourse para acionar uma tarefa via Zapier? Vamos começar!
Dica: O Zapier agora possui uma integração oficial com o Discourse com gatilhos e ações integrados (por exemplo, “Nova Postagem”, “Criar Postagem”). Para casos de uso comuns, isso é mais simples do que configurar webhooks genéricos manualmente. O guia abaixo aborda a abordagem manual de webhook, que oferece mais flexibilidade e acesso a todos os tipos de eventos do Discourse.
O Zapier requer um gatilho e uma ação. Neste tutorial, o gatilho será um Webhook do Discourse e a ação será enviar um e-mail.
Enviar um e-mail em qualquer evento de usuário
Agora configuraremos um Zap para enviar e-mails em qualquer evento de usuário (por exemplo, quando um usuário é criado, aprovado, atualizado, faz login, faz logout, é suspenso, entre outros). Para acionar em um evento de usuário específico, consulte Acionar em um evento de usuário específico abaixo.
Criar um Webhook do Discourse
-
Crie um novo Webhook do Discourse para evento de usuário
Atualizaremos a “URL de Carga Útil” assim que a URL do webhook for gerada nos próximos passos.
Criar um novo Zap
Procure este botão no painel do Zapier: ![]()
Configurar o Gatilho
-
Selecione Webhook como Gatilho. Procure por:
-
Escolha o Gatilho
Você deseja selecionar “Catch Hook” (Capturar Gancho)
-
Você pode pular a etapa “Configurar Webhooks by Zapier Hook”.
Basta pressionar “Continuar”.
-
Testar Gatilho
Copie a URL do webhook personalizada gerada e cole-a na seção “URL de Carga Útil” do Webhook do Discourse criado originalmente.

Agora tente criar/atualizar/aprovar um usuário na sua instância do Discourse.
Se você seguiu todas as etapas com sucesso e criou/atualizou/aprovou um usuário, verá uma mensagem de sucesso no Zapier:
Clicar no hiperlink “view your hook” (ver seu gancho) mostrará os dados analisados.
Configurar a Ação no Zapier
-
Selecione E-mail como Ação. Procure por:
-
Pressione “Salvar + Continuar”
-
Configurar Modelo de E-mail
Modifique o modelo de e-mail conforme sua necessidade. Observe que você pode usar o botão
+para adicionar mais dados analisados via resposta JSON.Agora teste a ação; você deve receber um e-mail do Zapier.
Ativar o Zap
É isso! Agora você receberá um e-mail para cada evento de usuário. A lista completa de eventos de usuário que podem acionar um webhook é:
| Nome do Evento | Descrição |
|---|---|
user_created |
Uma nova conta de usuário foi criada |
user_approved |
Um usuário foi aprovado |
user_updated |
Um perfil de usuário foi atualizado |
user_logged_in |
Um usuário fez login |
user_logged_out |
Um usuário fez logout |
user_confirmed_email |
Um usuário confirmou seu e-mail |
user_destroyed |
Uma conta de usuário foi excluída |
user_suspended |
Um usuário foi suspenso |
user_unsuspended |
Um usuário foi des suspenso |
user_anonymized |
Uma conta de usuário foi anonimizada |
![]()
Acionar em um evento de usuário específico
Deseja enviar e-mails apenas para um evento de usuário específico, talvez apenas na criação da conta, mas não na atualização? Use o gatilho “Catch Raw Hook” (Capturar Gancho Bruto).
- Clique em “show less common options” (mostrar opções menos comuns)
- Clique em “Catch Raw Hook”
- Siga as etapas restantes para configurar o gatilho normalmente.
Depois que o gatilho for configurado, adicione um filtro.
- Clique em “Add a Step” (Adicionar uma Etapa)
- Clique em “Filter” (Filtro)
- Clique em “Save and Continue” (Salvar e Continuar)
- Selecione “Headers Http X Discourse Event” no primeiro menu suspenso.
- Selecione “(Text) Exactly matches” ((Texto) Corresponde exatamente) no segundo menu suspenso.
- Insira o cabeçalho completo que você deseja filtrar (por exemplo,
user_logged_out). - Se quiser que o Zapier seja executado em vários cabeçalhos, clique em “+OR” e adicione-os da mesma forma que o primeiro.
- Clique em “Test & Continue” (Testar e Continuar)
- Revise o teste do filtro e, em seguida, clique em “Continuar”
Depois que o filtro for configurado, configure sua ação preferida.
Usando o Cabeçalho Completo do Webhook
Para ter acesso ao cabeçalho, siga as etapas anteriores: selecione “Catch Raw Hook” e, em seguida, adicione um filtro. Configure o filtro para continuar apenas se o Headers Http X Discourse Event corresponder ao evento que você está procurando.
A dificuldade aqui é que o Catch Raw Hook passa o corpo bruto do webhook. A ação final que estou usando precisa de dados analisados do corpo. O que está funcionando para mim é adicionar uma ação de Código após o filtro. No modal da Ação de Código, selecione “Run Javascript” (Executar Javascript):
O Zapier criará um objeto inputData ao qual você pode adicionar propriedades nomeadas. Adicione um nome para sua propriedade na coluna da esquerda. Na coluna da direita, selecione “Catch Raw Hook” no menu suspenso e, em seguida, selecione “Raw Body” (Corpo Bruto):
Role a página para baixo para ver uma entrada de código:
Em seguida, você precisa substituir o código de amostra por um código que analise o Corpo Bruto e retorne um objeto que tenha os valores necessários para sua ação final. Aqui está o código que estou usando. O objeto retornado está sendo usado pela integração com o Salesforce. O Salesforce exige um sobrenome, então, se nenhum sobrenome existir, um erro será retornado:
const parsed = JSON.parse(inputData.raw);
if (parsed.user) {
const user = parsed.user,
name = user.name,
userFields = user.user_fields;
let firstName,
lastName,
company;
if (name) {
const splitName = name.split(' ');
firstName = splitName[0];
lastName = splitName[1]
}
if (userFields) {
company = userFields['10'];
}
if (lastName) {
return {id: user.id,
username: user.username,
lastName: lastName,
firstName: firstName,
email: user.email,
company: company
};
} else {
return {error: "Missing last name"}
}
} else {
return {error: "A user object was not returned"};
}
Para evitar fazer uma solicitação falha na ação final, outro filtro do Zapier pode ser adicionado. Configure esse filtro para continuar apenas se o campo de erro retornado pelo javascript não existir:
Você pode então adicionar sua ação final. Para selecionar os campos a serem usados na ação final, use as propriedades retornadas pela ação Run Javascript.























