The Channel, Last reply, Incoming attachment, Messaging window and Assignment rules — they read where the chat came from, what was written and whether the window is open.
If the same flow runs on both Instagram and WhatsApp, saying the same thing on both is rarely right; and when someone sends a photo instead of text, the flow needs to notice. Channel and message conditions look at the : where it came from, what was written, whether there is an attachment, whether the window is open and whether the chat is assigned to an agent. This article covers five rules one by one: , , , and .
conversation itself
Channel
Last reply
Incoming attachment
Messaging window
Assignment
💡 These rules read the current conversation, not the contact card. Rules that look at the person's lasting information are covered in Contact conditions.
In this article you will find:
The Channel rule
The Last reply rule
The Incoming attachment rule
The Messaging window rule
The Assignment rule
Using the rules together
Limits and known issues
Common mistakes
The Channel rule
The Channel rule asks whether the conversation arrived from Instagram or from WhatsApp.
Choose Channel as the rule kind.
Pick the operator: is or is not.
Pick the channel from the list: Instagram or WhatsApp.
The list only shows channels that are actually connected to the account. If your account has a single channel, the Channel rule does not appear in the rule kinds at all: there is nothing left to ask, every conversation comes from the same place.
On accounts that run both channels, this rule is how you work around the differences between them. A boutique, for example, shows product photos on Instagram as a single swipeable gallery while the WhatsApp branch sends the cards one after another; both branches sit in the same flow with a Channel condition between them.
The Last reply rule
The Last reply rule looks at the most recent text the person wrote. That text is either the message that started the flow or the answer they gave to a "Wait for reply" step.
Choose Last reply as the rule kind.
Pick the operator: equals, contains, doesn't contain, starts with, is empty, is filled.
Type the text to look for on every operator except is empty and is filled (at most 200 characters).
The comparison ignores case and accents, and leading and trailing punctuation and emoji are dropped too. So someone who typed "PRICE?" is caught by a "price" rule. The details are in Comparison operators.
The rule is used to branch on a free-text answer: after "Tell us your size", something like "Last reply · contains · xl". A button tap also counts as the last reply, using the button's title, so the rule works in button flows too.
⚠️ Note: You do not need this rule to start a flow from a keyword; that is what the keyword trigger is for. The Last reply rule separates answers that arrive while the flow is already running. Triggers are covered in Trigger.
The Incoming attachment rule
The Incoming attachment rule looks at whether the last message carried a file, and of what kind.
Choose Incoming attachment as the rule kind.
Pick the operator: is or is not.
Pick the kind from the list: any attachment, image, video, audio or file.
The kinds map like this:
image — A photo. A sticker also counts as an image.
video — A video file.
audio — A voice message or audio file.
file — Documents and other files.
any attachment — Did an attachment of any of the above kinds arrive?
If the last message carries no attachment, no kind matches; the is not operator is true in that case.
Some things are not attachments, and this trips people up: a story, a story mention, a post or Reel share and a WhatsApp approved template are not attachments. If the person shared a post with you, the rule "Incoming attachment · is · image" does not match; the way to catch that case is the post-share trigger.
Example: a tailor asks "Send a photo of the fabric" in the measurement flow. The next condition is "Incoming attachment · is · image"; the True branch thanks them for the photo and assigns the chat to the tailor, and the False branch says "We're expecting a photo, not text."
The Messaging window rule
The Messaging window rule looks at whether the 24 hours since the person's last message have run out. Its operator is open or closed, and it has no other setting.
Why the window matters: while it is open you can send free-form text. After it closes, WhatsApp only accepts approved templates and Instagram delivers nothing at all. This is not a panel limit — it is a restriction on Meta's side and applies to every tool that uses their interface.
The rule is used to protect steps that come after long waits:
A normal message step sits on the open branch.
A Template step for WhatsApp, or nothing at all, sits on the closed branch.
The engine calculates the window; the rule only reads the result. When there is no information at all, the window counts as open — otherwise a message that could have been delivered would be blocked for nothing. The session log records which result the rule decided on, as "open" or "closed".
💡 What the window is, how it reopens and the role of WhatsApp templates are explained in The 24-hour messaging window.
The Assignment rule
The Assignment rule asks whether the conversation is assigned to a team member. Its operator is assigned or unassigned.
The rule is used to keep the automation out of a human's way: if an agent already owns the chat, ending the flow instead of sending an automatic message is usually the right call.
One distinction matters here: assignment and taking over are not the same thing. Assignment answers "who owns this conversation"; taking over is the automation going quiet because an agent wrote. This rule only looks at assignment. Taking over already stops the automation by itself; the details are in Taking over and handing back automation.
When there is no conversation (in a flow running purely from a comment, for example) the rule says unassigned.
Using the rules together
A gym builds its membership renewal reminder like this:
First condition: "Assignment · unassigned" → the flow ends on the False branch, because an advisor is already handling the chat.
Second condition: "Messaging window · open" → a normal message on the True branch, a WhatsApp template on the False branch.
Third condition: "Channel · is · WhatsApp" → two different texts for the two channels.
Three rules sit in three separate steps. The logs show which step picked which branch; squeezed into one step, that readability would be gone.
Limits and known issues
A Last reply value is at most 200 characters.
The Channel rule is listed only while more than one channel is connected to the account.
The Incoming attachment rule looks only at the last message; an attachment that arrived at the start of the flow is no longer read in later rounds.
Stories, story mentions, post shares and WhatsApp templates do not count as attachments.
When there is no Messaging window information, the window counts as open.
A placeholder can be written into the value of the Last reply rule; the Incoming attachment, Channel, Messaging window and Assignment rules do not take one.
Each rule kind is a separate plan feature; if your plan does not cover it, the session stops at that step.
Common mistakes
Mistaking a shared post for an attachment. Post and Reel shares are not attachments; the way to catch them is their own trigger.
Trying to catch a keyword with the Last reply rule. Starting a flow needs a keyword trigger; this rule works while the flow is running.
Leaving the closed-window branch empty. After a long wait the window is most likely closed; with that branch empty the flow ends quietly and nobody hears about it.
Looking for templates in a closed Instagram window. Approved templates exist only on WhatsApp.
Mistaking the Assignment rule for taking over. The automation already stops when an agent writes; you do not need a rule for that.
Treating a sticker as its own kind. A sticker arrives as an image.