Anatomy of a Workflow
How a Workflow Resolves
When a trigger fires, the SDK asks Helium: “What should I show?” The workflow answers by evaluating its configuration:- Check targeting criteria — Does the user match any audience-based rule?
- If a rule matches — Show that audience’s configured paywall or enroll the user in an experiment. If the rule is “no paywall,” dismiss silently.
- If no rule matches — Fall through to the control paywall.
Lifecycle of a Workflow
1
Create
When you create a workflow, you provide:
- A name (must be unique within your organization)
- A control paywall (the default paywall to show — must be a published paywall)
- An optional description
2
Attach Triggers
A workflow needs at least one trigger to be reachable from your app. You can attach multiple triggers to a single workflow — for example, both post_onboarding and feature_gate can route to the same workflow. Each trigger can only belong to one workflow at a time.
3
Configure Targeting Criteria
Targeting criteria are audience-based rules that let you customize what different users see. Each rule maps an audience to an action:
Rules are evaluated in order. If a user matches multiple audiences, the first matching rule wins. Users who don’t match any rule see the control paywall.
4
Run Experiments
Experiments are A/B tests that live within a workflow. Each experiment:
- Compares two or more paywall variants with configurable traffic allocations
- Can be scoped to a specific audience via targeting criteria
- Has a lifecycle of its own: scheduled → running → stopped/completed
- Can be scoped to specific locales, so you can run different tests in different regions
5
Edit
You can update a workflow’s name, description, control paywall, and targeting criteria at any time. Changes take effect immediately — there is no draft/publish cycle for workflows. Keep in mind:
- Changing the control paywall instantly changes what unmatched users see.
- Updating targeting criteria reorders or replaces audience rules on the fly.
6
Delete
Deleting a workflow cascades — all trigger associations and locale-experiment mappings tied to this workflow are removed automatically. The triggers themselves are not deleted; they become unassigned and can be reattached to another workflow. Experiments associated with the workflow are also affected.Deletion is permanent and takes effect immediately. Any triggers still referencing this workflow in your app code will fail to resolve, so make sure to remove or reassign them first.
Relationships
- Triggers → Workflow: Many-to-one. Multiple triggers can point to one workflow.
- Workflow → Control Paywall: One-to-one. Every workflow has exactly one default paywall.
- Workflow → Targeting Criteria: One-to-many. A workflow can have multiple audience-based rules.
- Workflow → Experiments: One-to-many. A workflow can have multiple A/B tests (active, stopped, or scheduled).
- Workflow → Locale Experiments: One-to-many. Different experiments can run per locale within the same workflow.
Key Rules
- Workflow names are unique per organization.
- Every workflow must have a control paywall — it’s the guaranteed fallback.
- Only published paywalls can be used as a control paywall or in experiments.
- Targeting criteria are evaluated in order — the first matching audience wins.
- Deleting a workflow cascades to trigger associations and locale mappings, but does not delete the triggers or experiments themselves.
- Changes to workflows are live immediately — there is no staging step.