# Userpilot Mobile Device Mode Destination

## Destination Info

* Accepts [Group](/docs/segment/connections/spec/group), [Identify](/docs/segment/connections/spec/identify), [Track](/docs/segment/connections/spec/track) calls.
* Refer to it as **Userpilot Mobile** in the [Integrations object.](/docs/segment/guides/filtering-data/#filtering-with-the-integrations-object)
* This integration is **partner owned.** Please reach out to the partner's support for any issues.
* This destination is **Beta.**

Userpilot helps product teams deliver personalized in-app experiences to increase growth metrics at every stage of the user journey. When you integrate Userpilot with Segment, you can send your Segment events to Userpilot, enabling you to create more personalized experiences for your users across the product lifecycle.

[Userpilot](https://www.userpilot.com/?utm_source=segmentio\&utm_medium=docs\&utm_campaign=partners) provides in-app guidance, product tours, and contextual onboarding experiences to help teams activate users and drive feature adoption.

Userpilot maintains this destination. For any issues with the destination, [contact the Userpilot Support team](mailto:support@userpilot.com).

## Getting started

1. From your workspace's [Destination catalog page](https://app.segment.com/goto-my-workspace/destinations/catalog), search for *Userpilot Mobile (Device Mode)*.
2. Select **Userpilot Mobile** and click **Add Destination**.
3. Select an existing Source to connect to Userpilot.
4. Go to the [Userpilot installation dashboard](https://run.userpilot.io/installation), and copy your **App Token**.
5. Enter the **App Token** in the Userpilot destination settings in Segment.

## Supported methods

Userpilot supports the following methods, as specified in the [Segment Spec](/docs/segment/connections/spec).

### Identify

Send [Identify](/docs/segment/connections/spec/identify) calls to associate a user with traits. These are used for segmentation, personalization, and lifecycle targeting.

```swift
analytics.identify(userId: "<USER_ID>", traits: [
  "email": "john.doe@example.com",
  "name": "John Doe",
  "plan": "Pro",
  "createdAt": "2019-10-17"
])
```

Calling Identify from Segment triggers `userpilot.identify`. Segment recommends passing as much data as possible to get the most out of Userpilot.

Data passed in an Identify call can be organized under these different categories:

* Properties about the user such as `plan` or `userRole` help target a specific segment
* Properties to personalize the content of the Userpilot experiences, such as `name` or `company`
* Properties to target users based on their lifecycle, such as `createdAt`, which allows you to target newly created accounts or accounts that have yet to achieve a certain feature in the user lifecycle

These appear within Userpilot's user dashboard and power audience segmentation and targeting.

### Group

Send [Group](/docs/segment/connections/spec/group) calls to associate users with an account, organization, or project.

```swift
analytics.group(groupId: "<GROUP_ID>", traits: [
  "companyName": "Acme Inc.",
  "subscriptionTier": "Enterprise"
])
```

Calling Group from Segment triggers `userpilot.identify` with company-level traits, allowing you to use company metadata in targeting logic.

### Screen

Send [Screen](/docs/segment/connections/spec/screen) calls to track navigation or screen changes in mobile apps.

```swift
analytics.screen(title: "Home")
```

Calling Screen from Segment triggers `userpilot.screen` event. This allows Userpilot to:

* Trigger relevant experiences configured for specific pages/screens.
* Check for ongoing experiences already running.

### Track

Send [Track](/docs/segment/connections/spec/track) calls to log user actions or custom events.

```swift
analytics.track(name: "Added to Cart", properties: [
  "itemId" : "sku_456",
  "price" : 29.99
])
```

Calling Track from Segment triggers `userpilot.track`. These custom events can be used to:

* Trigger specific experiences (for example, a Carousel or Survey)
* Monitor user behavior for analytics or lifecycle targeting

## Engage

You can send computed traits and audiences generated using [Engage](/docs/segment/engage) to this destination as a **user property**. To learn more about Engage, schedule a [demo](https://segment.com/contact/demo).

For user-property destinations, an [identify](/docs/segment/connections/spec/identify/) call is sent to the destination for each user being added and removed. The property name is the snake\_cased version of the audience name, with a true/false value to indicate membership. For example, when a user first completes an order in the last 30 days, Engage sends an Identify call with the property `order_completed_last_30days: true`. When the user no longer satisfies this condition (for example, it's been more than 30 days since their last order), Engage sets that value to `false`.

When you first create an audience, Engage sends an Identify call for every user in that audience. Later audience syncs only send updates for users whose membership has changed since the last sync.

> \[!NOTE]
>
> Real-time audience syncs to Userpilot Mobile Device Mode  may take six or more hours for the initial sync to complete. Upon completion, a sync frequency of two to three hours is expected.

## Settings

Segment lets you change these destination settings from the Segment app without having to touch any code.

| Field | Description                         | Required | Type   |
| ----- | ----------------------------------- | -------- | ------ |
| Token | Your Userpilot mobile account token | Yes      | string |
