# Triggers

> The specification of Reply triggers — the built-in When/If/Then automations in Settings, the full catalog of trigger events with their available actions, the conditions that narrow them, and how they behave in Team Edition.

**Triggers are built-in automations configured in Settings → Triggers as When an event fires, If optional conditions match, Then run actions. Seventeen events cover contact, email, call, and LinkedIn activity; actions add to lists, move or remove from sequences, update fields, set stages, pause contacts, or assign owners.**

_Status: Reviewed — human-edited, facts not yet confirmed against the product._

## At a glance

| Aspect | Detail |
| --- | --- |
| **What it is** | A built-in automation that runs one or more actions when a chosen event happens, optionally narrowed by conditions |
| **Belongs to / Contains** | Lives in **Settings → Triggers**; acts on [contacts](/specifications/contacts), their [lists](/specifications/lists), [sequence](/specifications/sequences) membership, fields, stages, and owners |
| **Surfaces** | UI · MCP |
| **Key limit** | **17** trigger events; each event offers its own fixed set of actions |
| **Lifecycle** | Created → named → event picked in **When** → optional conditions in **If** → actions chosen in **Then** → saved → activated with a toggle; some triggers are predefined and already active |
| **Does not** | Run before its toggle is enabled, or react to events outside the catalog below |
| **Plans** | **Assign Owner** actions are marked *TE Only*; **Contact owner** and **Sequence owner** conditions require Team Edition Public support for triggers |

## Definition

Triggers in Reply are built-in automations that run based on specific events or conditions,
such as a contact opening an email or replying to a message. When a certain event or
condition occurs, you define an action — for example, assign a contact stage, move the
contact to a sequence, or remove them from a sequence — so these updates happen
automatically.

For example, if a contact opens an email or clicks a link, you can automatically assign
them the *Interested* contact stage. This identifies engaged prospects and lets you
continue working with them without extra steps.

Some triggers are **predefined** — they exist and work by default rather than being built
by hand. **Account created** is one of them: out of the box it assigns the *New* account
stage to every newly created account. A predefined trigger can be customized, or you can
leave it alone and create your own trigger for a different event, condition, and action
combination.

## Purpose

Triggers remove the manual bookkeeping between an outreach event and the record change it
should cause. They are the mechanism for reacting to engagement (opens, clicks, replies,
LinkedIn acceptances), to failures (bounces, invalid LinkedIn URLs, blocked connection
requests), and to lifecycle events (contact created, contact finished sequence) without a
person watching for them. In Team Edition Public they also remove duplication: one trigger
covers every team member instead of one trigger per person.

## Relationships

| Relationship | Object |
| --- | --- |
| Fires on events from | [Contacts](/specifications/contacts), [sequences](/specifications/sequences), [inbox](/specifications/inbox) categorization, logged calls, and LinkedIn steps |
| Acts on | [Contacts](/specifications/contacts) — their [list](/specifications/lists) membership, sequence membership, custom fields, [stage](/reference/statuses), and owner |
| Also acts on | [Accounts](/specifications/companies) — the **Account created** event sets an account stage |
| Narrowed by | Conditions on sequence, sequence step, contact field, number of views or clicks, inbox category, call resolution, and — in Team Edition — contact owner and sequence owner |
| Scoped by | [Team Edition mode](/specifications/workspaces-and-roles) — Private affects only your contacts, Public can apply to all team contacts |

## Creation

1. Go to **Settings → Triggers**.
2. Click **New trigger** in the upper-right corner.
3. Enter a name for your trigger, then select the event in the **When** section.
4. (Optional) Use the **If** section to add conditions.
5. In the **Then** section, choose the action or actions to perform.
6. Save the trigger and enable the toggle to activate it.

## Configuration

### The When / If / Then structure

Every trigger is built from three parts. **When** selects the single event that starts the
automation. **If** is optional and holds the conditions that must match for the trigger to
proceed — a specific sequence or sequence step, for example — so the automation runs only
for the contacts you want, at the right stage. **Then** holds the actions to perform; a
trigger can carry more than one action.

### Trigger catalog

The full list of trigger events, with descriptions and the actions available for each.

