A flow is an automation made of three parts. Once you understand them, you can build any automation the platform supports.

Anatomy of a flow

  1. Trigger β€” the event that starts the flow, e.g. Order paid. One trigger per flow.
  2. Conditions (optional) β€” filters that decide whether to continue, e.g. only Amazon orders.
  3. Actions β€” what the flow does: push to ShipStation, send a notification, add a tag, hold the order.

A worked example

on: order.paid              # trigger
when:                       # conditions
  channel: amazon
do:                         # actions
  - shipstation.push
  - notify.send:
      to: fulfillment-team

When an order is paid, if it came from Amazon, push it to ShipStation and notify the fulfillment team.

The flow lifecycle: shadow β†’ draft β†’ active

Status What it does Use it to
Shadow Runs and logs what it would do, takes no real action Safely validate logic against live events
Draft Saved but not running Park a work-in-progress
Active Running for real Go live

πŸ’‘ Tip: Always run a new flow in shadow mode first. Check the run history to confirm it matches the orders you expect before flipping it to active.

Run history

Every time a flow fires it records a run β€” the triggering event, which conditions matched, each action’s result, and any errors. When something misbehaves, the run history is where you diagnose it.

⚠️ Warning: Flows don’t silently swallow failures. If an action fails (e.g. ShipStation unreachable), the run is marked failed. Check run history regularly, or add a notification action so failures reach you.