There is only one thing you need to know before building automations: what the panel does, in order, when a message arrives. Once you know it, you can answer "why didn't the reply go out", "why did it go twice" and "why did that flow run instead of this one" on your own. This article walks the road in five stops.
💡 This article explains concepts, it does not set anything up. Connecting an account and publishing your first flow are covered in the full setup guide.
1. The message reaches the panel
When someone sends an Instagram DM, leaves a comment under your post, or messages your WhatsApp number, Meta notifies the panel immediately. The panel does not poll Meta asking "any new messages?" — Meta pushes the event. That is why replies can go out within seconds.
The events the panel recognises are not only plain messages:
Message — the text the person typed, or a photo, video or voice note they sent.
Button — a tap on a button in a message you sent earlier.
Post comment — a comment under a post, a Reel or a live video.
Story reply and story mention.
Mention — someone naming you in another person's post or comment.
Post share — the person sending a post or Reel into the DM.
Link / ad — a chat that started from an ig.me, m.me or wa.me link, a QR code or an ad.
If the account's connection is broken, none of it arrives. The panel says so in the red band at the top and shows a Reconnect link.
2. Records are created
The moment the event enters the panel, three records are created or updated:
Contact — if it comes from someone who never wrote before, a new contact record opens; their name, username and profile picture are read from the channel. These are refreshed once they get stale (about a week).
Conversation — the thread with that person. Its open/closed state, assigned agent and unread count live here.
Message — a single line of the thread. This is the bubble you see in the inbox.
This step always runs: even with no automations at all, the message lands in your inbox and the person is added to your contact list. Automation is a layer on top of the inbox, not a replacement for it.
⚠️ Note: Even if Meta sends the same event twice, the record is not duplicated. The panel recognises each message by its own id and ignores the second copy.
3. The message enters a queue
Once the records exist, the message is not handed straight to a flow; it is written into a queue first. The queue is per contact, and its rules are these:
Two messages from the same person are never processed at the same time. If a customer sends three messages in a row, all three are handled in order and none is dropped.
A message that arrives while the flow is busy with a step is not lost; it waits its turn.
The same message is never processed twice.
If an agent has taken over the conversation, that person's queued messages are never handed to the flow. The customer does not get an answer from a human and a bot at once.
A message that has waited too long in the queue is skipped. An automatic reply half an hour late only confuses people; the panel records it and moves on.
This queue is why "the bot gets confused when the customer types fast" is not a problem here.
4. The right automation is chosen
When its turn comes, the engine looks at the triggers of the live automations on the account and finds the ones that match the event. If more than one matches, the narrower one wins. The ranking works like this:
A specific target picked in the trigger (comments on this post, chats from this ad id) outweighs everything else.
Then comes the keyword match mode: exact > whole word > starts with > contains.
Then comes a narrowed source (post comments only, live only; ads only, QR only).
If everything ties, the oldest automation wins.
So a rule saying "every comment on this post" beats a rule saying "all posts + the word price". If your flows are stepping on each other, look at this ranking first.
There is also an interruption rule. Keyword, comment, mention, story, share and link triggers are explicit triggers: even if the person is in the middle of another flow, they cut it off and start the new one. "Any message" and "default reply" only run for an idle contact, so they never break a conversation in progress.
5. Steps run and the reply goes out
The matching flow starts running from its beginning. Steps fall into three families:
Steps that send — text, card, gallery, media, list, approved template, data collection and virtual try-on. Anything that puts something in front of the person.
Steps that decide — conditions (does the contact have this tag, are we inside business hours, is this their first message), random split, wait.
Steps that write to the record — add or remove a tag, fill a field, assign the conversation, close it, hand it to an agent, send a notification.
Before every sending step the panel checks the messaging window. From the moment the person last wrote to you, you can exchange messages freely for 24 hours. Once the window closes, nothing goes out on Instagram; on WhatsApp only a pre-approved template does. The panel never forces the window — it skips the step and records the reason.
The rule for a message born from a comment is separate: one private message per comment, within 7 days of that comment. That right is independent of the 24-hour window.
When the flow ends, two things remain: the changes on the contact's card (tags, fields) and the run log. Open the run log from Automations › an automation › Logs to see step by step what happened. When something did not go the way you expected, this is the first place to look.
One example, end to end
Let us follow the road through a single event. A café shared its new menu on Instagram and a comment saying "do you take reservations?" arrived under the post.
The event arrives. Meta notifies the panel of the comment. Its id, the post's id and the text come with it.
Records are created. The person who commented is added to the contact list; their name and username are read from Instagram.
It enters the queue. With no other messages waiting from that person, their turn comes immediately.
An automation is chosen. Two of the café's flows match: "all posts + the word reservation" and "every comment on this menu post". The second wins because it names a specific post.
Steps run. The flow first uses a Reply to comment step to write "sent you a DM 💌" under the comment. Then a Message step sends a private DM: reservation hours and a Book a table button. Then an Action step writes the tag reservation interest onto the contact.
It is logged. The session completes; every step appears in order on the Logs tab.
If the customer writes "would 8pm work?" the next day, that is a new event and starts again from stop one. The private-message right born from that comment is spent; but because the customer has now sent you a DM, the 24-hour messaging window is open and you can talk freely.
What else runs alongside
Beyond flows, two more mechanisms watch the same events:
Out-of-hours reply — if the account has business hours defined and the message arrives outside them, a single informational message goes out.
Rules and sequences — account-wide rules such as "when a new contact is added, do this", and message sequences spread over time. These are not tied to a single flow.
Once you can picture this road, move on to the setup guide, connect your own account and publish your first flow.