> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hyzl.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Create a workflow

> Set up an always-on recovery workflow with the trigger, the offer, and the AI-written call script.

The **Workflows** page shows one recovery workflow per connected provider (Stripe, RevenueCat). Each one shows its win-back offer, its triggers, its live status, and its results.

## The New workflow wizard

The **New workflow** button opens a wizard with four steps:

1. **Trigger**: choose which event starts the workflow:
   * a member cancelling
   * a trial ending without converting
   * a member losing access
   * a signup that never converts
2. **Provider**: connect or choose the billing provider. See [Connect Stripe](/docs/revenue-recovery/setup/connecting-stripe) or [Connect RevenueCat](/docs/revenue-recovery/setup/connecting-revenuecat)
3. **Offer**: set the discount the AI may extend to save the subscription, plus the delivery & billing options. See [Win-back Offers](/docs/revenue-recovery/workflows/win-back-offers). This step also opens **See the texts we send**, where you can rewrite the recovery texts. Your copy is saved with the workflow. See [Write your own texts](/docs/revenue-recovery/the-call/offer-texts#write-your-own-texts)
4. **Finalize & Launch**: put the workflow live

The AI-written call script is not part of the wizard. Review and edit it in the full campaign editor, once hyzl has created the workflow. You can preview the call to your own phone there.

When you connect Stripe directly from the Integrations page, hyzl creates a **cancellation** workflow for you. It uses your existing call settings, such as script tone and voice. The wizard is then just where you review and adjust it.

## Edit a workflow

Each trigger row's edit (pencil) icon reopens the same wizard in place. Use it to change that trigger's offer, script, and delivery settings. RevenueCat's offer-code setup (App Store Connect key, code batches, inventory) lives here too, behind **Manage codes**.

## Triggers

Each moment in a member's relationship with you gets its own workflow trigger, with its own campaign, offer, and script. The conversation that wins someone back is different at each stage:

* **Subscriber cancels**: a member with an active, paid subscription cancels (or schedules a cancellation)
* **Trial ends without converting**: a member's subscription is still in its trial period when it cancels or lapses
* **Member loses access**: fires on the day the member's access actually ends. That gives a second recovery attempt before the relationship fully lapses. Each provider's workflow card has its own on/off row for this trigger
* **A user signs up but does not pay**: they create an account. hyzl waits, then checks against RevenueCat or Stripe that they still have not purchased. Only then does hyzl reach out. See [Signup Recovery](/docs/revenue-recovery/workflows/signup-recovery)

Each trigger row also has its own delete action, so you can remove one trigger's workflow without disconnecting the provider. The edit menu on a live trigger splits into **Offer & delivery** and **Script & voice**. The first reopens the in-place wizard. The second opens the full campaign editor.

Each trigger has its own campaign, so you edit its offer and script separately.

<Note>
  The hyzl team maps each trigger to its own campaign for you, as part of
  white-glove onboarding. There is no self-serve setting for this yet. If you
  only need one campaign for both, the default setup already covers that. Just
  mention it if you would like them split.
</Note>

If a cancellation event does not have a campaign configured for its trigger, hyzl never dials that member. That happens when, for example, only paid cancellations were set up and a trial lapses. hyzl marks the enrollment **Parked** and shows it on your Revenue Recovery [Activity log](/docs/revenue-recovery/analytics/activity-log) instead. That is exactly like any other enrollment that needs a look.
