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

# Drop-off Trigger

> Activate when users fail to complete expected actions within a specified timeframe

<iframe src="https://app.flywheel.cx/doc-comp-previews/workflow-node-preview?type=drop_off" title="Workflow Node Preview" width="100%" height="250px" className="border dark:border-[#1C1C20]  rounded-xl" />

## How Drop-off Triggers Work

1. **Monitor Events**: The system tracks when users perform the initial event
2. **Set Expectations**: You define what actions users should take next
3. **Wait and Watch**: The system waits for the expected follow-up events
4. **Trigger on Absence**: If expected events don't occur within your timeframe, the workflow starts

## Configuration

<Columns cols={2}>
  <Card title="Inputs">
    <ParamField path="Initial Events" type="string[]" required>
      Select one or more events that start the drop-off monitoring. Examples: `trial_started`, `cart_created`, `signup_initiated`.
    </ParamField>

    <ParamField path="Expected Events" type="object[]" required>
      Configure the events you expect users to complete after the initial event.
    </ParamField>

    <ParamField path="Event Name" type="string" required>
      The specific event you expect users to complete (part of Expected Events configuration).
    </ParamField>

    <ParamField path="Delay Value" type="number" required>
      How long to wait before considering it a drop-off (number value).
    </ParamField>

    <ParamField path="Delay Unit" type="enum" required>
      Time unit for the delay. Options: `seconds`, `minutes`, `hours`, `days`, `weeks`, `months`.
    </ParamField>

    <ParamField path="Sort Order" type="number">
      Priority order for multiple drop-off events. Lower numbers have higher priority.
    </ParamField>
  </Card>

  <Card>
    <iframe src="https://app.flywheel.cx/doc-comp-previews/workflow-config-preview?type=drop_off" title="Workflow Node Preview" width="100%" height="600px" className="" />
  </Card>
</Columns>

<Card title="Outputs">
  <ParamField path="event" type="object" required>
    The drop-off event data generated by Flywheel when the expected event didn't occur.

    <Expandable title="Event Properties">
      <ParamField path="event.event_id" type="string" required>
        Unique identifier for this drop-off event.
      </ParamField>

      <ParamField path="event.event_name" type="literal" required>
        Always `$fw_drop_off` for drop-off events.
      </ParamField>

      <ParamField path="event.timestamp" type="string" required>
        ISO datetime when the drop-off was detected.
      </ParamField>

      <ParamField path="event.custom_properties" type="object" required>
        Contains drop-off specific data and system properties.

        <ParamField path="event.custom_properties.$fw_event_source" type="literal" required>
          Always `flywheel` for system-generated events.
        </ParamField>

        <ParamField path="event.custom_properties.$fw_user_id" type="string" required>
          Internal user identifier.
        </ParamField>

        <ParamField path="event.custom_properties.last_completed_event_name" type="string" required>
          Name of the last event the user completed that triggered the drop-off monitoring.
        </ParamField>

        <ParamField path="event.custom_properties.last_completed_event" type="object" required>
          Full details of the original event that started the drop-off monitoring, including all event properties and custom data.
        </ParamField>
      </ParamField>
    </Expandable>
  </ParamField>

  <ParamField path="org_user" type="object" required>
    Comprehensive user information for the user who dropped off.

    <Expandable title="User Properties">
      <ParamField path="org_user.id" type="string" required>
        Unique user identifier.
      </ParamField>

      <ParamField path="org_user.org_assigned_user_id" type="string">
        Your company's external user identifier.
      </ParamField>

      <ParamField path="org_user.primary_email" type="string">
        User's primary email address.
      </ParamField>

      <ParamField path="org_user.first_name" type="string">
        User's first name.
      </ParamField>

      <ParamField path="org_user.last_name" type="string">
        User's last name.
      </ParamField>

      <ParamField path="org_user.subscription_status" type="enum">
        Current subscription status: `incomplete`, `incomplete_expired`, `trialing`, `active`, `past_due`, `canceled`, `unpaid`, `paused`, `inactive`.
      </ParamField>

      <ParamField path="org_user.payment_processor" type="enum">
        Payment processor used: `stripe` or `paddle`.
      </ParamField>

      <ParamField path="org_user.mrr" type="number">
        Monthly recurring revenue from this user.
      </ParamField>

      <ParamField path="org_user.ltv" type="number">
        Lifetime value of the user.
      </ParamField>

      <ParamField path="org_user.first_payment_date" type="string">
        ISO datetime of user's first payment.
      </ParamField>

      <ParamField path="org_user.next_payment_date" type="string">
        ISO datetime of user's next scheduled payment.
      </ParamField>

      <ParamField path="org_user.cancels_at" type="string">
        ISO datetime when subscription will be cancelled (if applicable).
      </ParamField>

      <ParamField path="org_user.contact_info" type="object">
        Additional contact information and preferences.
      </ParamField>

      <ParamField path="org_user.custom_properties" type="object">
        Custom user properties you've defined.
      </ParamField>
    </Expandable>
  </ParamField>
</Card>

<Note>The system creates drop-off events with the name `$fw_drop_off` for all drop-off triggers.</Note>

## Use Cases

**Trial Conversion**

```
Initial Event: trial_started
Expected Event: subscription_created
Drop-off Delay: 7 days
Result: Triggers if user doesn't subscribe within 7 days
```

**Cart Abandonment**

```
Initial Event: cart_created
Expected Event: purchase_completed
Drop-off Delay: 2 hours
Result: Triggers if user doesn't complete purchase within 2 hours
```

**Onboarding Completion**

```
Initial Event: account_created
Expected Events:
  - profile_completed (24 hours)
  - first_project_created (3 days)
  - team_invited (7 days)
```

## Best Practices

**Choose Appropriate Timeframes**

* Consider your typical user behavior patterns
* Account for different user segments (some may need more time)
* Start with longer delays and optimize based on data

**Segment Your Audiences**

* Use trigger conditions to create different drop-off flows for different user types
* Consider factors like subscription tier, user role, or geographic location

**Monitor and Adjust**

* Track which drop-off triggers are most effective
* Adjust timing based on actual user behavior data
* A/B test different delay periods
