Skip to main content
You create a placement with a three step wizard: Basic Info, Link Assignment, and Summary. The result is a placement key your app can trigger and a published flow it serves. Before you start, you need at least one published flow in the current app. The wizard only lets you attach flows that have a published version. If you have not published a flow yet, do that first (see Publishing).

Open the wizard

On the Placements page, click New Placement in the header. The dialog is titled New Placement with the description “Define a trigger point inside your app.” A progress indicator at the top shows the three steps.

Step 1: Basic Info

1

Enter a Placement ID

Type the key your app will use, for example after_signup_success. The field auto-formats as you type: it lowercases the value and replaces spaces and hyphens with underscores. The rules are:
  • Must start with a lowercase letter.
  • Only lowercase letters, numbers, and underscores.
  • Maximum 64 characters.
The helper text reads “Unique identifier used in SDK.” This ID cannot be changed after the placement is created.
2

Add a description (optional)

The Description field is an optional note for your team (“Help your team understand when this placement should trigger”). It is not shown to users.
3

Select platforms

Check the platforms this placement applies to: iOS, Android, Web. You must select at least one. The device platform must be in this list for the placement to resolve a flow, so include iOS if you are integrating the iOS SDK.
Click Next.
1

Choose the default flow

Under Default Flow, pick a flow from the dropdown (“Choose a published flow”). Only flows with a published version appear here. Each option shows the flow name and its type. The helper text reads “This flow will be shown when the placement triggers.”If you see “No published flows available”, publish a flow first, then return here.
2

Set an audience (optional)

The Audience (optional) section defaults to All users. Click Add Filter to restrict who sees the flow. Each condition is a property, an operator, and a value, and you choose whether ALL or ANY conditions must match. See Audience targeting for the full property and operator reference.
The step also shows a tip: you can A/B test different flows for this placement later by creating an experiment from the Experiments section. See Creating an experiment. Click Next.

Step 3: Summary

The final step shows a review table with the Placement ID, Description, Default Flow, Audience, and Platforms, plus an SDK Integration snippet you can copy. Review the values. When everything is correct, click Create Placement. (In edit mode the button reads Update Placement.)

Connect the key to your SDK call

The placement key you just created is the string your app passes to the SDK. The dashboard’s summary shows a shorthand snippet, but the real iOS call is presentPlacement(_:from:):
// Present the placement you created
try await FlowPilot.shared?.presentPlacement("after_signup_success", from: viewController)
As long as the string matches the placement ID and your SDK is configured for the same app, the SDK resolves and presents whatever flow the placement serves. See Presenting placements.
The dashboard’s SDK Integration card displays FlowPilot.trigger("after_signup_success"). That is illustrative shorthand. The actual public iOS API is presentPlacement(_:from:), not trigger.

Editing a placement later

Open the placement’s detail page and click Edit (or use Edit in the row’s actions menu on the list). This reopens the same wizard in edit mode, pre-filled with the placement’s current values. You can change the description, platforms, default flow, and audience. The Placement ID is locked in edit mode (“Placement ID cannot be changed after creation”).

Attaching a flow from the editor

You can also point a placement at a freshly published flow from inside the editor. When you publish, the editor offers an Attach to placement action so you can route traffic to the new version without leaving the editor. See Publishing.

Common mistakes

  • Key mismatch. The string in presentPlacement("...") must exactly match the placement ID. The dashboard lowercases IDs, so match that in code.
  • iOS not in the platforms list. If you only select Android or Web, an iOS device gets no flow. Include iOS.
  • No published flow. The default flow dropdown only lists published flows. If it is empty, publish a flow first.
  • Created under the wrong app. Placements are app-scoped. Confirm the app switcher shows the right app before creating the placement, and that your SDK is configured with that app’s ID.