Build a Twilio + Monday.com Integration for SMS/Messaging

December 08, 2025
Written by
Alvin Lee
Contributor
Opinions expressed by Twilio contributors are their own
Reviewed by

Build a Twilio + Monday.com Integration for SMS/Messaging

Overview

This integration connects Twilio's SMS platform with M onday.com to enable two-way communication between your project management board and text messages. When items are created or updated in Monday.com, your team gets instant SMS notifications. When someone sends a text to your Twilio number, a new item automatically appears on Monday.com.

There are various scenarios when this integration will be useful:

  • Field teams that need updates without checking apps
  • Customer support scenarios where speed matters
  • Any situation where key stakeholders need to stay informed but aren't always at their desks.

You'll build this using Monday.com webhooks to detect changes, Twilio Functions to handle the logic, and the Monday.com API to create items programmatically.

Prerequisites

Before you begin, make sure you have:

  • A Twilio account with an active phone number
  • A Monday.com account (Standard Plan or higher) with API access
  • Admin permissions on your Monday.com board

High-Level Architecture/What You'll Build

The integration works in two directions, each with its own data flow:

Use Case #1 - SMS Notifications

When something changes in Monday.com, a webhook fires and sends data to your Twilio Function. The function processes that data and uses Twilio's API to send an SMS notification to your team.

Monday.com item created/updated ➜ Monday.com Webhook ➜ Twilio Function ➜ Twilio SMS

Use Case 2 - Item Creation

When someone texts your Twilio number, Twilio routes that message to your function. The function extracts the message content and makes an API call to Monday.com to create a new item on your board.

Incoming SMS ➜ Twilio Phone Number ➜ Twilio Function ➜ Monday.com API

Use Case 1: Send SMS Notifications for Monday.com Updates

Step 1: Get Your Monday.com API Token

Log in to Monday.com, click your profile picture, and select Administration.

Devspotlight dropdown menu with cursor highlighting the Administration option

On the Administration page, navigate to Connections > Personal API token. Click Generate to generate the personal API token. Then, copy it and save it.

Monday.com API token management screen with personal API token and regeneration option visible.

You'll need the API token to authenticate API requests from your Twilio Function to Monday.com.

Step 2: Get Your Monday.com Board ID

Open the board you want to monitor. The Board ID is the number at the end of the URL. For example, in https://yourcompany.monday.com/boards/1234567890, the Board ID would be 1234567890. Save this ID—you'll use it to tell Monday.com which board to watch and where to create new items.

Step 3: Create a Twilio Function for Challenge Verification

In the Twilio Console, go to Functions and Assets > Services. Click Create Service.

Twilio console page showing services tab with a button to create a new service.

Give the new service a name (Example: "Monday-SMS-Integration"). Then, add a new function named /send-notification.

Screenshot of the Twilio function dashboard with a code editor showing a sample function titled 'send-notification'.

First, we need to handle Monday.com's webhook verification. When you create a webhook, Monday.com sends a one-time challenge request to verify you control the endpoint. Your function needs to respond by echoing back the challenge token they send. This is a security measure to prevent unauthorized webhooks from being created.

Modify the function code to echo back the challenge token. Replace the code in the editor window with the following:

exports.handler = function(context, event, callback) {   const response = new Twilio.Response();   response.appendHeader('Content-Type', 'application/json');   response.setStatusCode(200);   response.setBody(event);    const mondayEvent = event.event;   console.log(mondayEvent);        return callback(null, response); };

The event in the Twilio Function signature contains the request parameters that are passed to your Twilio Function. The payload from Monday.com is an object with two sub-objects, called request and event. The challenge request from Monday.com requires the entire payload to be returned, which is why you call response.setBody(event). However, the information you will be interested in for your webhook logic is in event.event, which is why you capture it (as mondayEvent) and log it to the console.

Step 4: Deploy Your Twilio Function

Click Save to save your updated function. Next, change the visibility of the function to Public.

Screenshot of the Twilio Functions interface showing visibility options and code for send-notification function.

Then, click Deploy All and copy the function URL. For example, the function URL may look like this:

Step 5: Create a Monday.com Webhook

Back at Monday.com, open your profile menu and navigate to Automations. Either via the search bar or on the Sync sub page, find the webhooks integration.

Interface showing sync options for project management tools like Asana, Basecamp, GitLab, Trello, and more.

Choose your webhook template. For example: "When an item is deleted, send a webhook."

Interface showing template for sending a webhook when an item is deleted, with a 'Use template' button

Enter your Board ID or select from your existing, available boards. Provide your Twilio Function URL. Click Connect.

User connecting their webhook URL for integration in a web interface by clicking the Connect button.

Monday.com will immediately send a challenge request to verify your endpoint. If your function is set up correctly from Step 3, the webhook will be created successfully and show up in the list of automations for your board.

Interface showing board automation management with an active webhook for item deletion.

Step 6: Update Your Function with SMS Logic

Now that the webhook is created and verified, go back to your Twilio Function and replace the challenge verification logic with the complete SMS notification logic.

Documentation from Monday.com shows examples of the payload from various webhooks. However, you can see the payload of a webhook request in your Twilio Console by turning on "Live logs."

Developer console interface showing copy URL and live logs options, with log toggle switched on.

Then, delete an item from your Monday.com board. The current version of your Twilio Function code will log the payload's event sub-object to the console.

Log showing an app action 'delete_pulse' triggered on Oct 21, 2025, at 12

