Skip to content

Automation triggers

The trigger is the event that starts an automation. It’s the only step allowed at the top of the flow, and an automation without one won’t save.

There are five, grouped by subject in the Triggers tab of the palette:

TriggerStarts when…Section
Conversation eventthe conversation changes stateConversations
Idle conversationnobody replies after your team’s last messageConversations
Contact taga tag is applied to or removed from the contactContacts
Contact added to lista contact joins a listContacts
Audiencethe scheduled date arrives, for a whole segmentCampaigns

Don’t confuse these with channel triggers. Those are the doors conversations come in through (WhatsApp, website, Telegram). These are the events that start an automation.

The Conversation event trigger configured: the automation starts when the conversation is resolved

You pick which events count, and each one fires on its own, once per conversation:

The seven conversation event options

EventWhen it happens
is createdthe conversation is born
is assigned to someonea teammate becomes responsible
is transferredthe conversation changes hands
is handed to an agentan AI agent takes over
is resolvedthe conversation is closed
is reopeneda resolved conversation goes back to open
has AI turned on or offsomeone toggles AI on that conversation

Careful with “is created”. At that instant the conversation has no tags and no assignee — filters on those fields will never match there.

This is the follow-up trigger. It sweeps stalled conversations and enters the ones that hit the threshold you set:

The Idle conversation trigger, with the sentence about entering a conversation idle for 23 hours

What it counts is the silence after your team’s last message. While the customer was the last one to speak, the conversation doesn’t enter — the reply is owed by you, and a bot writing over that is exactly what nobody wants.

The trigger's safeguards: give up after a while and wait before entering again

  • Give up after a while (maximum age of the silence) — past that limit the conversation counts as lost and the automation stops entering. At 7 days, someone who went quiet 3 days ago gets the follow-up and someone who vanished 2 weeks ago doesn’t. This is what holds back a blast into old history on the day you turn the automation on.
  • Wait before entering again (cooldown) — once the automation finishes on a conversation, it can only re-enter that conversation after this period, including when it ended by cancellation. It’s what stops the same person being nudged over and over.

Both start off. On a sequence going out to many people, turning both on is almost always the right call.

Both Conversation event and Idle conversation accept filters, and they read as a written-out condition. Click Add filter and pick the criterion:

The filter criteria menu: inbox, conversation owner, conversation tag, contact tag, channel and conversation AI

CriterionWhat it narrows
Inboxthe inbox the conversation is in
Conversation ownerwho owns it right now — a teammate or an AI agent. “Nobody” catches what’s in the queue
Conversation tagthe tags on that exchange
Contact tagthe tags on the person’s record
Channelhow the conversation came in
Conversation AIwhether AI is answering, or a human is

Once chosen, the criterion turns into a sentence with the right verb for that subject — “has” / “doesn’t have” for tags, “came in via” / “didn’t come in via” for channel:

A finished filter: Channel came in via WhatsApp

Two rules apply to all of them:

  • Filters add up. The conversation has to match all of them at once. With no filters, it applies to any conversation.
  • A condition with no value won’t save. A filter with a criterion and no value filters nothing, and SquadOS refuses to save it rather than letting it slip by silently.

The Contact tag trigger, with the sentence about a tag being added and applying to any tag

Fires when a tag goes on or off the person’s record. You choose which of the two (Added or Removed) and, if you want, restrict it to specific tags — leaving it empty means any tag.

A tag applied by another automation counts too. The Apply tag step fires this trigger exactly like someone tagging on screen. That’s how you chain automations — and how you create a loop by accident, if two automations tag each other’s trigger.

The Contact added to list trigger, with the sentence about the contact joining any list

Fires when someone joins a contact list, however they got there: import, form or the public lists API. Someone already subscribed doesn’t fire it again.

It’s the only trigger that hands incoming data to the flow: the list name, its identifier and the consent source are available as variables (see Variables).

The Audience trigger, with the required list highlighted and the optional tag narrowing

This is the campaign trigger: instead of reacting to an event, it walks an entire list on the scheduled date and makes each contact enter once.

  • The list is required. Without it the campaign would go out to every contact in the organization, and SquadOS refuses to save.
  • Tags are an optional narrowing inside the list.
  • The list is read at send time — whoever is in it at that moment takes part, not whoever was in it when the campaign was created.

Scheduling lives in the When it sends band:

The campaign schedule: once, with a date and time, in the organization's time zone

It can be once, at a set date and time, or recurring (daily or weekly, at a given hour). In recurring mode the next round schedules itself when the current one finishes. The time is always read in your organization’s time zone.

A time in the past won’t save. Saving a campaign set to a moment that already passed would fire the whole list immediately — SquadOS treats that as an error, not a shortcut.

More than one trigger in the same automation

Section titled “More than one trigger in the same automation”

An automation can have several triggers leading into the same flow — for example, starting both on “conversation resolved” and on “post-sale tag applied”.

Two things change when you do that:

  1. Triggers can’t overlap. If two of them answer to exactly the same events, the automation would run twice for one event — SquadOS asks you to narrow one of them (by inbox, tag or list) or remove one.
  2. Steps only see what every path delivers. Contact tag identifies a contact but not a conversation; Conversation event delivers both. Wired into the same step, what’s left is the contact — and a conversation variable stops being valid there. The fix is to give one of the triggers its own path, or to use the Get the contact’s conversation step first. This is covered in Variables.