Actions
Actions are what the automation does once the trigger fires. They live in the Actions tab of the palette, grouped by subject:


| Action | What it does |
|---|---|
| Analyze with AI | reads the conversation, classifies it and extracts data |
| Send message | writes in the conversation’s own channel |
| Send email | sends email to a list |
| Apply tag | adds or removes tags on the contact’s record |
| Store on contact | saves a value into a field on the record |
| Tag the conversation | adds or removes tags on that exchange |
| Get the contact’s conversation | continues the conversation the contact already has, or opens a new one |
| Assign | sets who on the team handles the conversation |
| Hand to agent | swaps the AI agent on the conversation |
| Resolve | closes the conversation |
| Call webhook | sends data to an external system |
Send message
Section titled “Send message”
Writes to the customer through the same channel the conversation is on — there’s no channel to choose, it’s the conversation’s. The text accepts variables, and the Insert variable button only shows the ones valid at that point in the flow.
This step needs a conversation. A flow that starts from a tag or a list doesn’t have one — use Get the contact’s conversation before it.
Outside the 24h window
Section titled “Outside the 24h window”After 24 hours without a reply from the contact, WhatsApp Official and Instagram Direct only accept messages built from an approved template. The Outside the 24h window band is where you pick which template to use in that case.
With no template chosen, the step simply doesn’t send — and the reason shows up in the run log. That’s not a failure: it’s SquadOS following Meta’s rule instead of attempting a send that would be rejected.
The sending safeguards apply to this step: opt-out, snoozed conversation, customer waiting on a reply, and the cap of 3 automated messages per contact every 24 hours.
Send email
Section titled “Send email”
Unlike Send message, this step doesn’t depend on the conversation: it goes out to a contact list, optionally narrowed by tags.
- Subject accepts variables.
- Format chooses between plain text and HTML.
- Body you write right there, with flow variables, or reuse the content of an email campaign your team already wrote.
Email has no 24-hour window — that rule belongs to Meta’s channels. The other safeguards still apply.
Apply tag and Tag the conversation
Section titled “Apply tag and Tag the conversation”Two similar steps that mark different things, and the difference matters:
- Apply tag touches the tags on the person’s record — they hold across every conversation of theirs, now and later.
- Tag the conversation touches the tags on that exchange — they describe the subject and survive a transfer.
Each one takes a list to add and another to remove, in the same pass.
Applying a contact tag here fires the Contact tag trigger on other automations. That’s how flows get chained — and how a loop gets created by accident.
Store on contact
Section titled “Store on contact”Saves a value into a field on the contact’s record: city, company, source. The field name is fixed, written by you; the value accepts variables from earlier steps.
It’s the natural partner of Analyze with AI: the AI extracts the information from the conversation, this step writes it to the contact.
Get the contact’s conversation
Section titled “Get the contact’s conversation”This step exists for one specific reason: flows that start from a contact have no conversation. Contact tag, list membership and audience campaigns identify a person, not an exchange — and steps like Send message, Assign or Resolve need one.
Get the contact’s conversation solves that: it looks for the conversation that contact already has in the chosen inbox and, if there isn’t one, opens a new one. From that point on, every following step has a conversation — including conversation variables.
You pick the inbox and, optionally, a title for the conversation. Without a title, SquadOS picks one.
Assign, Hand to agent and Resolve
Section titled “Assign, Hand to agent and Resolve”All three deal with who’s taking care of the conversation:
- Assign sets the teammate responsible. Choosing “Nobody” returns the conversation to the queue.
- Hand to agent swaps the AI agent handling the conversation. The Instruction for the agent field is a note that travels with the handover — the customer never sees this text.
- Resolve closes the conversation. You choose whether it goes back to AI or stays with the human. Conversation states are explained in Conversation states.
Call webhook
Section titled “Call webhook”
Sends data to an external system: a CRM, a spreadsheet, a flow in your own backend.
- URL — the address that receives the call; accepts variables.
- Method — GET, POST, PUT, PATCH or DELETE. When in doubt, POST.
- Headers — key/value pairs, for an auth token, for example.
- Request body — what gets sent, with variables from earlier steps.
Not every address is accepted. Internal network addresses and the project’s own domain are rejected, for security. If SquadOS deactivates the automation with the reason “the address configured to receive the data isn’t allowed”, that’s what happened.
End isn’t an action
Section titled “End isn’t an action”The End step lives in the Rules tab, not here — it doesn’t do anything in the world, it just finishes the flow on that branch. It’s described in Flow rules.