| Trigger | Description | Actions |
| --- | --- | --- |
| Contact created | Activates when a new contact is added. | Move to Sequence, Add to List, Update Contact Field, Set Contact Stage, Assign Owner (TE Only) |
| Contact updated | Activates when a contact's information changes. | Move to Sequence, Remove from Sequence, Add to List, Set Contact Stage, Assign Owner (TE Only) |
| Account created | Triggers when a new account (company) is added. | Set Account Stage (choose from New, Qualified, Meeting Booked, etc.) |
| Contact replied to sequence email | Activates when a contact replies to an email in a sequence. | Add to List, Move to Sequence, Remove from Sequence, Mark as Finished, Update Contact Field, Pause Contact, Assign Owner (TE Only), Set Contact Stage |
| Contact opened sequence email | Activates when a contact opens an email in a sequence. | Mark as Finished, Move to Sequence, Remove from Sequence, Add to List, Update Contact Field, Pause Contact, Assign Owner (TE Only), Set Contact Stage |
| Contact clicked on a link | Triggers when a contact clicks a link in a sequence email. | Add to List, Move to Sequence, Remove from Sequence, Mark as Finished, Update Contact Field, Pause Contact, Assign Owner (TE Only), Set Contact Stage |
| Contact finished sequence | Activates when a contact's status changes to *Finished*, either manually or after a prospect completes all steps in a sequence. | Add to List, Move to Sequence, Remove from Sequence, Update Contact Field, Assign Owner (TE Only), Set Contact Stage |
| Inbox category set for reply | Activates when an Inbox category is set for an email or LinkedIn reply (for example Interested, Not Interested, Do Not Contact). | Add to List, Move to Sequence, Remove from Sequence, Mark as Finished, Update Contact Field, Pause Contact, Assign Owner (TE Only), Set Contact Stage |
| Contact opted out | Activates when a contact unsubscribes from emails. | Add to List, Remove from Sequence, Update Contact Field, Assign Owner (TE Only), Set Contact Stage |
| Call was logged | Activates when a call is completed and logged in your system. | Add to List, Move to Sequence, Remove from Sequence, Mark as Finished, Update Contact Field, Pause Contact, Assign Owner (TE Only), Set Contact Stage |
| Sequence email was sent | Activates when a sequence email is successfully sent. | Add to List, Move to Sequence, Remove from Sequence, Mark as Finished, Update Contact Field, Pause Contact, Assign Owner (TE Only), Set Contact Stage |
| Sequence email was bounced | Activates when a sequence email fails to reach a contact. | Add to List, Move to Sequence, Remove from Sequence, Update Contact Field, Assign Owner (TE Only), Set Contact Stage |
| LinkedIn connection accepted | Activates when a contact accepts an automatic LinkedIn connection request sent as part of a sequence. | Add to List, Move to Sequence, Remove from Sequence, Mark as Finished, Update Contact Field, Pause Contact, Assign Owner (TE Only), Set Contact Stage |
| LinkedIn message reply received | Activates when a contact replies to a LinkedIn message sent as part of a sequence. | Add to List, Move to Sequence, Remove from Sequence, Mark as Finished, Update Contact Field, Pause Contact, Assign Owner (TE Only), Set Contact Stage |
| LinkedIn connection request forbidden due to privacy settings | Activates when a contact in your sequence cannot receive a LinkedIn connection request because their privacy settings block it. | Add to List, Move to Sequence, Remove from Sequence, Mark as Finished, Update Contact Field, Pause Contact, Assign Owner (TE Only), Set Contact Stage |
| LinkedIn connection request forbidden due to lack of email | Activates when a LinkedIn connection request cannot be sent because the contact's email address is missing. Some LinkedIn users restrict connection requests so that only people who know their email address can connect with them. If the email is not available or does not match the email address associated with the contact's LinkedIn account, the connection request cannot be completed, and this trigger is activated. | Add to List, Move to Sequence, Remove from Sequence, Mark as Finished, Update Contact Field, Pause Contact, Assign Owner (TE Only), Set Contact Stage |
| LinkedIn URL is invalid (missing data) | Activates when a contact's LinkedIn URL is invalid or missing, preventing LinkedIn steps in the sequence from running. | Add to List, Move to Sequence, Remove from Sequence, Mark as Finished, Update Contact Field, Pause Contact, Assign Owner (TE Only), Set Contact Stage |

Eleven of the seventeen events share the same eight-action vocabulary — add to a list, move
to a sequence, remove from a sequence, mark as finished, update a contact field, pause the
contact, assign an owner, set a contact stage. Five offer a reduced subset: **Contact
created**, **Contact updated**, **Contact finished sequence**, **Contact opted out**, and
**Sequence email was bounced**. **Account created** is the only event that acts on an
account instead of a contact, and its only action is setting an account stage. Account
stage values are listed in [Statuses](/reference/statuses).

