Connect Monday.com to Power Automate using API/Free

We have Monday.com subscription but unfortunately, not the Enterprise plan to select the region. As a NFP, we have strict guidelines on where the data can be stored.

I am quite versed with Power Platform, as we have a lot of MS Forms connected to SP List or Power Apps for internal forms with everything connected to Power BI and Approvals.

We are digitising one of the forms where we need to get the e-signature in the form and it has to be anonymous so the public can use. Unfortunately, Microsoft doesn’t offer that feature nor I doubt they ever will.

We started exploring Monday.com Forms and the idea of collecting info but passing it to Power Automate to store and actioning the responses sounded great.

Once again, Power Automate integration is not natively offered and the add-on by a third-party developer is so bloody expensive for what it does. I doubt Monday.com dev team will ever introduce this feature natively as they don’t want to upset their third-party developers contributing and making money off it.

So I went down the API route.

There is very little information on this and the limited forum posts are not explaining things clearly for beginners. So I decided to help all.

My setup: Public submits the form. I have one automation in Monday.com to call a webhook to pass the data to Power Automate. The flow will process the response, store it in a SP list, generate the PDF, email the responder from our system and also, delete the item from Monday.com so the data is not stored internationally.

Steps:

  1. Create the form in Monday.com.

  2. Enable Developer mode in the Monday Labs so you can easily get the column IDs.

  3. Create a Power Automate Flow with “When a HTTP request is received” as the trigger and set the “Who can trigger the flow” to anyone. Unfortunately, this action and HTTP actions required for the rest of the automation need Power Automate Premium licence.

  4. Create a test compose and put the body of the request there, and save.

  5. Once you save the flow, it will generate the HTTP Post URL.

  6. Go to Monday.com, create an Automate to call Webhook when an item is created and put the URL there.

  7. We need to create a Response action back to Monday.com so we can close the loop.

  8. Here, I added a 5-second delay (optional) in parallel for the files to be uploaded successfully.

  9. Submit the form and go to the flow run history to get the body of the HTTP and copy it.

  10. Create an action to Parse JSON, Generate from sample and paste the JSON to create the sample.

  11. You can now create an SP item and use the values from the Parse JSON body. Ensure you follow the proper format as many columns have multiple attributes.
    Example: Dropdown will give the ID and the name; Email will give the text and email.

(Optional) If you have files, the JSON will only return the Asset ID. In order to get the actual file, you need to send an HTTP request to the Monday.com API.

To keep it generic and reusable, I created a Select action to select the Asset ID. Then, a condition to check if the length is more than 0 (you can also use an empty function here).

If so, I join the Asset IDs with a comma and then send the IDs in the body.

You need to send your API key in the header. You can get it from your Monday.com account (monday.com: Where Teams Get Work Done). Same as the previous HTTP body, run the flow, get the body and edit the flow to Parse JSON using the example.

The HTTP will give two attributes - Public URL and then the name.

The Public URL is where the file is. I then apply for each asset, send an HTTP request to get the file from the Public URL and append to my varAttachment array.

You can then add the attachments in an apply to each array value.
PS: It is best to convert the file content to base64 and then back to binary when saving in an array.

Deleting an item from the Monday.com board:

Send an HTTP POST request using your API key and pass the pulse ID to delete the item.

I hope this helps. Let me know if you need any help.

Cheers.