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
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.
- 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.
- 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.
- AiOneChatWe find the phone columndone
A column of type
phonewins. If there is not one, a text column called Phone, Mobile, WhatsApp or Number is used instead. Found, not guessed at send time. - 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.
- 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.
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.
monday/item/createdmonday/status/changedmonday/column/changedYour 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.
What they send you and what you send them, posted on the item as monday updates with the number they came from.
If an item is created from a conversation, the number is written into the phone column in the shape that column type expects.
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.
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.
40275290change_status_column_valuenot ourskept40281227create_itemnot ourskept40281228change_column_valuenot ourskept40333141create_itemon our receiptremoved40333143change_column_valueon our receiptremoved40333144change_status_column_valueon our receiptremovedIf 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.
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.
The first message for a number starts the work and the others wait on the very same promise. Three arrivals, one lookup.
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 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.
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_contactsA 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_messagesMessages are posted on the item as monday updates.
Off: Nothing is written up at all, in either direction.
log_outboundThe messages you send are written up too, not just theirs.
Off: Only what the customer sends you is posted.
update_columnsThe 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.
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.
