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

# Mobile App Journeys

> Set your company category to Mobile app and run push-first journeys on RevenueCat, Superwall and Adapty events

If your product is an iOS or Android app, set your company category to **Mobile app**. Sequenzy then recommends push-first journeys, writes app-aware copy and shows a mobile setup checklist on your dashboard.

## Your company category

Every company has a category: SaaS, Content, Ecommerce, Offline business, Mobile app or Other. It decides which templates are recommended and how AI writes for you.

* **Detected from your website.** When you add a company, Sequenzy reads your site. It classifies it as a mobile app when your homepage links to your App Store or Google Play listing and the site has one more app marker: a smart app banner, an `apple-app-site-association` or `assetlinks.json` file that names your app, an `app-ads.txt` file, or listings in both stores. A site with a web sign-in counts as web software unless it also runs a RevenueCat, Superwall or Adapty web SDK, because many SaaS products link to a companion app.
* **Chosen by you.** Tick **It's a mobile app** when you add the company, or change **Category** under **Settings > Product info**. Your choice is never overwritten by detection.
* **Suggested by integrations.** Connecting [RevenueCat](https://docs.sequenzy.com/integrations/revenuecat.md), [Superwall](https://docs.sequenzy.com/integrations/superwall.md) or [Adapty](https://docs.sequenzy.com/integrations/adapty.md) offers to switch the category to Mobile app.

Over the API, read `websiteType` and `websiteTypeSource` with [Get Company](https://docs.sequenzy.com/api-reference/companies/get.md) and set it with [Update Company](https://docs.sequenzy.com/api-reference/companies/update.md). With the CLI, use `sequenzy companies update <id> --category mobile_app`; with MCP, `update_company` with `websiteType`.

## The journeys

Each journey starts on an event Sequenzy already receives. RevenueCat, Superwall and Adapty all send the same `saas.*` events, so the journeys work with any of them.

| Journey | Starts on | Stops when | Goal |
| - | - | - | - |
| New Install Onboarding | Your backend adds a new user (`contact_added`) | - | `saas.trial_started` |
| Trial to Paid | `saas.trial_started` | `saas.purchase` | `saas.purchase` |
| Paywall Viewed, Not Converted | `paywall_viewed` sent from your app | `saas.purchase`, or a `saas.trial_started` after the paywall view | `saas.purchase` |
| Billing Issue Recovery | `saas.payment_failed` | `saas.purchase` (the payment went through), or `saas.churn` (it expired) | `saas.purchase` |
| Cancellation Save | `saas.cancelled` (auto-renew turned off) | `saas.uncancelled` (auto-renew turned back on), or `saas.purchase` | `saas.uncancelled` |
| Annual Renewal Reminder | `saas.purchase.yearly` | `saas.cancelled` | `saas.purchase.yearly` |
| Expired Subscription Win-Back | `saas.churn` | `saas.purchase` | `saas.purchase` |
| Lapsed User Re-Engagement | No `app.screen_viewed` for 14 days, for users who opened the app before | `app.screen_viewed` (they open the app again) | `app.screen_viewed` |

Stops are events, so the journeys work whether or not your workspace uses tag sync rules. Turning auto-renew back on in RevenueCat, Superwall or Adapty sends `saas.uncancelled`, and Cancellation Save ends before its next message, even when the store reports the change late. Someone who turns auto-renew back on and then cancels again while the journey is still running is not sent the rest of it; they can enter again after it ends.

Trial to Paid times its reminder to one day before the event's `trialEndsAt`, Cancellation Save to two days before `cancelsAt`, and the renewal reminder to seven days before `periodEnd`. A contact whose event has no such date leaves the journey instead of getting a reminder at the wrong time.

New Install Onboarding starts when a contact is added through [Add Subscriber](https://docs.sequenzy.com/api-reference/subscribers/create.md) or an import or integration that runs automations. The SDK's `identify` links a device to a contact without starting automations, so call Add Subscriber from your signup flow.

Paywall Viewed needs your app to send a `paywall_viewed` event with the [mobile SDK](https://docs.sequenzy.com/concepts/mobile-sdks.md); with Superwall, forward its `paywallOpen` delegate event under that name. Lapsed User Re-Engagement needs screen tracking from the SDK.

## How a journey is built

* **Push first, email as fallback.** Most journeys branch on **Reachable by push**: an active device on a platform you have set up ([APNs, FCM or web push](https://docs.sequenzy.com/concepts/push-notifications.md)). Those contacts get push and in-app messages; everyone else gets email. In New Install Onboarding, Trial to Paid, Expired Subscription Win-Back and Lapsed User Re-Engagement, the check runs when the first push or email is due, not when the contact enters, so a user who allows notifications during their first session still gets push. Paywall Viewed and Cancellation Save check when the contact enters, because their first push and first email are due at different times. Once decided, a contact stays on that path for the rest of the journey. [In-app messages](https://docs.sequenzy.com/concepts/in-app-messages.md) reach both groups the next time the app opens. Billing Issue Recovery and the Annual Renewal Reminder are service notices, so everyone gets their emails, and their push steps simply skip contacts push cannot reach.
* **Quiet hours.** Every wait ends between 09:00 and 21:00 in each contact's own timezone, so a push never lands at night. A contact without a timezone uses the one their app reported when it registered for push, and UTC when neither is known.
* **Frequency cap.** Email steps respect your frequency cap. Push and in-app steps are not counted against it.
* **Superwall offers.** Win-back and paywall in-app messages carry `superwall_placement` in their data (`winback_offer` or `paywall_reminder`). Read it in your in-app delegate and call `Superwall.register(placement:)` to show the offer.

Journeys are created as drafts. Emails are written by AI from your brand; push and in-app copy comes from the template, so edit it before you turn the journey on. From the API, list templates with [List Sequence Templates](https://docs.sequenzy.com/api-reference/sequences/templates.md) and create one with [Create Sequence from Template](https://docs.sequenzy.com/api-reference/sequences/create-from-template.md). With the CLI, use `sequenzy sequences templates` and `sequenzy sequences create-from-template <templateId>`; with MCP, `list_sequence_templates` and `create_sequence_from_template`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.