> ## Documentation Index
> Fetch the complete documentation index at: https://help.the-meridian.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Installed

**Store installs app** (`app.installed`) fires the first time a store installs your app. It's the trigger for a welcome email, an onboarding sequence, or an internal notification that a new merchant arrived.

## When it fires

On the store's first successful authentication with your app: the OAuth handshake that creates its install record. It fires **once per store**, not on every sign-in.

There's one subtlety worth knowing: a store can already have a CRM row without ever having installed (the CRM creates one to hang a manually added contact on). Meridian goes by what it has actually recorded, not by the row merely existing, so that store's first real install still fires this trigger.

A store that had the app before and comes back doesn't fire this. That's [Reinstalled](/reinstalled).

## What it carries

The store's own [variables](/automation-variables): name, domain, plan, currency, revenue, install date. No event-specific variables: nothing happened beyond the install itself.

The recipient for a downstream [Send email](/send-email) is the email on the store's install record. For an app hosted on Meridian, that's the address Meridian reads from Shopify during the install, unless your app sends its own `email` to [`identify`](/sdk-identify), which Meridian keeps over Shopify's. For an app [hosted elsewhere](/sdk-hosting), Meridian can't read it, so your app has to pass it as `email` to [`identify`](/sdk-identify) or `mintShopToken`, and that call can land after this trigger fires. The email step reads the address when it runs, so put a [Wait](/wait) of a few minutes before it and a late address still reaches the merchant.

## Building on it

Pick **Store installs app** as the trigger, then add the action to run. Common shapes:

* Send a welcome email straight away.
* Branch on a [segment](/condition-segment) first, so a store that arrives on a paid plan gets a different email from one on the free plan.
* Set an onboarding stage with [Populate custom field](/populate-custom-field), so the rest of Meridian can see where each new store is.


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