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

# Build a Mobile Carousel

> Mobile Carousels are multi-screen flows you can use in a variety of ways. They’re perfect for onboarding new users, highlighting your app’s key features, or.

## Ovreview

Mobile Carousels are multi-screen flows you can use in a variety of ways. They’re perfect for onboarding new users, highlighting your app’s key features, or announcing a new release while clearly demonstrating its value to users.

Mobile Carousels are easy to build and highly customizable, all without writing any code.

## Use Cases

* Educate users about advanced features they may have missed.
* Drive adoption by guiding them through step-by-step setup or configuration.
* Announcing new releases or updates.
* Communicating important alerts or policy changes.

## Prerequisite

<Note>
  To start showing Mobile Carousel to your end users, you’ll need to install the Userpilot script in your mobile application. Feel free to share the [installation instructions](https://docs.userpilot.com/developer/installation/mobile/overview) with your engineering team, or reach out to our support team at [support@userpilot.com](mailto:support@userpilot.com) if you encounter any issues during installation.
</Note>

## **How to create a carousel**

First, go to **Engagement > Mobile** from the navbar, and click **Create Content.**

<img src="https://mintcdn.com/userpilot/0hCXw5eVRU6iqpYB/images/Navbar.png?fit=max&auto=format&n=0hCXw5eVRU6iqpYB&q=85&s=7e5bfe173caff5b4b6b499f222fcb5c7" alt="Navbar.png" width="5760" height="4096" data-path="images/Navbar.png" />

<img src="https://mintcdn.com/userpilot/wmxQrQyJqRV1jwFr/images/emptystate.png?fit=max&auto=format&n=wmxQrQyJqRV1jwFr&q=85&s=0cc3a87ad996fc88734daa5931009b83" alt="empty state.png" width="5760" height="4096" data-path="images/emptystate.png" />

**Next**, select **Mobile Carousel** as your **content type.** You can either **start from scratch** or **choose from a template**.

<img src="https://mintcdn.com/userpilot/0BXmctFYfQD3s2Lh/images/Screenshot2025-07-08at22.08.14.png?fit=max&auto=format&n=0BXmctFYfQD3s2Lh&q=85&s=87946dfceba5ad80831f4f92483a1755" alt="Screenshot 2025-07-08 at 22.08.14.png" width="4212" height="2284" data-path="images/Screenshot2025-07-08at22.08.14.png" />

When you choose **Create from Scratch,** give your carousel a **name** and select a **folder** to categorize your mobile content. This makes it easier to filter and find it later in the Mobile Content Overview table.

<img src="https://mintcdn.com/userpilot/0BXmctFYfQD3s2Lh/images/Screenshot2025-07-09at14.41.51.png?fit=max&auto=format&n=0BXmctFYfQD3s2Lh&q=85&s=661195a905f6ad83aea8ea3e761c6c7b" alt="Screenshot 2025-07-09 at 14.41.51.png" width="3790" height="2168" data-path="images/Screenshot2025-07-09at14.41.51.png" />

## **Design the carousel screens**

Once you complete the **first step** of creating the **carousel**, you’ll be taken to the **Design** tab, where you can **style** the carousel screens however you like.

<Note>
  These settings will be applied to all screens in the carousel to ensure a consistent look and feel throughout the entire flow.
</Note>

### General section

* **Themes:** Choose between your themes for your carousel screens to match your app’s overall style and improve readability for users.
* **Font family:** Select the font used in your carousel screens. By default, it uses the OS's default font to ensure a familiar, consistent experience on all devices.
* **Content alignment:** Set the position of your content on the screen. You can choose:
  * **Top:** Align content to the top of the screen.
  * **Middle:** Center content vertically for balanced layouts.

<img src="https://mintcdn.com/userpilot/0BXmctFYfQD3s2Lh/images/Screenshot2025-07-09at14.52.02.png?fit=max&auto=format&n=0BXmctFYfQD3s2Lh&q=85&s=cc2ffdbd946ea2c3d060c3b70c837268" alt="Screenshot 2025-07-09 at 14.52.02.png" width="3318" height="2174" data-path="images/Screenshot2025-07-09at14.52.02.png" />

<Note>
  Userpilot will display the carousel text using the device’s **default OS font, San Francisco** on **iOS** and **Roboto** on **Android,** but you can use a **custom font** if you prefer.
</Note>

**Button section**

Customize the appearance of the buttons in your carousel by adjusting the Border Width and Border Radius.

* **Border Width:** Controls the thickness of the button outline.
* **Border Radius:** Sets how rounded the button corners appear.

<img src="https://mintcdn.com/userpilot/0BXmctFYfQD3s2Lh/images/Screenshot2025-07-09at15.01.27.png?fit=max&auto=format&n=0BXmctFYfQD3s2Lh&q=85&s=28baed3641fec6fb38a5b5234c8e1333" alt="Screenshot 2025-07-09 at 15.01.27.png" width="3356" height="2196" data-path="images/Screenshot2025-07-09at15.01.27.png" />

**Dismiss section**

Customize the dismiss button that allows users to close the carousel at any time. You can customize the appearance of the dismiss icon using the toggle to enable or disable it.

* **Color:** Lets you choose the color of the dismiss icon (e.g., **Automatic** to match the theme or a **custom** color).
* **Icon Color:** Enables you to specify the exact **color** of the dismiss icon using a **hex code**.

<img src="https://mintcdn.com/userpilot/0BXmctFYfQD3s2Lh/images/Screenshot2025-07-09at15.07.25.png?fit=max&auto=format&n=0BXmctFYfQD3s2Lh&q=85&s=075334d3b4702264813332d127547e14" alt="Screenshot 2025-07-09 at 15.07.25.png" width="3338" height="2192" data-path="images/Screenshot2025-07-09at15.07.25.png" />

**Progress section**

The Progress section controls the progress indicator (the dots shown under each screen), helping users see their place in the flow. You can customize its appearance using the toggle to enable or disable it.

* **Color** lets you choose the color of the progress dots (e.g., **Automatic** to match the theme or a **custom** color).
* **Icon Color** enables you to specify the exact **color** of the progress dots using a **hex code**.

<img src="https://mintcdn.com/userpilot/0BXmctFYfQD3s2Lh/images/Screenshot2025-07-09at15.09.16.png?fit=max&auto=format&n=0BXmctFYfQD3s2Lh&q=85&s=5d9c6bfcabaebe9cc7d2bbf0a3434f64" alt="Screenshot 2025-07-09 at 15.09.16.png" width="3346" height="2200" data-path="images/Screenshot2025-07-09at15.09.16.png" />

## **Carousel** screens **area**

The builder area shows all the screens you’ve created. You can **edit a single screen** by **using** the **screen map** above the mobile preview or by **clicking** the **edit icon** that appears when you hover over a specific screen.

<img src="https://mintcdn.com/userpilot/0hCXw5eVRU6iqpYB/images/Screen+Recording+2025-07-09+at+15.19.38(1).gif?s=a85b6f2479aa655bb671ea44f65c2d76" alt="Screen+Recording+2025-07-09+at+15.19.38 (1).gif" width="1148" height="720" data-path="images/Screen+Recording+2025-07-09+at+15.19.38(1).gif" />

You can also toggle between **Android** and **iOS** previews by clicking on the OS icons.

<img src="https://mintcdn.com/userpilot/0hCXw5eVRU6iqpYB/images/Screen+Recording+2025-07-09+at+15.20.04(1).gif?s=bd7f8b35f0609a70759eab2492067cdc" alt="Screen+Recording+2025-07-09+at+15.20.04 (1).gif" width="1148" height="720" data-path="images/Screen+Recording+2025-07-09+at+15.20.04(1).gif" />

<Note>
  * The OS preview is just a simulator showing how the content will look on iOS and Android. However, we’re planning to let you connect a real device to test your designs in the future.
  * There is no iPad or tablet preview, but Android tablets and iPads are supported.
</Note>

## **Design an individual carousel screen**

### Add a new screen

Click the plus icon to add a new screen to your carousel, making it easy to expand and enhance your flow as needed.

<Info>
  You can add up to **10 screens** to your Mobile Carousels.
</Info>

<img src="https://mintcdn.com/userpilot/0BXmctFYfQD3s2Lh/images/Screenshot2025-07-09at16.28.28.png?fit=max&auto=format&n=0BXmctFYfQD3s2Lh&q=85&s=b491a35a0ec588dafe37ceae274ca09a" alt="Screenshot 2025-07-09 at 16.28.28.png" width="3344" height="2190" data-path="images/Screenshot2025-07-09at16.28.28.png" />

### Edit screen

Click the edit icon or a screen number to open the detailed view for that screen. This lets you customize the content and design for each screen individually, giving you more flexibility in what you show your users.

<img src="https://mintcdn.com/userpilot/0BXmctFYfQD3s2Lh/images/Screenshot2025-07-09at16.31.46.png?fit=max&auto=format&n=0BXmctFYfQD3s2Lh&q=85&s=15bb9dcda6bc025256cfc4e0da9361f9" alt="Screenshot 2025-07-09 at 16.31.46.png" width="3344" height="2192" data-path="images/Screenshot2025-07-09at16.31.46.png" />

### General section

Let’s get started with the General settings for a single screen.

The layout defines the arrangement of the image, title, and text. For example, you can place an image at the top with a title and description below, or choose other configurations to match your needs.

<img src="https://mintcdn.com/userpilot/0BXmctFYfQD3s2Lh/images/Screenshot2025-07-09at15.34.33.png?fit=max&auto=format&n=0BXmctFYfQD3s2Lh&q=85&s=67c25acb7af3e56505aa2c0a4f28976d" alt="Screenshot 2025-07-09 at 15.34.33.png" width="3348" height="2196" data-path="images/Screenshot2025-07-09at15.34.33.png" />

<Danger>
  Switching to the List of Icons layout will reset your step’s content.

  For example, any image and text from the Image, Title, and Text layout will be erased, and vice versa, since the design changes completely.

  You can’t revert to recover the previous content after changing the layout.

  <img src="https://mintcdn.com/userpilot/0BXmctFYfQD3s2Lh/images/Screenshot2025-07-09at15.47.30.png?fit=max&auto=format&n=0BXmctFYfQD3s2Lh&q=85&s=bc7a641c5f14384dc372c950f3e94c42" alt="Screenshot 2025-07-09 at 15.47.30.png" width="3344" height="2190" data-path="images/Screenshot2025-07-09at15.47.30.png" />
</Danger>

### Colors section

You can customize the background color of the carousel screen, as well as the title and text colors, by using a hex code.

<img src="https://mintcdn.com/userpilot/0BXmctFYfQD3s2Lh/images/Screenshot2025-07-09at16.17.31.png?fit=max&auto=format&n=0BXmctFYfQD3s2Lh&q=85&s=dac953f4b1fe49fa85f635f6dcfc17d8" alt="Screenshot 2025-07-09 at 16.17.31.png" width="3344" height="2196" data-path="images/Screenshot2025-07-09at16.17.31.png" />

### Buttons section

Customize the button and border colors, as well as the button label, using hex codes as needed.

<Info>
  For now, the default button action is to navigate to the next step on all carousel screens. In the future, we’ll support more actions to cover additional use cases.
</Info>

<img src="https://mintcdn.com/userpilot/0BXmctFYfQD3s2Lh/images/Screenshot2025-07-09at16.18.31.png?fit=max&auto=format&n=0BXmctFYfQD3s2Lh&q=85&s=e0866bfc54699b769febdd36a6a7c24c" alt="Screenshot 2025-07-09 at 16.18.31.png" width="3338" height="2198" data-path="images/Screenshot2025-07-09at16.18.31.png" />

### Delete screen

Lastly, there’s the Delete Step function. You can remove a screen directly from its individual view or click the delete icon when hovering over a step in the All Screens view.

<img src="https://mintcdn.com/userpilot/0BXmctFYfQD3s2Lh/images/Screenshot2025-07-09at16.23.45.png?fit=max&auto=format&n=0BXmctFYfQD3s2Lh&q=85&s=429c839b8a11c48a45beeebd84838568" alt="Screenshot 2025-07-09 at 16.23.45.png" width="3342" height="2198" data-path="images/Screenshot2025-07-09at16.23.45.png" />

## Customize the carousel screen content

The content of each screen can be edited directly inline.

### Image

You can **update** the **image** and **alt text** to support **accessibility** by **clicking** the **edit icon**, then **adjust** the **Size & Space** settings to **customize** its **appearance**.

* **Width and Height:** set the dimensions of your image in pixels to control its size on the screen.
* **Fill:** the image will expand to fill the available space, possibly cropping to maintain coverage. Best for full-width, impactful visuals.
* **Fit:** the image will resize to fit within the space without cropping, maintaining its original aspect ratio. Best for clear, uncropped images.
* **Corner Radius:** adjust the roundness of the image corners in pixels for a softer or more modern look.

<img src="https://mintcdn.com/userpilot/0hCXw5eVRU6iqpYB/images/Screen+Recording+2025-07-09+at+16.48.28(1).gif?s=31246c6cf7860e1b3c23eaa6acaa74f3" alt="Screen+Recording+2025-07-09+at+16.48.28 (1).gif" width="958" height="720" data-path="images/Screen+Recording+2025-07-09+at+16.48.28(1).gif" />

<Info>
  **Additional  explanation of how Userpilot handles images with Fill and Fit options:**

  **Fill** is like saying, I want this entire space covered, no matter what.

  When you choose **Fill**, **Userpilot** will **stretch or squash** the **image** to completely cover the **width** and **height** of the frame.

  * It doesn’t **preserve** the original **aspect ratio**, which means the image might end up looking **distorted** if it wasn’t designed for that shape.
  * Think of it like stretching a small sticker over a big box—you’ll cover every corner, but it might look a bit warped.
  * This option is great for **abstract backgrounds** or **placeholder visuals** where **distortion** isn’t a problem.

  **For example:**

  * Your **frame** is 300×300.
  * Your **image** is 200×300.
  * Result? It’s **stretched to 300×300**, changing its proportions to fit perfectly in the space, even if it looks a little off.

  ***

  Now, let’s talk about **Fit**. This option says, Show my image as it really is, no distortion allowed.

  When you choose **Fit**, **Userpilot** will **scale** the **image proportionally** so the entire thing is visible within the frame.

  * The **aspect ratio** is **preserved**, so the image keeps its original shape.
  * It might not **fill** the whole space, leaving **empty areas** (like letterboxing) on the sides or top and bottom.
  * This is perfect when you want users to see your **logo**, **product image**, or any visual that needs to look **exactly right**.

  **For example:**

  * Your **frame** is 300×300.
  * Your **image** is 200×300.
  * Result? The image stays **200×300**, perfectly centered, with **50pt** padding on either side to fill the space evenly.

  ***

  **In short:**

  * Choose **Fill** if you want to cover the entire space, even if that means distorting the image.
  * Choose **Fit** if you want to preserve your image’s original shape, even if there’s empty space around it.
</Info>

<Note>
  Videos aren’t supported in Mobile Carousels at the moment, but you can include animated GIFs instead.
</Note>

### Header

The following formatting options are supported for the header:

* **Headings:** H1, H2, and H3.
* **Horizontal Alignment:** Left, Center, and Right.
* **Link:** **Navigate** your users to a specific URL. Userpilot will open the browser to display the link.
* **Personalization:** Insert user or company properties to create a more personalized experience.

### Text

The following formatting options are supported for the text:

* **Font Size:** Set your font size in pixels. Userpilot will automatically convert it to the appropriate unit for mobile, adjusting to the device dimensions to ensure the text is readable.
* **Horizontal Alignment:** Left, Center, or Right.
* **Font Style:** Apply Bold or Italic styling.
* **Link:** Direct users to a specific URL. Userpilot will open the browser to display the link.
* **Personalization:** Insert user or company properties to create a more personalized experience

<img src="https://mintcdn.com/userpilot/0hCXw5eVRU6iqpYB/images/Screen+Recording+2025-07-09+at+16.49.07(1).gif?s=628a23e8c650f3948d6e4b082ca74956" alt="Screen+Recording+2025-07-09+at+16.49.07 (1).gif" width="958" height="720" data-path="images/Screen+Recording+2025-07-09+at+16.49.07(1).gif" />

If you want to return to all screens, simply click on All above the mobile mockup.

<img src="https://mintcdn.com/userpilot/0BXmctFYfQD3s2Lh/images/Screenshot2025-07-09at16.25.37.png?fit=max&auto=format&n=0BXmctFYfQD3s2Lh&q=85&s=c381c1da146bc9a4e53da498ffec005e" alt="Screenshot 2025-07-09 at 16.25.37.png" width="3344" height="2192" data-path="images/Screenshot2025-07-09at16.25.37.png" />

## Localization

<Note>
  You first need to **activate** the **localization settings** from the **Settings** page. For detailed **instructions**, follow the steps in this [Localization](https://docs.userpilot.com/in-app-engagement/checklists/localization#localization) document.
</Note>

Userpilot lets you localize your mobile content to make it more relevant and accessible globally.

Click on the Localization tab and start localizing your content based on the languages you’ve added.

<img src="https://mintcdn.com/userpilot/0BXmctFYfQD3s2Lh/images/Screenshot2025-07-08at22.30.34.png?fit=max&auto=format&n=0BXmctFYfQD3s2Lh&q=85&s=66e78d1c2cc5300cb2606a3af80ddd0e" alt="Screenshot 2025-07-08 at 22.30.34.png" width="3218" height="2246" data-path="images/Screenshot2025-07-08at22.30.34.png" />

<Note>
  **Mobile localization** only works when you **pass** the `locale_code` attribute. Make sure you're setting up localization for both web and mobile using the locale code, since the browser language won’t automatically work on mobile.

  <img src="https://mintcdn.com/userpilot/eKuoNPh2qVInx2ej/images/Screenshot2025-07-09at17.56.02.png?fit=max&auto=format&n=eKuoNPh2qVInx2ej&q=85&s=be96095b1e2ef1a22e2a6259b0a824d9" alt="Screenshot 2025-07-09 at 17.56.02.png" width="3434" height="2418" data-path="images/Screenshot2025-07-09at17.56.02.png" />
</Note>

## Publish your carousel

Once you’ve designed your Mobile Carousel and localized the content, the next step is to configure the carousel settings and publish it to your end users.

### Trigger

Define when the carousel should appear for users. Options include:

* **Start app session:** Perfect for onboarding new users or welcoming them back with important updates as soon as they open the app.
* **Screen-Specific:** Great for feature adoption, highlight a feature or guide users when they reach a specific screen in the app.
* **Event-Occurrence:** Ideal for contextual help or upsell prompts, trigger the carousel when users complete an action like making a purchase or saving a setting.
* **Only-Manually:** Best for advanced use where you want full control. For example, triggering a carousel from a custom button in the mobile app.

<Info>
  You can view the **Only-Manually** trigger code for both iOS and Android, and share it with your engineering team. They can integrate it into the app’s codebase to trigger the carousel whenever an end user interacts with the specific mobile app element containing the code.

  <img src="https://mintcdn.com/userpilot/eKuoNPh2qVInx2ej/images/Screenshot2025-07-09at19.15.44.png?fit=max&auto=format&n=eKuoNPh2qVInx2ej&q=85&s=ee3bf70f5c3fb020967bc172dbef073e" alt="Screenshot 2025-07-09 at 19.15.44.png" width="3888" height="2420" data-path="images/Screenshot2025-07-09at19.15.44.png" />
</Info>

### Environment

Choose where this carousel should be triggered:

* **Staging Environment:** For testing and QA.
* **Production Environment:** For live, end-user experiences.

### Operating System

Select which OS your carousel will appear on:

* **Any operating system:** Both iOS and Android.
* **iOS:** Target only Apple devices.
* **Android:** Target only Android devices.

### **Audience**

Define who should see your carousel:

* **All Users:** Everyone identified user in Userpilot, and using the app.
* **Saved Segment:** A pre-defined user segment.
* **Custom Conditions:** Set specific rules to target users meeting chosen criteria.

### Goal

Set a goal to measure how the carousel influences user behavior:

* **No Goal:** No specific outcome tracked.
* **Perform an Action:** Track if users complete a key action after seeing the carousel.

### Frequency

Control how often users see the carousel:

* **Only Once:** Show a single time per user.
* **Time Based Recurrence:** Repeat after a set period.
* **Until The Goal Is Met:** Would normally repeat until the defined goal is achieved.

<img src="https://mintcdn.com/userpilot/eKuoNPh2qVInx2ej/images/Screenshot2025-07-09at19.13.07.png?fit=max&auto=format&n=eKuoNPh2qVInx2ej&q=85&s=95350b5cde3b9b4814c2c367a4490be1" alt="Screenshot 2025-07-09 at 19.13.07.png" width="3870" height="2410" data-path="images/Screenshot2025-07-09at19.13.07.png" />

## **Schedule your carousel**

If you want to schedule your carousel to go live at a specific date and time, you can easily set that up after clicking the Publish button. Simply select the start date and time for when it should be live, and you can even choose when you’d like it to stop showing to users.

<img src="https://mintcdn.com/userpilot/eKuoNPh2qVInx2ej/images/Screenshot2025-07-09at19.22.08.png?fit=max&auto=format&n=eKuoNPh2qVInx2ej&q=85&s=f9731d90cf353ec2c6d8ea5f6ef30f7f" alt="Screenshot 2025-07-09 at 19.22.08.png" width="3842" height="2440" data-path="images/Screenshot2025-07-09at19.22.08.png" />

<Info>
  The publication time is based on your account’s time zone set in the [General](https://run.userpilot.io/settings/general) page, not the user’s local time.
</Info>

And that’s it. Your Mobile Carousel is ready to publish.
