Add workflow actions, delays, and branches

Last updated: August 10, 2026

After a trigger enrolls a contact, workflow steps run in the order shown on the canvas. A step can perform an Action, wait for a Delay, or choose a path through a Branch.

Add a step

  1. Open a new or existing workflow.

  2. Select the plus button at the point where the new step should run.

  3. Choose an Action, Delay, or Branch.

  4. Configure the step and select Save.

  5. Select Save Workflow or Update Workflow to save the canvas.

You can select a node in the canvas to edit it. Use the trash button on the node tile to delete that step, and review the path before saving to make sure the remaining nodes are still connected in the intended order.

Different workflow actions

Action

What it does

Channels

Important conditions

Send Message

Sends configured text to the contact

Instagram, Facebook

Delivery still depends on the channel's messaging rules

Send Voice Message

Sends a recorded clip or Text-to-Speech output

Instagram; Facebook

Text-to-Speech requires ElevenLabs. A TTS failure falls back to text

Change Autopilot Handling

Enables or disables Autopilot handling for the contact

Instagram, Facebook

-

Reply to Comment

Sends a reply to the comment that started the run

Instagram, Facebook

Use with a Comment trigger trigger

Add Contact Tag

Adds one or more tags to the contact

Instagram, Facebook

Can start a dependent tag workflow when workflow chaining is enabled

Remove Contact Tag

Removes one or more tags to the contact

Instagram, Facebook

Can start a dependent tag workflow when workflow chaining is enabled

Change Contact State

Opens / Archive / Spam the conversation

Instagram, Facebook

-

Change Contact Owner

Assigns to one owner or distributes assignments across teammates when workflow run for multiple

Instagram, Facebook

-

Trigger Webhook

Sends workflow and contact data to an external HTTPS endpoint

Instagram, Facebook

-

AI Pick

Selects one reply from configure set of messages based on prompt

Instagram, Facebook

-

Winly blocks a channel selection when any trigger or action in the workflow is incompatible with that channel. See Configure workflow channels and settings.

Delay Step

A Delay step adds a pause in the workflow for the specified time period. When a workflow is currently in delay step, the workflow run for that instance appears In Progress until the next step becomes eligible to execute.

Delay timing depends on queue processing. Treat the configured duration as the minimum wait, not an exact delivery time.

Branch Step

A Branch evaluates the contact at that stage and sends the run down the first matching conditional path. Every branch also has a Fallback path for contacts that match none of the conditions. A branch path can continue to more steps or end the workflow.

Condition

What it does

Supported comparison

Contact Owner

Checks the currently assigned owner

Equals one owner or is one of several owners

Contact Status

Checks the conversation status

Contact Tags

Checks the tags currently assigned to the contact

Equals one tag or contains any selected tag

Contact Verified

Checks whether the contact's connected profile is verified

Is true or false

Followers or Following

Compares the contact's follower or following count

Greater than or less than a number

Total Messages Received

Compares the number of incoming messages recorded for the contact

Greater than or less than a number

Previous Message Received

Checks how long ago the previous incoming message was received

Compare the previous incoming-message time with a duration

No Messages Received Since Start

Checks whether the contact has replied since the current workflow run started

-

Incoming Event Text

Checks the message or comment text that started the workflow run

Contains any configured keyword; Applicable only for Any Message and Any Comment triggers

Conditions in the same group must all match. The first matching branch wins, so place the most specific branch before broader branches.

Incoming Event Text is conditionally visible in the branch field selector. It appears only when the workflow uses an Any Message or Any Comment trigger. It is not available for Message Text, Comment Text, Contact Tag, or Schedule triggers.

Example: Route pricing-related messages

Use this branch to identify pricing intent without creating a separate workflow for every keyword.

  1. Select Any Message as the workflow trigger.

  2. Add a Branch after the trigger.

  3. Configure the first path:

    • Condition: Incoming Event Text

    • Keywords: pricing, cost, and quote

    • Continue with: Add Contact Tag and select a pricing-interest tag, then assign the appropriate sales owner.

  4. Configure the Fallback path to continue with the normal response sequence or end the workflow.

Keyword matching ignores uppercase and lowercase and checks for the configured words within the incoming event text. For example, Can you send PRICING? matches the pricing keyword.

Example: Route qualified contacts by activity

Use multiple conditions in one branch when every condition must be true.

Path

Conditions

High-engagement contact