### Conditions

Conditions refine a trigger so the automation runs only for the contacts you want, at the
right stage — a specific sequence or sequence step, for example. The conditions reference
below uses the labels shown in the Team Edition documentation; conditions marked *for TE*
are available only when Team Edition Public support for triggers is enabled.

| Trigger | Conditions |
| --- | --- |
| Contact created | Contact field; Contact owner (for TE) |
| Contact updated | Contact field; Contact owner (for TE) |
| Contact opened sequence email | Number of views; Sequence; Sequence step; Contact field; Contact owner (for TE); Sequence owner (for TE) |
| Contact clicked the link in sequence email | Number of clicks; Sequence; Sequence step; Contact field; Contact owner (for TE); Sequence owner (for TE) |
| Sequence email was categorized | Inbox category; Sequence; Contact field; Contact owner (for TE); Sequence owner (for TE) |
| Call was logged | Call resolution; Contact field; Contact owner (for TE); Sequence owner (for TE, only for calls related to a sequence) |
| Sequence email was replied | Contact field; Sequence; Contact owner (for TE); Sequence owner (for TE) |
| Contact opted out | Contact field; Sequence; Contact owner (for TE); Sequence owner (for TE) |
| Sequence email was sent | Contact field; Sequence; Sequence step; Contact owner (for TE); Sequence owner (for TE) |
| Sequence email was bounced | Contact field; Sequence; Sequence step; Contact owner (for TE); Sequence owner (for TE) |

Three events are labelled differently in the two references. *Contact clicked the link in
sequence email* is the trigger catalog's **Contact clicked on a link**, *Sequence email was
categorized* is **Inbox category set for reply**, and *Sequence email was replied* is
**Contact replied to sequence email**.

**Account created** is documented separately: its **If** section filters newly created
accounts by criteria such as the exact account name, domain, company size, and owner, so
the trigger runs only for accounts that match. Conditions for the LinkedIn events and for
**Contact finished sequence** are not covered by either reference.

### Team Edition behavior

Triggers work in both Team Edition Private and Team Edition Public modes. In Team Edition
Private they affect only your contacts. In Team Edition Public they can apply to all team
contacts: when a team member creates a trigger, it works for the whole team — one trigger
can apply to the sequences of every team member, so a team of ten does not need ten
identical triggers.

When you need something narrower than the whole team, add filters — Country, Contact
owner, Sequence owner, and similar. For example, a trigger can move contacts to a sequence
only when the contact owner is a particular team member. The modes themselves are
specified in [Workspaces and roles](/specifications/workspaces-and-roles).

> Team Edition support for triggers is documented as a beta feature. The conditions marked
> *for TE* in the table above appear only when that support is enabled.

## Processing behavior

A trigger is inert until it is saved and its toggle is enabled. Once active, it evaluates
when its **When** event occurs; if conditions are present in **If**, they must match before
the **Then** actions run. Actions apply automatically to the contact — or, for **Account
created**, to the account — that the event belongs to. Because actions include moving a
contact into another sequence and removing them from the current one, triggers interact
directly with enrollment and stopping rules; see
[Contact enrollment](/behavior/contact-enrollment) and
[Sequence stopping](/behavior/sequence-stopping).

### Worked examples

The following automations show the shape of a typical trigger. Each row is one trigger,
because a trigger listens to exactly one event — flagging both openers and clickers means
building two triggers with the same **Then** action.

| Goal | When | Then |
| --- | --- | --- |
| Stop contacting anyone who unsubscribes | Contact opted out | Remove from Sequence, Set Contact Stage to Do Not Contact |
| Keep LinkedIn steps from failing on bad data | LinkedIn URL is invalid (missing data) | Remove from Sequence |
| Mark warm prospects after a good call | Call was logged (condition: call resolution) | Set Contact Stage to Interested |
| Flag engaged readers | Contact opened sequence email | Set Contact Stage to Interested |
| Flag link clickers | Contact clicked on a link | Set Contact Stage to Interested |
| Stage new accounts from one domain | Account created (condition: domain) | Set Account Stage to Qualified |

## Limits

