Como podemos ajudar?

Integração com o Webhook

 

Screen_Shot_2020-03-08_at_17.47.27.png

A monday.com permite enviar um webhook através das nossas integrações — ou você pode até mesmo criá-los por meio da API. É possível enviar um webhook sempre que um evento escolhido ocorrer em seu quadro. Continue lendo para saber mais.

 

O que é um webhook?

Webhook (também chamado de web callback ou API push HTTP) é uma forma de um aplicativo fornecer informações em tempo real a outros aplicativos. Um webhook fornece dados para outros aplicativos à medida que uma mudança acontece, o que significa que você obtém dados imediatamente, ao contrário de APIs típicas, em que você precisaria pesquisar dados com muita frequência para obtê-los em tempo real. Isso torna os webhooks muito mais eficientes tanto para o fornecedor quanto para o consumidor.

 

Sempre que você tentar criar um novo webhook na monday.com, enviaremos um desafio JSON ao seu URL fornecido para verificar se você tem controle sobre o endpoint. Continue lendo para saber como seu aplicativo deve responder!

 

Como criar um novo webhook 

Etapa 1

No seu quadro, clique no ícone "Integrações" e procure o aplicativo "Webhooks" na Central de Integrações.

Group_93.png

Na central de integrações, pesquise e clique em Webhooks conforme abaixo: 

Group_94.png

 

Etapa 2

Escolha a ação sobre a qual deseja receber payloads instantâneos:

image_5__5_.png

 

Etapa 3

Após escolher a ação necessária, você precisará especificar o URL. O URL deve ser capaz de repassar o desafio JSON, e será o receptor dos payloads desse momento em diante:

image_5__6_.png

E pronto! Assim que essa mudança ocorrer (por exemplo, um novo elemento é adicionado ao seu quadro), seu endpoint receberá um payload a respeito da alteração. Você pode conferir alguns payloads mais abaixo.

 

Como verificar um URL do webhook

Seu URL especificado deve ser, obviamente, controlado pelo seu aplicativo. Nossa plataforma faz essa verificação enviando um desafio JSON para seu endpoint, e seu aplicativo deve responder de volta com o mesmo desafio.

Enviaremos um corpo JSON POST contendo um campo "challenge". Trata-se de um token aleatório que esperamos que você retorne como um campo "challenge" do seu corpo de resposta JSON para essa solicitação.

O "Challenge" fica assim:

{
challenge: “3eZbrw1aBm2rZgRNFdxV2595E9CY3gmdALWMmHkvFXO7tYXAYM8P”
}

 

O corpo de resposta deve ser um corpo JSON POST idêntico:

{
challenge: “3eZbrw1aBm2rZgRNFdxV2595E9CY3gmdALWMmHkvFXO7tYXAYM8P”
}

 

Aqui está um exemplo simples de um monitor de webhook que imprimirá o resultado do webhook e responderá corretamente ao desafio:

app.post("/", function(req, res) { console.log(JSON.stringify(req.body, 0, 2)); res.status(200).send(req.body);})

 

Como serão os dados do evento?

Cada webhook enviado ao seu endpoint incluirá um campo de evento em seu corpo. Esse campo conterá o payload com os dados do evento.

 
Abaixo estão alguns exemplos de como eles seriam:
create_item - sample payload:
{
 "event": {
  "userId": 9603417,
  "originalTriggerUuid": null,
  "boardId": 1771812698,
  "pulseId": 1772099344,
  "pulseName": "Create_item webhook",
  "groupId": "topics",
  "groupName": "Group Title",
  "groupColor": "#579bfc",
  "isTopGroup": true,
  "columnValues": {},
  "app": "monday",
  "type": "create_pulse",
  "triggerTime": "2021-10-11T09:07:28.210Z",
  "subscriptionId": 73759690,
  "triggerUuid": "b5ed2e17c530f43668de130142445cba"
 }

Mudança de valor da coluna (específica, ou qualquer mudança de valor da coluna) - exemplo de payload

Isso incluirá o valor anterior, ID da coluna e valor atual.

"event": {
  "userId": 9603417,
  "originalTriggerUuid": null,
  "boardId": 1771812698,
  "groupId": "topics",
  "pulseId": 1771812728,
  "pulseName": "Crate_item webhook",
 "columnId": "date4",
  "columnType": "date",
  "columnTitle": "Date",
  "value": {
   "date": "2021-10-11",
   "icon": null,
   "time": null
  },
  "previousValue": null,
  "changedAt": 1633943701.9457765,
  "isTopGroup": true,
  "app": "monday",
  "type": "update_column_value",
  "triggerTime": "2021-10-11T09:15:03.429Z",
  "subscriptionId": 73760484,
  "triggerUuid": "645fc8d8709d35718f1ae00ceded91e9"
 }

 

Create_update - exemplo de payload:

"event": {
  "userId": 9603417,
  "originalTriggerUuid": null,
  "boardId": 1771812698,
  "pulseId": 1771812728,
  "body": "<p>create_update webhook</p>",
  "textBody": "create_update webhook",
  "updateId": 1190616585,
  "replyId": null,
  "app": "monday",
  "type": "create_update",
  "triggerTime": "2021-10-11T09:18:57.368Z",
  "subscriptionId": 73760983,
  "triggerUuid": "6119292e27abcc571f90ea4177e94973"
 }

 

 

Mudança de status - exemplo de payload:

"event": {
  "userId": 9603417,
  "originalTriggerUuid": null,
  "boardId": 1771812698,
  "groupId": "topics",
  "pulseId": 1772099344,
  "pulseName": "Create_item webhook",
  "columnId": "status",
  "columnType": "color",
  "columnTitle": "Status",
  "value": {
   "label": {
    "index": 3,
    "text": "Status change wbhook",
    "style": {
     "color": "#0086c0",
     "border": "#3DB0DF",
     "var_name": "blue-links"
    }
   },
  "post_id": null
  },
  "previousValue": null,
  "changedAt": 1633944017.473193,
  "isTopGroup": true,
  "app": "monday",
  "type": "update_column_value",
  "triggerTime": "2021-10-11T09:20:18.022Z",
  "subscriptionId": 73761176,
  "triggerUuid": "504b2eb76c80f672a18f892c0f700e41"
 }

 

 

Os webhooks de subelementos são quase idênticos, mas também incluirão o parent_item_id em seu payload. Aqui estão alguns exemplos:

create_item - exemplo de payload:

"event": {
  "userId": 9603417,
  "originalTriggerUuid": null,
  "boardId": 1772135370,
  "pulseId": 1772139123,
 "pulseName": "sub-item",
  "groupId": "topics",
  "groupName": "Subitems",
  "groupColor": "#579bfc",
  "isTopGroup": true,
  "columnValues": {},
  "app": "monday",
  "type": "create_pulse",
  "triggerTime": "2021-10-11T09:24:51.835Z",
  "subscriptionId": 73761697,
  "triggerUuid": "5c28578c66653a87b00a80aa4f7a6ce3",
  "parentItemId": "1771812716",
  "parentItemBoardId": "1771812698"
 }

 

 

Mais ajuda

Se você precisar de ajuda para criar integrações personalizadas, também temos uma opção de ajuda paga por meio de nossa rede de parceiros certificados da monday.com. Se você tiver interesse, preencha este formulário, e entraremos em contato em breve!

 

 

Se você tiver alguma dúvida, entre em contato com nossa equipe por aqui. Estamos disponíveis 24 horas e prontos para ajudar!