AiOneChat
monday.com

A cell changes. A message goes.

monday does not talk to WhatsApp, and WhatsApp does not talk to monday. AiOneChat sits between them: your board posts the change to us, we read the number off its phone column, pick the template for that trigger and send it, and when the customer answers we write it back onto the same item.

  • A token and a board id
  • Webhooks registered for you
  • Both directions
Leadsmonday.com
ItemStatusPhone
Priya ShahNewQualified98765 00011
Update WhatsApp from +91 98765 00011: “Yes, send details”
webhook
update
AiOneChatdoes the work
Webhook inmonday/status/changed
Number readfrom the Phone column
Template chosenname / new / previous
SentWhatsApp Business API
Reply written upupdate on item 112
template
reply
Template sent
Hi Priya Shah, you are now Qualified (was New).
Yes, send details
How it connects

Five things happen. You do the first one.

From pasting a token to the first message leaving, in the order it really happens. You never open monday’s webhook settings, and you never have to work out which column holds the phone number.

  1. YouYou paste a token and a board iddone

    An API token from your monday account and the id of the board you want. Nothing else is required. If your phone column is named something unusual you can name it here, but you rarely need to.

  2. AiOneChatWe read the board's columnsdone

    We ask monday for the board and get its real column set back, with each column’s id, title and type. That is how everything after this knows where to write.

  3. AiOneChatWe find the phone columndone

    A column of type phone wins. If there is not one, a text column called Phone, Mobile, WhatsApp or Number is used instead. Found, not guessed at send time.

  4. AiOneChatWe register three webhooks for youdone

    monday will not accept a webhook until it has POSTed a challenge to the URL and had it echoed back. Ours answers, so all three register from our side. You never open monday’s webhook settings.

  5. AiOneChatBoth directions are opendone

    A cell changing on the board can now fire a WhatsApp template, and a WhatsApp conversation lands on the matching item as an update. Turn either half off whenever you like.

Four of those five are ours. Your part is the first one.

What travels

Three ways out. One way back.

Each board event sends its own variables, in its own order. They are not the same three for every event, which is why the dashboard shows you the list under each trigger instead of making you guess.

Board to WhatsAppthree events, each with its own variables
A new item lands on the boardmonday/item/created
{{1}}name{{2}}group or board
A status column changesmonday/status/changed
{{1}}name{{2}}new status{{3}}previous status
Any other column changesmonday/column/changed
{{1}}name{{2}}column{{3}}new value

Your approved template must accept exactly as many body variables as the event sends. The dashboard prints the list under each trigger, so you are never guessing.

WhatsApp to boardwritten onto the matching item
Every message becomes an update

What they send you and what you send them, posted on the item as monday updates with the number they came from.

The phone column gets filled

If an item is created from a conversation, the number is written into the phone column in the shape that column type expects.

A last-message column stays current

Name a column for it and the newest message text is kept there, so the board itself shows where each conversation stands.

Nothing here sends a message, so nothing here costs anything. It is bookkeeping, and it is priced as such.

An awkward detail

monday will not tell anyone where a webhook points.

Ask monday for the webhooks on a board and you get back an id and an event type. No URL. So if you have a create_item webhook of your own, pointing at your Zapier or your own server, nothing in that answer distinguishes it from ours.

A connector that tidies up by matching on event type will delete yours the moment you reconnect it. We do not guess: we write down the id of every webhook we create, and those are the only ones we ever remove.

What monday returnsan id and an event. No URL, ever.
40275290change_status_column_valuenot ourskept
40281227create_itemnot ourskept
40281228change_column_valuenot ourskept
40333141create_itemon our receiptremoved
40333143change_column_valueon our receiptremoved
40333144change_status_column_valueon our receiptremoved
Three fresh ones registered, and their ids written down.

If we have no receipt, we remove nothing. A spare copy of ours is a much smaller problem than quietly deleting a webhook you set up yourself, and monday refuses an identical URL and event anyway.

The duplicate problem

Three messages at once. One item on the board.

monday has no create-or-update. There is no way to say “the item with this phone number, or a new one” in a single call, so two messages a moment apart would both look, both miss, and both create. The guard has to be ours.

+91 98765 00011
+91 98765 00011
+91 98765 00011
three at once
Priya Shah
item 112
created once
An in-flight lock
per phone number

The first message for a number starts the work and the others wait on the very same promise. Three arrivals, one lookup.

A short-lived cache
in this process

Once an item id is known it is remembered for a few minutes, so a burst of messages never asks monday the same question twice.

The id on the contact
written to the database

The item id is stored against the contact, so a restart does not forget. If the item was deleted in monday, the stale id is replaced rather than crashing.

Your board, your rules

Four switches, and what each one stops.

A board is someone’s working surface, so none of this is all-or-nothing. Turn off the half you do not want and the other half keeps running.

sync_contacts

A number we have never seen gets a new item on the board.

Off: Nothing new is created. Conversations with people already on the board are still written up.

log_messages

Messages are posted on the item as monday updates.

Off: Nothing is written up at all, in either direction.

log_outbound

The messages you send are written up too, not just theirs.

Off: Only what the customer sends you is posted.

update_columns

The phone and last-message columns are kept current.

Off: The columns are left exactly as you have them. Updates still post.

If your monday token is ever revoked, the integration marks itself as in error and stops calling monday rather than retrying into a wall. You will see it on the integration page, with the reason.

Ready when you are

Let the board do the talking.

A token and a board id. We read the columns, find the phone, register the webhooks, and then you choose which cell changes are worth a message.