Creating an Orchestration
This guide walks you through building, rehearsing, and activating an orchestration, from naming it to launching it for your audience.
Prerequisites
Before you start, make sure you have:
- A Zeotap workspace with permission to manage orchestrations
- A parent model to build on, and either an audience on that model (for audience entry) or an event model with a relationship to it (for event entry)
- At least one destination configured (for Send to Destination tiles)
Step 1: Create the orchestration
- Navigate to Orchestrations in the left sidebar.
- Click Create Orchestration.
- Give it a descriptive name (for example, “New Customer Onboarding” or “Cart Abandonment Recovery”) and choose the parent model.
The orchestration opens on the canvas in Draft state. No members are processed while it is a draft.
Step 2: Configure the Entry tile
Every orchestration starts with an Entry tile, already placed on the canvas. Click it to open its configuration.
Choose an Entry Type:
- Audience — Select an audience built on the parent model. Its members enter the orchestration, and new members enter as they qualify on each evaluation.
- Event — Select an event model and the relationship linking it to the parent model. Members enter when the event occurs. Optionally add an Event Property Filter so only matching events trigger entry (for example,
cart_value > 50).
Enable Allow re-entry if a member who has exited should be able to enter again when they re-qualify. (Manual entry is not available — members enter only via an audience or event.)
Step 3: Add tiles
Build the flow by adding tiles from the Add Tile palette on the left — drag a tile onto the canvas, or click it to add. Click any tile to open its configuration panel and fill in the required settings. See Tile Types for every tile and its options.
A typical onboarding flow looks like:
- Entry — new signups
- Delay — 1 day
- Send to Destination — welcome email
- Delay — 3 days
- Branch — opened the email?
- Opened — Send to Destination (feature guide), then Exit
- Catch-all — Send to Destination (reminder), then Exit
Step 4: Connect tiles
Tiles are joined by edges that define the flow:
- Hover a tile to reveal its connection handle.
- Drag from the handle to the next tile and release to create the edge.
Connection rules:
- Entry has no incoming edges and one outgoing edge.
- Branch and A/B Split have one outgoing edge per branch/port.
- Exit has no outgoing edges.
- The canvas is a directed acyclic graph — no loops.
Step 5: Set exit criteria (optional)
Beyond reaching an Exit tile, you can define exit criteria — a condition that removes any matching member from the orchestration early, wherever they are. This keeps members from receiving further steps once they’ve converted or opted out. Exit criteria are a filter over the parent model, evaluated on each run.
Step 6: Set the schedule
An orchestration advances members on a schedule — each evaluation run checks for new entrants, advances waiting members whose delays or conditions are satisfied, and executes sends. Set how often it runs (for example, hourly or daily). Delays and holds resolve to the granularity of this schedule.
Step 7: Rehearse
Before going live, click Run Rehearsal to simulate how members would flow through the orchestration over a chosen time window — without sending anything. The rehearsal reports how many members would enter, where they would land, and how many would complete or exit. Adjust the flow and rehearse again until it behaves as you expect. See Execution & Monitoring.
Step 8: Validate and activate
- Click Save.
- Click Activate. Zeotap validates the canvas first — it checks for exactly one Entry tile, no cycles, edges that reference real tiles, and required configuration on each tile. Validation errors must be fixed before activation.
- On success the orchestration moves from Draft to Active and begins processing members on the schedule.
To make changes later, use Pause to stop processing, edit, then Resume. See Execution & Monitoring.
Using the API
You can create and manage orchestrations programmatically:
# Create an orchestration
curl -X POST https://composable.zeotap.com/api/v1/workspaces/{id}/journeys \
-H "Authorization: Bearer $API_TOKEN" \
-H "X-Workspace-ID: {id}" \
-H "Content-Type: application/json" \
-d '{
"name": "Cart Abandonment Recovery",
"parent_model_id": "770e8400-e29b-41d4-a716-446655440000",
"schedule": "0 * * * *",
"tiles": [ ... ],
"edges": [ ... ]
}'
# Activate it
curl -X POST https://composable.zeotap.com/api/v1/workspaces/{id}/journeys/{journeyId}/activate \
-H "Authorization: Bearer $API_TOKEN" \
-H "X-Workspace-ID: {id}"See the Orchestrations API for the full schema.
Common patterns
Onboarding sequence
- Entry — signed-up audience
- Delay — 1 day
- Send — welcome email
- Delay — 3 days
- Branch — engaged?
- Send a targeted follow-up or reminder, then Exit
Cart abandonment
- Entry —
cart_abandonedevent - Delay — 1 hour
- Hold Until — purchase completed, timeout 1 day
- Condition met — Exit
- Timed out — Send reminder, then Exit
Re-engagement
- Entry — inactive audience
- Send — re-engagement email
- Delay — 7 days
- Branch — any recent activity?
- Active — Exit
- Catch-all — Send final offer, then Exit
Troubleshooting
| Issue | What to check |
|---|---|
| No members entering | Confirm the entry audience has members, or that the event is arriving; check the schedule has run. |
| Members stuck at a Branch | A member matching no branch stays put — add a catch-all branch with an empty filter. |
| Members stuck at a Delay or Hold Until | Delays resolve on the schedule; a Hold Until releases only when its condition is met or its timeout elapses. |
| Send tile errors | Verify the destination is connected and healthy, and that the field mappings are complete. |
| Won’t activate | Validation failed — fix each reported error, then activate again. |