# Userflow

User onboarding software. Build product tours, checklists and more. No coding needed.

- **Category:** marketing automation
- **Auth:** API_KEY
- **Composio Managed App Available?** N/A
- **Tools:** 18
- **Triggers:** 0
- **Slug:** `USERFLOW`
- **Version:** 20260227_00

## Tools

### Create or Update a Group

**Slug:** `USERFLOW_CREATE_OR_UPDATE_A_GROUP`

Tool to create a new group or update an existing group (also referred to as companies in the Userflow UI). Use when you need to create a new group or update attributes of an existing group by providing the group ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Unique identifier for the group. Use an existing ID to update, or a new ID to create. Can be a UUID or custom ID. |
| `attributes` | object | No | Free-form dictionary of custom attributes for the group. Common fields include name, billing_plan, and signed_up_at. Attribute names can only contain a-z, A-Z, 0-9, underscores, dashes, and spaces (snake_case recommended). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create or Update a User

**Slug:** `USERFLOW_CREATE_OR_UPDATE_A_USER`

Tool to create a new user or update an existing user in Userflow. Use when you need to synchronize user data from your back-end to Userflow. If the user ID exists, attributes will be merged; otherwise a new user is created.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Unique identifier for the user. Use an existing ID to update, or a new ID to create. Can be a UUID or custom ID. |
| `groups` | array | No | Array of group objects to assign the user to. Cannot be used together with memberships parameter (mutually exclusive). Used to organize users into groups. |
| `signature` | string | No | Used for identity verification to add additional security. SHA-256 HMAC of the user's ID signed with your Userflow environment's Secret Key. Only required when identity verification is enabled. |
| `attributes` | object | No | Free-form dictionary of custom attributes for the user. Common fields include name, email, email_verified, signed_up_at, and project_count. Attribute names can only contain a-z, A-Z, 0-9, underscores, dashes, and spaces (snake_case recommended). |
| `memberships` | array | No | Array of membership objects defining user's group associations. Cannot be used together with groups parameter (mutually exclusive). At most only one of either groups or memberships can be set per request. |
| `prune_memberships` | boolean | No | When true, removes existing memberships not included in the request. Default is false. Only set to true if the groups or memberships list contains ALL groups the user belongs to. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete a Content Session

**Slug:** `USERFLOW_DELETE_A_CONTENT_SESSION`

Tool to permanently delete a content session including its associated progress and survey answers. Use when you need to remove a content session from the system. This action cannot be undone. This operation is idempotent and will succeed even if the content session already doesn't exist.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `content_session_id` | string | Yes | The unique identifier of the content session to delete (UUID format). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete a Group

**Slug:** `USERFLOW_DELETE_A_GROUP`

Tool to permanently delete a group including all their attributes, memberships and events. Use when you need to remove a group from the system. This action cannot be undone, but users who were members of the group will remain intact. This operation is idempotent and will succeed even if the group already doesn't exist.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `group_id` | string | Yes | The unique identifier of the group to delete (UUID format). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete a User

**Slug:** `USERFLOW_DELETE_A_USER`

Tool to permanently delete a user including all their attributes, memberships, events and flow history. Use when you need to remove a user from the system. This action cannot be undone, but groups that the user was a member of will remain intact. This operation is idempotent and will succeed even if the user already doesn't exist.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `user_id` | string | Yes | The unique identifier of the user to delete. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get a Content Object

**Slug:** `USERFLOW_GET_A_CONTENT_OBJECT`

Tool to retrieve details of a specific content object (flow, checklist, or launcher) by ID. Use when you need to get information about a single content object, including its draft and published versions.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `expand` | string | No | Specifies related objects or lists to be expanded in the response (e.g., 'draft_version' or 'published_version'). You can expand to a maximum of 4 levels deep using dot notation. |
| `content_id` | string | Yes | The unique identifier (UUID) of the content object to retrieve. Example: '54bce034-1303-4200-a09a-780a2eee355d' |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get a Content Version

