# Workflows

> Automate follow-ups, updates, notifications, and inbox replies with visual trigger-and-action workflows.

Workflows do routine work for you. Each workflow starts from one **trigger** (something that happens, like a deal being won), can check **conditions**, wait with **delays**, and then runs **actions** (like creating a task or sending an email).

For example: when a deal is won, create an onboarding task for the owner, wait one day, then post a message in the team's chat channel.

Open **Configuration → Workflows**. You need the Workflows module and the **Workflows → View** permission. Creating, editing, publishing, and deleting need the matching Workflows permissions.

## The workflow list

The list shows every workflow with its status and trigger module. Search by name, or filter by module and status.

| Status | Meaning |
|---|---|
| Draft | Being built. Not running. |
| Active | Published and running on new triggers |
| Paused | Stopped. Keeps its setup and can be resumed. |
| Archived | No longer in use |

Use the row menu to **Edit Details**, **Open Builder**, **Duplicate**, or delete a workflow. **Execution History** opens the log of every run (see [Runs and history](#runs-and-history)).

## Create a workflow

1. Click **Create Workflow**.
2. Enter a **Name** and an optional **Description**, and choose the **Trigger Module**.
3. Open the builder.
4. Drag a **Trigger** onto the canvas and choose what starts the workflow.
5. Add **Condition**, **Delay**, and **Action** steps and connect them in order.
6. Click a step to configure it. Use the **Test** tab to check it against a real record (see [Test a workflow](#test-a-workflow)).
7. Click **Save**, then **Publish**.

A workflow has exactly one trigger, and the trigger must connect to at least one step before you can publish.

## Steps

| Step | What it does |
|---|---|
| Trigger | What starts the workflow. Only one per workflow. |
| Condition | Checks the record and continues down the **Yes** or **No** branch |
| Delay | Waits a number of minutes, hours, or days before the next step |
| Action | Does something: creates, updates, notifies, or replies |

### Triggers

Pick a trigger from the searchable list. Triggers are grouped by object:

| Group | Triggers |
|---|---|
| General | Schedule, Property Changed, Record Archived, Association Added, Association Removed |
| Contacts and accounts | Created, Updated |
| Deals | Created, Updated, Stage Changed, Won, Lost |
| Projects | Created, Updated, Status Changed |
| Price Offers | Created, Updated, Approved, Sent, Signed, Expired |
| Requests | Submitted, Approved, Rejected |
| Tickets | Created, Updated, Status Changed, SLA Warning, SLA Breached |
| Appointments | Created, Updated, Status Changed, Cancelled, Checked Out |
| Activities | Created, Completed, Due, Overdue, Reminder Due |
| Forms | Form Submitted |
| Invoices | Created, Updated, Status Changed, Overdue, Installment Due Soon, Installment Overdue, Payment Received |
| Orders | Created, Updated |
| Listings | Created, Updated, Stage Changed |
| Subscriptions | Created, Updated, Status Changed, Renewed, Canceled |
| Loyalty | Points Earned, Points Redeemed, Tier Changed, Reward Unlocked, Points Expiring Soon, Challenge Completed |
| Segments | Record Entered Segment, Record Left Segment |
| Email | Email Opened, Link Clicked, Replied, Bounced |
| Inbox | Message Received, Comment Received, Conversation Created, Conversation Assigned, Conversation Closed, Reply Sent, Call Missed |

**Schedule** runs the workflow on a timer: **Every Hour**, **Every Day**, **Every Week**, or **Every Month**, at the time you choose. **SLA Warning** fires 15 minutes before a ticket SLA target is missed.

### Conditions

A condition checks one thing and sends the record down **Yes** or **No**:

- **Property Condition**: compare any native or custom property. The operators match the field type, for example **Contains** and **Starts With** for text, **Greater Than** for numbers, **Before** and **After** for dates, and **Is Any Of** for choice fields. Every type supports **Is Empty** and **Is Not Empty**.
- **Owner Is** and **Status Is**.
- For inbox triggers: **Message Contains Keywords**, **Message Is Exactly**, **Message Contains a Link**, **Message Contains Only Emojis**, **Message Contains Only Mentions**, and **Channel Is**.

Older workflows can still show legacy conditions such as **Field Equals**. They keep working; use **Property Condition** for new steps.

### Actions

| Group | Actions |
|---|---|
| Create records | Create Record, Create Project, Create Deal, Create Account, Create Contact, Create Ticket, Create Appointment, Create Request |
| Update records | Update Property, Assign Owner, Change Status, Update Ticket, Escalate Ticket, Update Appointment, Give Loyalty Points |
| Tasks and notes | Create Task, Create Reminder, Create Activity, Add Note |
| Notify | Send Email, Send WhatsApp Template, Send Review Request, Notify User, Send Webhook |
| Relationships | Add Tag, Remove Tag, Add to Static Segment, Remove from Static Segment, Add Association, Remove Association |
| Workflow | Enroll in Workflow, Stop This Workflow, Submit for Approval |
| Inbox | Send Inbox Reply, Hide or Delete Comment, Assign Conversation, Add Inbox Tag, Opt Contact Out, Reply Menu |
| Chat | Send Chat Message |

Most text fields accept tokens such as a contact's name or a deal's amount, filled in when the workflow runs.

**Send Chat Message** posts a message from Fox Bot into a [Chat](https://workstation.repzo.com/docs/operations/chat) channel or a person's direct messages. Choose **Send to**, pick the **Channel** or **Person**, and build the **Message**.

**Send Webhook** calls one URL from inside this workflow. To send record changes to your servers for the whole workspace, use [Webhooks](https://workstation.repzo.com/docs/administration/webhooks) instead.

## Test a workflow

Each step's settings panel has two tabs: **Setup** and **Test**.

1. Open the trigger's **Test** tab and click **Find a recent record** to load a real record from the trigger's module as a sample.
2. In any later step, insert fields from the sample record as tokens instead of typing them by hand.
3. On an action's **Test** tab, click **Preview values** to see exactly what the step would use. Preview never contacts anyone.

Conditions and delays can't be tested on their own; they are checked during a real run.

**Send WhatsApp Template** and **Send Chat Message** also offer **Send for real**, which sends one message (to the sample record's contact, or to the chosen chat destination) so you can see the result.

## Publish, pause, and versions

Workflows run a **published version**, not the canvas you are editing.

- **Publish** saves the canvas, checks it, and makes it the live version. The workflow becomes **Active**.
- After that, changes you **Save** stay in the draft. Live runs keep using the published version until you click **Publish Update**.
- **Pause** stops new runs. **Resume** starts them again. While paused you can also **Publish New Version**.
- **Versions** lists every published version. Restore one to load it back onto the canvas, then publish it again.

Inbox Rules are the exception: a rule created in **Settings → Inbox → Rules** is active right away and runs its saved steps, until someone publishes it from the builder.

## Runs and history

In the builder, **Runs** lists the latest runs of this workflow. You can cancel a run that is still in progress.

**Execution History** (from the workflow list) shows runs across all workflows. Search by workflow name and filter by status or module. Open a run to see its trigger, timestamps, and each step.

| Run status | Meaning |
|---|---|
| Running | In progress or waiting on a delay |
| Completed | Every reached step finished |
| Failed | A step failed; open the run to see the error |
| Cancelled | Stopped by someone before it finished |

Each step shows **Pending**, **Running**, **Completed**, **Failed**, or **Skipped** (for example, the branch a condition did not take).

## Inbox Rules

**Settings → Inbox → Rules** is a simpler way to build inbox automation: hide spam comments, send auto-replies, run reply menus, and honour opt-outs. Each rule is a workflow with the **Inbox** trigger module, so it also appears in the workflow list and can be opened in the builder for more control. See [Inbox](https://workstation.repzo.com/docs/operations/inbox).

## Example: deal won

```text
Trigger: Deal Won
  → Action: Create Task "Prepare onboarding" (assigned to the deal owner)
  → Delay: 1 day
  → Condition: Property Condition, Deal type equals "New business"
      Yes → Action: Send Chat Message to #onboarding
      No  → (end)
```

## Tips

- Start with one trigger and one action, test it, then add more steps.
- Use conditions to avoid acting on records that don't need it.
- Preview every step on the **Test** tab before publishing.
- Try larger changes in a [sandbox](https://workstation.repzo.com/docs/administration/sandboxes) first. Emails and messages sent from a sandbox are captured, not delivered.
- Check **Execution History** after publishing to catch failing steps early.

## Related documentation

- [Tickets](https://workstation.repzo.com/docs/operations/tickets)
- [Inbox](https://workstation.repzo.com/docs/operations/inbox)
- [Chat](https://workstation.repzo.com/docs/operations/chat)
- [Approvals](https://workstation.repzo.com/docs/operations/approvals)
- [Segments](https://workstation.repzo.com/docs/marketing/segments)
- [Webhooks](https://workstation.repzo.com/docs/administration/webhooks)
- [Notifications](https://workstation.repzo.com/docs/administration/notifications)
