Workflow builder

Workflows are a collection of steps that automate a process or deliver messages to your users based on your configured logic. In PostHog, you can create a workflow using our no-code workflow builder.

Fresh workflow with trigger block

Workflows are composed of the following components:

ComponentDescription
TriggersWhat starts the workflow. We let you start a workflow when an event is performed (e.g. a user signs up), or programmatically via a webhook.
DispatchesThe messages you send, mail, slack, SMS, webhook, or any PostHog real time destinations.
DelaysWait steps such as "wait 2 days" or "wait until condition is true."
Audience splitsTarget and split your users so you can automate some action for them or send a message with more specificity.
PostHog actionsChange a person's properties, or trigger other events, once a person reaches a specific point in your workflow.

Triggers

Every workflow starts with a trigger. Triggers represent actions taken by users that kick off the workflow. There are two types of triggers:

Trigger typeDescription
Event triggerA captured PostHog event (e.g. signed up)
Webhook triggerProgrammatically start a workflow with a webhook

Event triggers

Event triggers are any PostHog event. These can be manually or automatically autocaptured by our SDKs. They can be filtered by the event properties and persons properties attached to the event.

To filter your events, click on the three lines icon next to the event name and select Add filter.

Event trigger filter

Dispatches

Dispatches are the messages you send, mail, slack, SMS, webhook, or any PostHog real time destinations. There are 4 main types of dispatches:

Dispatch typeDescription
EmailSend an email natively through PostHog. Configured in the channels section.
SlackSend a message to a slack channel. Configured in the channels section.
WebhookCall external systems. Configured in the channels section.
CDP destinationsUse any realtime destination as an dispatch step to deliver messages to users or other services.

Delays

Delays help you control the timing of your messages. There are 3 types of delays:

Delay typeDescription
Fixed waitWait for a fixed amount of time (minutes/hours/days).
Wait until conditionWait until a specific condition is met (e.g. user has property set to a specific value).
Wait until time windowWait until a specific time window (e.g. only send on weekdays 9-5).

You can see an example of a delay in the email drip campaign tutorial.

How "Wait until condition" works

The Wait until condition block periodically re-evaluates your condition until it's met or the wait time expires. It's important to understand what data is checked:

What the condition evaluates against:

  • Person properties – Fresh values are re-fetched from the database on each check. This is ideal for conditions like "wait until onboarding_completed is true" since person properties can be updated by other parts of your application.
  • Workflow variables – Current values that may have been updated by previous workflow actions.
  • The original trigger event – The event properties from when the workflow started (these don't change).

What the condition does NOT do:

  • It does not wait for new events to come in. If you need to react to a specific event being captured, use an event trigger in a separate workflow instead.
  • It does not monitor for new events with matching properties.

How the re-evaluation works:

  • The condition is checked periodically (approximately every 10 minutes) until either:
    • The condition is met → the workflow continues down the "match" branch
    • The maximum wait time is reached → the workflow continues down the "no match" branch

This makes "Wait until condition" perfect for scenarios where you're waiting for a person property to change (e.g., waiting for a user to complete onboarding, upgrade their plan, or verify their email).

Audience splits

Audience splits help you target your automation or messages to specific groups of users. There are 2 types of audience splits:

Audience split typeDescription
Conditional branchSegment by event or persons properties.
Random branchExperiment or A/B test.

These can be used to target users based on their behavior or properties.

PostHog Actions

PostHog Actions allow you to change a person's properties, trigger other events, or chain workflows together once a person reaches a specific point in your workflow. There are 2 types of PostHog actions:

PostHog action typeDescription
Capture EventTrigger a PostHog event. This can be a useful way to chain workflows together, or track the effectiveness of workflows in analytics dashboards.
Update Person PropertiesSet a specific person property, or create a new one. This can be a useful way to chain workflows together.

Community questions

Was this page useful?

Questions about this page? or post a community question.