**Slug:** `USERFLOW_GET_A_CONTENT_VERSION`

Tool to retrieve details of a specific content version by ID. Use when you need to get information about a versioned content object, including its questions (for surveys) or tasks (for checklists).

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `version_id` | string | Yes | The unique identifier (UUID) of the content version to retrieve. Example: '152a63cc-0a49-475a-a8e4-5f89bee94fe6' |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get a Group

**Slug:** `USERFLOW_GET_A_GROUP`

Tool to retrieve details of a specific group (company) by group_id. Use when you need to get information about a group including their attributes, creation timestamp, and optionally expanded relationships like memberships and users. Note: Groups are called 'Companies' in the Userflow UI, but the API uses 'groups' terminology.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `expand` | string | No | Comma-separated list of relationships to expand. By default, relationships like memberships and users will be null. Use dot notation for nested expansion (e.g., 'memberships.user'). Can expand up to 4 levels deep. Example values: 'memberships', 'users', 'memberships.user' |
| `group_id` | string | Yes | The unique identifier of the group to retrieve. Can be a UUID or custom ID. Example: 'test-group-123' or 'ab82c312-b3a4-4feb-870c-53dd336f955e' |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get a User

**Slug:** `USERFLOW_GET_A_USER`

Tool to retrieve details of a specific user by user_id. Use when you need to get information about a user including their attributes, creation timestamp, and optionally expanded relationships like memberships and groups.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `expand` | string | No | Comma-separated list of relationships to expand. By default, relationships like memberships and groups will be null. Use dot notation for nested expansion (e.g., 'memberships.group'). Can expand up to 4 levels deep. Example values: 'memberships', 'groups', 'memberships.group' |
| `user_id` | string | Yes | The unique identifier of the user to retrieve. Can be a UUID or custom ID. Example: 'test-user-123' or '34907ae0-24e0-4261-ac31-3c7299a354c0' |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Attribute Definitions

**Slug:** `USERFLOW_LIST_ATTRIBUTE_DEFINITIONS`

Tool to retrieve all attribute definitions for users and groups tracked by Userflow. Use when you need to see what attributes are being tracked. Attribute definitions are automatically created when new attributes are sent.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of attribute definitions to return per request. Used for pagination. |
| `starting_after` | string | No | Cursor for pagination. Takes an attribute definition ID to define the starting position for retrieving subsequent pages. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Content

**Slug:** `USERFLOW_LIST_CONTENT`

Tool to retrieve all content (flows, checklists, and launchers) in your Userflow account. Use when you need to check what content is available for users to start in your application.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of content items to return per request. Used for pagination. |
| `sort_by` | string | No | Field(s) to order results by. Specific fields vary by resource type. |
| `starting_after` | string | No | Cursor for pagination. Takes a content ID to define the starting position for retrieving subsequent pages. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Content Sessions

**Slug:** `USERFLOW_LIST_CONTENT_SESSIONS`

Tool to retrieve all content sessions tracking user interactions with content. Use when you need to see user journeys through flows, checklists, or launchers, including their progress and survey answers.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of content sessions to return per request. Used for cursor-based pagination. |
| `content_id` | string | No | Filter content sessions by a specific content ID. When provided, only returns sessions for that content object. |
| `starting_after` | string | No | Cursor for pagination. Takes a content session ID to define the starting position for retrieving subsequent pages. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Content Versions

**Slug:** `USERFLOW_LIST_CONTENT_VERSIONS`

Tool to retrieve all versions of content including survey questions and checklist tasks. Use when you need to see the version history of flows, checklists, or launchers to track changes over time.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of content versions to return per request. Used for cursor-based pagination. |
| `content_id` | string | Yes | Required content ID to filter content versions. Only returns versions for the specified content object. |
| `starting_after` | string | No | Cursor for pagination. Takes a content version ID to define the starting position for retrieving subsequent pages. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Event Definitions

**Slug:** `USERFLOW_LIST_EVENT_DEFINITIONS`