Examining the payload more closely, you'll see that the information you're interested in for your SMS notification is the type(delete_pulse), itemId, and itemName. Based on this, update your Twilio Function to parse this payload to extract the important information, then compose and send an SMS notification. Your updated Twilio Function code will look like this:

exports.handler = function(context, event, callback) {  const twilio = require('twilio');  const client = twilio(context.ACCOUNT_SID, context.AUTH_TOKEN);   // Parse the Monday.com webhook payload  const mondayEvent = event.event;   // Extract item details from the event  const itemName = mondayEvent?.itemName || 'Unknown item';  const itemId = mondayEvent?.itemId || 'Unknown ID';   // Compose the SMS message  const message = `Monday.com: "${itemName} (${itemId})" was deleted`;   // Send SMS  client.messages    .create({      body: message,      from: context.TWILIO_PHONE_NUMBER,      to: context.NOTIFICATION_PHONE_NUMBER    })    .then(() => {      const response = new Twilio.Response();      response.appendHeader('Content-Type', 'application/json');      response.setBody(JSON.stringify({ success: true }));      response.setStatusCode(200);      callback(null, response);    })    .catch((error) => {      console.error('Error sending SMS:', error);      callback(error);    }); };

To keep this demonstration simple, we have not implemented any authentication in our Twilio Function code. Monday.com does offer the option of authenticating webhook requests with a signed JWT. You would simply need to implement some logic in your Twilio Function code to verify the authenticity of webhook requests.

Step 7: Configure Environment Variables

Navigate to your function's Environment Variables. Add these environment variables to your Twilio Service:

  • TWILIO_PHONE_NUMBER: Your Twilio phone number (Example: +18881234567)
  • NOTIFICATION_PHONE_NUMBER: Where to send notifications (Example: +13102222222)

To use Twilio Programmable Messaging from your Twilio Function, you need access to your Twilio ACCOUNT_SID and AUTH_TOKEN. Ensure that these values are attached to the context by checking the box to "Add my Twilio Credentials to ENV."

Screenshot of Twilio settings panel showing environment variables for phone number and API credentials.

Step 8: Deploy and Test

Click Deploy All again to update your function with the new code. Create an item in Monday.com. Then, delete it.

Task management UI with options menu open, highlighting the 'Delete' button with a hand cursor.

You should receive an SMS within seconds with details about the change.

Chat showing notification about a task deletion from Monday.com on a mobile device.

Congratulations! The first part of your integration was successful!

Use Case 2: Create Monday.com Items from Incoming SMS

Step 1: Create a Second Twilio Function

In your Twilio Service, add another function called /create-item. This function will handle incoming SMS messages and use the Monday.com API to create items. Unlike webhooks, which push data to you, this function needs to make an outbound API call to Monday.com.

exports.handler = function(context, event, callback) {   const https = require('https');      const itemName = event.Body || 'New item from SMS';   const escapedItemName = itemName.replace(/"/g, '\\"');      const query =    `mutation      { create_item (         board_id: ${context.MONDAY_BOARD_ID},          item_name: "${escapedItemName}"       ) { id name }     }`;      const data = JSON.stringify({ query: query });      const options = {     hostname: 'api.monday.com',     path: '/v2',     method: 'POST',     headers: {       'Content-Type': 'application/json',       'Authorization': context.MONDAY_API_TOKEN,       'Content-Length': data.length     }   };      const req = https.request(options, (res) => {     let response = '';          res.on('data', (chunk) => {       response += chunk;     });          res.on('end', () => {       const twiml = new Twilio.twiml.MessagingResponse();       twiml.message('Item created in Monday.com!');       callback(null, twiml);     });   });      req.on('error', (error) => {     const twiml = new Twilio.twiml.MessagingResponse();     twiml.message('Error creating item. Please try again.');     callback(null, twiml);   });      req.write(data);   req.end(); };

Save your function. Change the visibility of the function to Public.

Step 2: Add Monday.com Environment Variables

Add these to your environment variables:

  • MONDAY_API_TOKEN: Your Monday.com API token from Part 1, Step 1
  • MONDAY_BOARD_ID: Your Board ID from Part 1, Step 2

These tell your function how to authenticate with Monday.com and which board should receive new items.

Step 3: Deploy the Updated Service

Click Deploy All again.

Step 4: Configure Your Twilio Phone Number

In the Twilio Console, go to Phone Numbers > Manage > Active Numbers. Select your number. Under Messaging Configuration, set "A message comes in" to your Function, Service, and the /create-item function.

Screenshot showing settings for function integration on Monday.com, with fields for message, service, environment, and function path.

This tells Twilio to route all incoming SMS messages to your function rather than the default SMS handler.

Click Save Configuration.

Step 5: Test the Item Creation Flow

Send an SMS to your Twilio number.

Screenshot of SMS chat with an image link about a deleted task notification from Monday.com.

A new item will appear on your board in Monday.com. You should also receive an SMS reply confirmation (assuming your Twilio Phone Number is configured correctly to send outgoing messages).

Screenshot of a task management system showing tasks in Sprint 1 and Backlog sections.

What's Next?

Expand your integration with:

  • Custom column values for priority, assignees, or status
  • Parsing the SMS body for keywords to route messages to different boards
  • Phone number authentication to control who can create items
  • Richer notifications with more Monday.com details

Summary

You've built a two-way integration between Twilio and Monday.com. Your team gets SMS notifications when items change, and anyone can create items by sending a text. This is perfect for teams that need to stay connected without constantly checking apps.