Contact Status equals Open AND Total Messages Received is greater than 5

Archived contact

Contact Status equals Archive

Fallback

No other path matched

Place the more specific high-engagement path first. If an open contact has more than five received messages, Winly selects that path without evaluating later paths.

Example: Follow up only when the contact has not replied

This pattern prevents a scheduled follow-up from being sent after the contact has already responded.

  1. Start with the appropriate message or tag trigger.

  2. Send the initial message.

  3. Add a Delay for the required follow-up period.

  4. Add a Branch with No Messages Received Since Start.

  5. Continue that path to the follow-up message.

  6. Configure the Fallback path to end the workflow because the contact replied after the run started.

After testing, open Workflow Runs and confirm that a non-responsive contact takes the follow-up path while a contact who replied takes Fallback.

Send a text message

Enter the message exactly as it should be sent. Use @first_name where you want Winly to insert the contact's first name.

Context

How the action behaves

Instagram or Facebook direct conversation

Sends through as direct message, subject to the available messaging window

Workflow started by an Instagram or Facebook comment

Uses the triggering comment context; make sure the intended result is a private message rather than a public comment reply

Message actions are not guaranteed deliveries. A channel can reject a message because of an expired messaging window, missing connection, invalid recipient, or platform restriction. See Compose and send messages for the current direct-message and comment limitations.

Send a voice message

Choose one source:

Source

Configuration

Runtime behavior

Recorded audio

Select one saved recording from the media library

Sends the stored audio file; recordings must be no larger than 25 MB

Text to speech

Enter up to 5,000 characters

Generates audio with the configured voice service; if generation or delivery fails, it will be sent as a text message

Reply to a comment

Use Reply to Comment after an Instagram or Facebook comment trigger. The action needs the triggering comment to know where to post the reply.

Choose a reply mode:

Mode

Result

Single reply

Uses the one configured reply every time

Rotate replies

Randomly selects from at least two configured replies

If the platform reports that the comment was already replied to, Winly will skip the duplicate reply and allow the workflow to continue.

For manual comment handling, see Handle Comments.

Update contact tags, state, or owner

Add or remove tags

Select one or more existing tags. Create and organize the required tags before building the workflow.

An Add Contact Tag action can start another active Contact Tag workflow only when the destination workflow allows chaining.

Change contact state

Use Open or Archive or Spam to change the state of the contact.

Change contact owner

Choose one assignment mode:

Mode

Configuration

Result

Single owner

Select one teammate

Every matching run assigns that teammate

Multiple owners

Select teammates and assign percentages totaling 100%

Assignments are distributed toward the configured weights over time

Weighted distribution is not a guarantee that a small sample of runs will match the percentages exactly.

Change Autopilot handling

Choose whether the workflow should turn Let Autopilot handle this conversation on or off for the contact. This action changes the handling flag; it does not assign a different contact owner.

The action can fail when Autopilot is already owned by the Autopilot bot. Review handling changes in the Inbox after a test run. See Autopilot Handling Conversations.

Trigger a webhook

Enter the destination HTTPS URL. Winly sends a JSON POST request that includes workflow, contact, and trigger context. The request times out after 60 seconds and can be attempted up to three times, with a short wait between attempts.

Your receiving service should:

  • Accept JSON POST requests over HTTPS.

  • Respond successfully within 60 seconds.

  • Treat repeated requests as the same event so a retry does not create duplicate work.

  • Return a non-error response only after it has accepted the payload.

  • Avoid placing credentials or private tokens in the URL.

Webhook payloads can include contact details, message snippets, and AI notes. Send them only to a service approved to receive customer data.

Let AI pick a message

Add one or more clear candidate messages and enter a non-empty custom instruction describing which response fits each situation. Although the interface presents the custom instruction as optional, an empty value will be rejected when the workflow is saved. At runtime, the action reviews the provided context and selects a candidate.

Use candidates that are each safe to send without editing. Test ambiguous, empty, and unsupported-message cases before activation.

Check the workflow run

After the workflow starts for a contact:

  1. Open Workflows and select Runs.

  2. Search for the workflow name or enter the contact ID.

  3. Expand the run to view its trigger, actions, delays, and selected branch.

  4. Check the status, timeline, and details for each step.

  5. If a step failed, review the final successful step and the visible failure details before changing the workflow.

See Review workflow runs for run statuses, filters, step history, and troubleshooting guidance.