Contact Us

If you still have questions or prefer to get help directly from an agent, please submit a request.
We’ll get back to you as soon as possible.

Please fill out the contact form below and we will reply as soon as possible.

  • Contact Us
  • Home
  • Installation & Developers
  • API & Data

Flow Events Reference (Developer)

Learn more about public and internal Flow events.

Written by Sofia Domingues

Updated at May 20th, 2025

Contact Us

If you still have questions or prefer to get help directly from an agent, please submit a request.
We’ll get back to you as soon as possible.

Please fill out the contact form below and we will reply as soon as possible.

  • Installation & Developers
    Installing Appcues Web Installing Appcues Mobile API & Data Troubleshooting Extras
  • Installation & Developers
    Installing Appcues Web Installing Appcues Mobile API & Data Troubleshooting Extras
  • Web Experiences
    Building Web Experiences Targeting Studio Customization & Styling Use Cases Troubleshooting FAQ
  • Mobile Experiences
    Installation & Overview Building Mobile Experiences Mobile Analytics & Integrations Troubleshooting
  • Workflows
    Building & Configuration Use Cases Workflow Analytics and Integrations
  • Account Management
    Subscription Users & Data
  • Analytics
    Experience and Event Analytics Data
  • Best Practices
    Best Practices Use Cases Pro Tips Product-led Growth
  • Integrations
    Integration Documents Use Cases Extras