- **17** trigger events in the catalog; a trigger listens to exactly one event
- Each event offers a fixed action set — you cannot use an action the event does not list
- **Account created** is the only event that acts on an account, and **Set Account Stage** is its only action; it ships as a predefined trigger that assigns the *New* stage by default
- **Assign Owner** is marked *TE Only* on every event that offers it
- **Contact owner** and **Sequence owner** conditions require Team Edition Public support for triggers to be enabled
- **Sequence owner** on **Call was logged** applies only to calls related to a sequence
- A trigger runs only while its toggle is enabled
- The documentation does not state a cap on the number of triggers, a processing delay, or a retry policy for failed actions

## Edge cases

- In Team Edition Public, a trigger created by one member applies to the whole team by default — add Country, Contact owner, or Sequence owner filters when the automation should be narrower.
- In Team Edition Private, the same trigger definition affects only the contacts of the person who created it.
- Two separate events cover LinkedIn connection failures: one for contacts whose privacy settings block the request, one for contacts whose email is missing or does not match the address associated with their LinkedIn account.
- **Contact finished sequence** fires both when a prospect completes every step and when the status is set to *Finished* manually — see [How statuses change](/behavior/status-transitions).
- The trigger catalog and the Team Edition conditions reference use different labels for three of the same events, listed under Conditions above.
- Conditions are not documented for the LinkedIn events or for **Contact finished sequence**; what the **If** section offers for those events is not stated.
- **Account created** already runs as a predefined trigger assigning the *New* account stage — customize it rather than adding a second trigger for the same event if you want a different default stage.

## FAQ

### Where do I create a trigger?

In **Settings → Triggers**. Click **New trigger** in the upper-right corner, name it,
choose the event in **When**, add conditions in **If** if you need them, choose the actions
in **Then**, then save and enable the toggle. A saved trigger with its toggle off does not
run.

### What can a trigger do once it fires?

Depending on the event: add the contact to a list, move them to a sequence, remove them
from a sequence, mark them as finished, update a contact field, pause the contact, set a
contact stage, or assign an owner (Team Edition only). The **Account created** event
instead sets an account stage.

### Can a trigger apply to only one sequence?

Yes, for the events that expose a **Sequence** condition — opens, clicks, categorized
replies, replies, opt-outs, sends, and bounces. Opens, clicks, sends, and bounces can be
narrowed further to a specific sequence step, and opens and clicks can also require a
minimum number of views or clicks.

### How do triggers behave across a team?

In Team Edition Private a trigger affects only your own contacts. In Team Edition Public
it can apply to all team contacts, so one trigger replaces one-per-member duplicates; use
Contact owner or Sequence owner filters to scope it back down. Team Edition support for
triggers is documented as beta.

### Does the Account created trigger need setting up?

No. It is a predefined trigger that works by default and assigns the *New* account stage
as soon as an account is created. To change that, open it and select another stage from the
drop-down — *New*, *Qualified*, *Meeting booked*, *Negotiating*, and the rest — or add
conditions in **If** such as account name, domain, company size, or owner so it stages only
the accounts you care about. **Set account stage** is the only action this event offers.

### Which trigger events cover LinkedIn?

Five: connection accepted, message reply received, connection request forbidden due to
privacy settings, connection request forbidden due to lack of email, and LinkedIn URL is
invalid (missing data). The last three are failure events, useful for pulling contacts with
unusable LinkedIn data out of a sequence — see
[Why LinkedIn steps fail](/troubleshooting/linkedin-steps-fail).

## Related

- [Contacts](/specifications/contacts) · [Lists](/specifications/lists) · [Sequences](/specifications/sequences) · [Companies](/specifications/companies)
- [Statuses](/reference/statuses) — the contact and account stage values a trigger can set
- [How statuses change](/behavior/status-transitions) · [Contact enrollment](/behavior/contact-enrollment) · [Sequence stopping](/behavior/sequence-stopping)
- [Workspaces and roles](/specifications/workspaces-and-roles) — Team Edition Public and Private modes
- [Inbox](/specifications/inbox) · [Reply management](/capabilities/reply-management) — where inbox categories come from
- [Configure account settings](/how-to/configure-account-settings) · [Filter contacts](/how-to/filter-contacts)

## Build with Reply

- REST API: [docs.reply.io](https://docs.reply.io/api-reference/introduction) — check the trigger operations and their status in the reference
- MCP: [agents.reply.io/mcp](https://agents.reply.io/mcp) — an agent can list triggers, inspect one, enable or disable it, and delete it
