[SOLVED] Connecting Monday.com webhook to Bubble

SOLUTION: Big thanks to @doug.burden & @jonah.deleseleuc for working through this with me. In order to get a webhook from Monday.com to work with Bubble the following is needed:

Setup your call as follows and use the “detect data” feature to initialize your call. This will allow you to get the Challenge token and return it accurately.

Once you have the Challenge token as a response type, set up “Return data from API” action in the workflow exactly as follows:

Then rerun the webhook connection on Monday.com (be sure to remove “/initialize” from the URL) and you should connect. You’ll be able to setup a webhook as normal now.


Original Question:
I’ve been trying to validate a webhook coming from Monday.com and can’t seem to get the proper response sent back to Monday.com for verification. I’ve set up a backend API to receive the webhook as follows:

And set up a Return data from API action:

Yet every time I attempt to initialize the webhook I get this response from monday:

I know this question has been asked for a lot of other services, and I’ve tried every suggestion, but I can’t crack this one. Any insight would be appreciated.

Link to Monday docs: Webhooks

2 Likes

You’re gonna wanna use detect data as apposed to manual definition, then use the url the detect data provides you to initialize the response. And unless you’re sending data to a requester, you don’t need the return data from api action

Thanks for the response, Doug. I tried using ‘detect data’ initially with the same result. I should have mentioned that.

Monday.com requires validation in the form of a response. The response is to send back the exact JSON POST body as it sends. For example:

Originally, I used ‘detect data’ and returned the raw body text that was sent. That still didn’t work.

1 Like

I see. Do you have an endpoint to send the challenge to? You’ll need to make your own post request via api connector sounds like

1 Like

Hey Nate!

One time I had to do something very similar. The solution for me was to create an arbitrary text and recreate the JSON perfectly (and I mean down to the correct spaces). Then when the api request comes in, return the JSON (arbitrary text)

From what I can tell Monday doesn’t give an endpoint to send the response to. It just says to respond directly to the request. But maybe I’m missing something.

I’ve tried returning the raw body text, writing it out in plain text, and inputting it in arbitrary text as well. I’m not getting any events in the server logs when trying to connect this webhook, so I have no way to see what errors it’s throwing.

What url are you giving to Monday? you can leave the beginning part out.

Btw, have you tested your url with Postman?

I see. Then in your return data from api action you’ll do result of step1 challenge:format as text

Inside format as text could read

{“challenge”: “the challeneg”}

I think the problem is, the result is a nested object from the data you’re returning. So perhaps it’s failing at parsing it.

If Monday expects {
“challenge”: “<the_challenge>”
}

From bubble it’s actually getting

{
“data”:
“status”: “success”,
“result”: {
“challenge”: “<the_challenge>”
}
}

Thanks for the idea to run it in Postman, I don’t know why that didn’t cross my mind. I was able to send a challenge in Postman and this is the response I received:

Monday is expecting the following exact response (arbitrary challenge token is noted here):

Is there a way to send a response body without the “status”: “success”?

I just noticed that! Thank you. Do you know how I should send a response then?

Let me try something

Hold up. I got it to work. Let me write up a solution.

1 Like

Try returning text instead of JSON with format as text

We out here, baby

1 Like

Glad you got it to work. Hot tip: always get it to work in postman first

1 Like

UPDATE! (I couldn’t edit the original post, so hopefully you find this if you need it)

@claverdiere ran into an issue with my instructions and was able to find a solution. If anyone doesn’t know where to get the payload of the event info after connecting to Monday.

Original Issue posed by @claverdiere:

I get the Monday integration setup and initialized with this post, but am at a loss for where to get the payload of event info after that.

I was absolutely zero help in finding a solution, so they went and found it themselves. Here is what @claverdiere figured out:

After you do the initial initialization (that your post goes over), you need to go back to the backend workflow’s ‘Modify Types’ > scroll down to ‘show raw data’ and click that > click ‘edit raw data’ > paste in the applicable sample payload from the documentation (Webhooks) in place of the ‘challenge’ payload.

Thanks for your contribution to this, @claverdiere!