+ More
  • Home

  • Installation & Developers

    • Installation & Developers

      • Web Experiences

        • Mobile Experiences

          • Workflows

            • Account Management

              • Analytics

                • Best Practices

                  • Integrations

                    This document outlines detailed flow event information, if you're looking for information on NPS, and Checklist events for an integration please reference the Appcues Events Reference document. If you're looking to learn about sending events into Appcues or tracking events in Appcues see the Events Overview document.

                    We have three "levels" of events: flow, step-group and step-child. Flow events pertain to the overall lifecycle of a flow, which is composed of separate step groups. Step-group events describe the lifecycle of an individual step-group in a flow. A step-group will usually include some number of children. The step-child events describe the nitty-gritty details of what occurs during the process of showing and interacting with a particular step-child.

                    Public-facing events

                    • Flow Started (flow_started) Fired when the first step of a flow is started or displayed on the page. If this event is fired, then the Flow Aborted and Flow Error events should not be fired. This should be fired before the Step Started event.
                    • Flow Completed (flow_completed) Fired when the user completes the last step of the flow. This should be fired after the Step Completed event.
                    • Flow Skipped (flow_skipped) Fired when the user chooses to skip a flow. This should fire after the Step Skipped event is fired for the corresponding step.
                    • Flow Aborted (flow_aborted) Fired when there is a "fatal" error that prevents starting or completing a flow. If this event is fired before the first step is started, then Flow Started should not be fired. This should be fired after the Flow Error event.
                    • Step Started (step_started) Fired when the step-group is run or displayed on the page. If this event is fired, then the Step Aborted and Step Error events should not be fired. This should be fired before Step Child Activated or Step Child Recovered events are fired.
                    • Step Completed (step_completed) Fired when the user completes a step-group. For modals and tooltips, this means closing the content with the "complete button". For hotspots, this means clicking on the last hotspot. This should be fired before the Flow Completed event.
                    • Step Skipped (step_skipped) Fired when the user chooses to skip a step-group or flow. This should be fired before the Flow Skipped event.
                    • Step Aborted (step_aborted) Fired when there is a "fatal" error that prevents starting or completing a step-group. If this event is fired before we show the step-group, then Step Started should not be fired. This should be fired before the Flow Aborted event.
                    • Step Interacted (step_interacted) Fired when a user interacts with a step-group in some way. Currently we track when a user does any of the following:
                      • Clicks a link in a flow
                      • Clicks a button (built-in or custom) in a flow
                      • Submits a form in a flow
                      • Clicks on a hotspot to expand it. This should be fired before the Step Child Deactivated or Step Child Activated events that it may trigger.
                    • Form Submitted (appcues:form_submitted) Fired when a user submits a form in a modal. This should be fired before the Step Child Deactivated event it may trigger and before the Form Field Submitted event(s) that it will trigger.
                    • Form Field Submitted (appcues:form_field_submitted) Fired for each field in a form that a user submits in a modal. This should be fired after the Form Submitted event.

                    Internal events

                    These you probably shouldn't care about. They're much more low-level events that Appcues uses internally to track the performance of flows. Use at your own risk!

                    • Flow Attempted (flow_attempted) Fired when a user qualifies for a flow and Appcues begins the process of trying to start the content. This will either result in a Flow Started or a Flow Error event. This should always be the first event fired for a particular flow.
                    • Flow Error (flow_error) Fired when there is a "fatal" error that prevents starting a flow. If this event is fired, then Flow Started should not be fired. This is usually caused by the bubbling up of a Step Error event. This should be fired before the Flow Aborted event.
                    • Step Attempted (step_attempted) Fired when a user has qualified for a flow and Appcues begins the process of trying to start a particular step-group. This will either result in a Step Started or a Step Error event. This should always be the first event fired for a particular step-group. It will be fired for each step-group in a flow that Appcues attempts to start.
                    • Step Error (step_error) Fired when there is a "fatal" error that prevents starting a step-group. If this event is fired, then Step Started should not be fired. This should be fired before the Step Aborted event.
                    • Step Child Activated (step_child_activated) Fired when the user successfully views the content of a particular step child. For example: viewing a particular "page" in a modal; viewing the content of a tooltip or hotspot (either by clicking the hotspot or next button). This should fire after the Step Interacted event.
                    • Step Child Deactivated (step_child_deactivated) Fired when a user closes/finishes a particular step child. For example, leaving a particular "page" in a modal or closing a tooltip. This should fire after the Step Interacted event.
                    • Step Child Error (step_child_error) Fired for any error that prevents showing a particular step child. Depending on the content type, this can result in a "fatal" Step Error. This should be fired after Step Attempted and before Step Error (if it causes a Step Error).
                    • Step Child Recovered (step_child_recovered) Fired for a step child that had previously caused a Step Child Error but is no longer in an error state. This should fire after the Step Started event and potentially after a Step Child Error event.

                    Event structure

                    The events follow the flow > step-group > step-child hierarchy. Fields common to flow events are present on step-group and step-child events, while fields common to step-group events are also present on step-child events.

                    Structure of flow events

                    All flow-level events have the following common structure:

                    • id: flow_started (string, required) - Snake case identifier for the event type
                    • name: Flow Started (string, required) - Human-formatted name of the event type
                    • flowId: -JEz-zuieQH29FZLHqvR (string, required) - The ID of the flow object
                    • flowName: Onboarding Flow (string, required) - Human-readable title of this flow
                    • flowVersion: 1465479478192 (number, required) - Indicates a particular version of a flow (currently the same as the updatedAt timestamp)
                    • sessionId: 1478371724807 (number, required) - Identifier for a particular session of a user, which corresponds to a particular initialization of the Appcues script
                    • timestamp: 1478371725400 (number, required) - Timestamp at which the event was generated

                    Flow Error

                    Flow Error events will also include the following fields:

                    • error: Failed to load CSS. (string, required) - A text summary of the error
                    • details (string, required) - A more detailed explanation of the error, usually referencing step child errors that raised this step-level error

                    Structure of step events

                    All step-level events have the above flow-level properties and share the following fields:

                    • stepId: -JEz-zvIXWj-9qNICQYK (string, required) - The ID of the step-group object
                    • stepType: hotspot-group (string, required) - The type of pattern of this step-group (hotspot-group, modal, etc)

                    Step Interacted

                    Step Interacted events will also include the following fields:

                    • stepChildId: -JKafq_L5HRpGN3vIYB2 (string, required) - The ID of the step child in which the user performed an interaction
                    • stepChildNumber: 1 (number, required) - The index (zero-based) of the step child in which the user performed an interaction
                    • interactionType: click (string, required) - How the user interacted with the step-group (click, hover, submit, etc)
                    • interaction (object, required) - An object representing information about the user's interaction
                    • interaction.category: link (string, optional) - Category of the thing upon which the interactionType was performed

                    Existing interactionType and category values:

                    interactionType interaction.category
                    click internal, link, beacon, element
                    submit form
                    ui_modified insertion

                    Depending on the interaction.category value, the interaction object contains different fields:

                    category description interaction object
                    internal when a user interacts with a next or previous button in Appcues content (modal, slideout, hotspot, tooltip)
                    • interaction.destination:
                    link  
                    • interaction.destination:
                    beacon  
                    • interaction.destination:
                    element  
                    • interaction.element:
                    form  
                    • interaction.formId:
                    • interaction.fields:
                    • fieldId:
                    • fieldType:
                    • fieldRequired:
                    • label:
                    • value:

                    Form Submitted

                    Form Submitted events will include the fields of Step Interacted events with the following modifications:

                    • interactionType: submit (string, required) - Always submit for Form Submitted events
                      • interaction (object, required) - An object representing information about the user's interaction
                      • interation.category: form (string, required) - Always form for Form Submitted events
                      • interaction.formId: -JKgfc1rgO8JlCrh0B1U (string, required) - The ID of the form object that was submitted
                      • interaction.response (array, required) - List of response objects
                        • (object)
                          • fieldId: -KQaXuLFQEcbyzuNftXr (string, required) - The ID of a specific field in a form
                            • label: Email (string, required) - The label describing the form field
                            • value: test@example.com (required, nullable) - The value the user entered in the form field

                    Form Field Submitted

                    Form Field Submitted events will include the fields of Step Interacted events with the following modifications:

                    • interactionType: submit (string, required) - Always submit for Form Field Submitted events
                    • interaction (object, required) - An object representing information about the user's interaction
                      • interaction.category: form (string, required) - Always form for Form Field Submitted events
                      • interaction.formId: -JKgfc1rgO8JlCrh0B1U (string, required) - The ID of the form object from which this field was submitted
                      • interaction.fieldId: -KQaXuLFQEcbyzuNftXr (string, required) - The ID of this form field
                      • interaction.label: Email (string, required) - The label describing this form field
                      • interaction.value: test@example.com (required, nullable) - The value the user entered in this form field

                    Step Error

                    Step Error events will include all the step-level fields in addition to the following:

                    • error: Failed to load CSS. (string, required) - A text summary of the error
                    • details (string, required) - A more detailed explanation of the error, usually referencing step child errors that raised this step-level error

                    Structure of step-child events

                    All step-child events will include the fields of step events in addition to the following:

                    • stepChildId: -JKafq_L5HRpGN3vIYB2 (string, required) - The ID of the step child
                    • stepChildNumber: 1 (number, required) - The index (zero-based) of the step child

                    Step Child Deactivated

                    Step Child Deactivated events will also include the following fields:

                    • timeSpent: 12537 (number, required) - The amount of time in ms spent on the step child

                    Step Child Error

                    Step Child Error events will also include the following fields:

                    • error (string, required) - The error description

                    Was this article helpful?

                    Yes
                    No
                    Give feedback about this article

                    Related Articles

                    • Javascript API (Developer)
                    • HTTP API (Developer)
                    • Working with Client-Side Appcues Events (Developer)
                    • Appcues Public API
                    • Appcues Events Reference
                    DON'T TAKE OUR WORD FOR IT

                    Start building with Appcues for free

                    Try before you buy
                    No credit card required
                    Support included
                    Start building for freeBook a demo
                    or take an interactive tour
                    Appcues logo

                    Product

                    In-app messaging
                    Email
                    Push notifications
                    Workflows
                    Data
                    How it works
                    Pricing
                    What's new

                    Use cases

                    Onboarding
                    Free-trial conversion
                    Feature adoption
                    Feedback
                    Support

                    Integrations

                    Why connect
                    All integrations
                    All workflows

                    Company

                    About
                    Careers
                    HIRING
                    Why Appcues
                    Teams
                    Customers

                    Support

                    Request a demo
                    Start free trial
                    Developer Docs
                    Help Center
                    Customer Success
                    Contact

                    Resources

                    Product Adoption Academy
                    Courses
                    Workshops
                    Templates
                    Examples
                    Made with Appcues
                    The Appcues Blog
                    PLG Collective
                    Product-led Experience Report
                    The Product Experience Playbook
                    The Product-Led Growth Flywheel
                    © 2025 Appcues. All rights reserved.
                    SecurityTerms of ServiceWebsite Terms of UsePrivacy PolicyCookie Preferences
                    Expand