Tool to retrieve all event definitions tracked in Userflow. Use when you need to see what events are being tracked. Event definitions are automatically created when new events are tracked.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of event definitions to return per request. Used for pagination. |
| `expand` | string | No | Comma-separated list of fields to expand in the response. Can expand up to 4 levels deep using dot notation (e.g., 'field.subfield'). |
| `starting_after` | string | No | Cursor for pagination. Takes an event definition ID to define the starting position for retrieving subsequent pages. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Groups

**Slug:** `USERFLOW_LIST_GROUPS`

Tool to retrieve all groups (companies) in your Userflow account with pagination and filtering support. Use when you need to list groups or search for specific groups based on attributes. Note: Groups are called 'Companies' in the Userflow UI.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of groups to return per request. Used for pagination. |
| `expand` | string | No | Comma-separated list of fields to expand in the response (e.g., 'memberships', 'memberships.user'). Can expand up to 4 levels deep using dot notation. |
| `sort_by` | string | No | Field name(s) to order results by. Each resource lists which fields can be ordered. |
| `condition` | string | No | JSON-formatted string to filter the list based on attributes. Supports operators like eq, ne, contains, empty, gt, lt, includes_all, starts_with. Condition filtering matches up to 10,000 records maximum. Supports AND/OR logic with nested conditions. |
| `starting_after` | string | No | Cursor for pagination. Takes a group ID to define the starting position for retrieving subsequent pages. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Users

**Slug:** `USERFLOW_LIST_USERS`

Tool to retrieve a paginated list of all users. Use when you need to list users with optional filtering, sorting, and expansion of related objects like memberships and groups.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of users to return per request. Used for pagination. |
| `expand` | string | No | Comma-separated list of relationships to expand. Can expand has-many relationships like memberships and groups. Supports recursive expansion with dot notation (e.g., 'memberships.group'). Maximum depth: 4 levels. |
| `sort_by` | string | No | Orders results by one or more fields. Specific fields supported vary by resource. |
| `condition` | string | No | JSON-formatted string to filter users based on attributes. Supports operators like eq, ne, gt, gte, lt, lte, contains, not_contains, between, empty, not_empty, includes_all, includes_any, excludes_all, excludes_any, starts_with, ends_with. Supports AND/OR logic. Attribute names can reference user attributes (default), group attributes (prefix with 'group/'), or membership attributes (prefix with 'group_membership/'). Example: '{"type": "attribute", "attribute_name": "group/plan", "operator": "eq", "value": "Pro"}' |
| `starting_after` | string | No | Cursor for pagination. Takes a user ID to define the starting position for retrieving subsequent pages. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Remove a User from a Group

**Slug:** `USERFLOW_REMOVE_A_USER_FROM_A_GROUP`

Tool to remove a user from a group (group membership). Use when you need to revoke a user's membership in a specific group. This operation is idempotent and will succeed even if the user is not already a member of the group.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `user_id` | string | Yes | The ID of the user to remove from the group. |
| `group_id` | string | Yes | The ID of the group to remove the user from. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Track an Event

**Slug:** `USERFLOW_TRACK_AN_EVENT`

Tool to record a custom event for a user or group for analytics and personalization. Use when you need to track user actions or behaviors. Events can be associated with just a user, just a group, or both a user and a group.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | The name of the event being tracked. Must consist only of a-z, A-Z, 0-9, underscores, dashes, periods(.) and spaces. Recommended format: snake_case with noun and past-tense verb (e.g., 'subscription_activated'). |
| `time` | string | No | The timestamp when the event occurred in ISO 8601 format. If not provided, the current time will be used. |
| `user_id` | string | No | The ID of the user the event is associated with. Either user_id or group_id (or both) should be provided. |
| `group_id` | string | No | The ID of the group/company the event is associated with. Either user_id or group_id (or both) should be provided. |
| `attributes` | object | No | A dictionary of custom attributes about the event. Can contain any key-value pairs relevant to the event. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |
