# Messaging basics

How messaging works, what you can send, and how you can send it

> **Tip:** Throughout our documentation, you will see underlined terms. Hover over a term to see its definition. Most terms also function as links. We also have a full [Glossary](https://www.airship.com/docs/reference/glossary/).


## How messaging works

Before you can send messages, you need:

1. An **app or website** integrated with the Airship software developer kit (SDK).

   The SDK enables communication with mobile devices and web browsers. If you are only sending SMS or email notifications, SDK integration is not required. Notifications sent to [Open Channels](#message-types) also do not require SDK integration, but your webhook server must be able to process and interpret a JSON payload.

1. An **audience** of your app's or website's opted-in users. An exception to this is [Apple News](https://www.airship.com/docs/reference/glossary/#apple_news) notifications, which are sent to Apple News subscribers. Apple News audience management is not handled via Airship.

1. A **container** for your messages. In Airship, this container is a *project*. 
   
   You will create a project in the [Dashboard](https://www.airship.com/docs/reference/glossary/#dashboard) for each app or website you want to communicate with. Almost everything you do with Airship, including creating messages, happens inside a project. A project is essentially Airship's representation of your app or website. A project:

   * Is a record for your app, website, and any other channels you use to communicate with your audience
   * Stores your message history, message templates, audience and analytic data, channel configuration, default message configuration settings, and more
   * Contains the keys required to talk to various notification services — More about keys:
   [The SDKs and APIs: Authentication](https://www.airship.com/docs/guides/getting-started/developers/sdk-api/#authentication)

With the above in place, then:

1. **You create a message** using a [[Composer](https://www.airship.com/docs/reference/glossary/#composer)](#composers) or the API.

1. **Your app or website interprets the message** via the Airship SDK,
   **displaying or delivering it to users.** SMS, email, and Apple News notifications are instead interpreted by a native client.

1. **Users see your message.** When and where they see the message depends on message type, delivery settings, and automation.

## Channels

When you read "channel," it could mean one of three things:

* **Engagement** channel — A communication medium supported by the Airship Service. Supported channels include app, web, email, SMS, and Open Channels.

* **Development** channel — An instance representing an entity addressable via the Airship Service, e.g., an iOS device, email address, SMS number, or web browser. 

* **Channel ID** — An Airship-specific unique identifier for a development channel instance, e.g., a mobile device, web browser, or email address.

We specify *Channel ID* as such in our documentation. *Engagement* and *development* are generally implied by context. For more information, see [Intro to Channels](https://www.airship.com/docs/guides/getting-started/developers/channels-intro/).

## Message types — *What you can send* {#message-types}

Message type availability varies per engagement channel. Being able to send from the [Dashboard](https://www.airship.com/docs/reference/glossary/#dashboard) or API varies per message type. The next sections describe both. See also [Live Activity](https://www.airship.com/docs/reference/glossary/#live_activity) and [Live Update](https://www.airship.com/docs/reference/glossary/#live_update).

### App

Supported message types for the App channel and whether they can be sent from the [Dashboard](https://www.airship.com/docs/reference/glossary/#dashboard) or API:

| Message type | Description | Dashboard or API support |
| --- | --- | --- |
| **Push notification** | A push notification is a message that can appear on any screen on a mobile device. Push notifications appear as banners. [Learn more](https://www.airship.com/docs/guides/messaging/messages/content/app/push-notifications/) | Dashboard, API |
| **Message Center** | Message Center is both a place in your app where you can display persistent rich messages, including HTML, video, etc., and a message type. Similar to email, Message Center represents both the medium (the in-app inbox) and the message type (the messages you send to the inbox). [Learn more](https://www.airship.com/docs/guides/features/messaging/message-center/) | Dashboard, API |
| **In-app message** | An in-app message is a message that appears inside of your app. You can send in-app messages to your entire app audience, not just users who have opted-in to push notifications. The standard format, as opposed to In-App Automation, is a banner that slides downward or upward from the top or bottom of a device screen. [Learn more](https://www.airship.com/docs/guides/messaging/messages/content/app/in-app-messages/) | Dashboard, API |
| **In-App Automation** | In-App Automation refers to messages cached on users' devices and displayed when users meet certain conditions within your app, such as viewing a particular screen or opening the app a certain number of times. [Learn more](https://www.airship.com/docs/guides/features/messaging/in-app-automation/) | Dashboard |
| **Scene** | A Scene is a mobile app or web experience of one or more screens displayed with fully native UI components in real time, providing immediate, contextual responses to user behaviors. Scenes can be presented in full-screen, modal, or embedded format using the default swipe/click mode or as a Story. They can also contain survey questions. [Learn more](https://www.airship.com/docs/guides/features/messaging/scenes/scenes/) | Dashboard |
| **Story** | A Story is a Scene set to automatically transition to the next screen without swiping or clicking. [Learn more](https://www.airship.com/docs/guides/features/messaging/scenes/surveys-stories/#story-mode) | Dashboard |
| **Embedded Content** | Embedded Content is an alternative Scene format that can be displayed on any app or web screen in a view defined by a developer. It can also be presented in Story format. [Learn more](https://www.airship.com/docs/guides/features/messaging/scenes/embedded-content/) | Dashboard |

### Web

Supported message types for the Web channel and whether they can be sent from the [Dashboard](https://www.airship.com/docs/reference/glossary/#dashboard) or API:

| Message type | Description | API support |
| --- | --- | --- |
| **Web push notification** | A web push notification is a message that appears in the top or bottom right corner of a web browser or in a notification center. On mobile devices, web push notifications appear similar to push notifications. [Learn more](https://www.airship.com/docs/guides/features/messaging/push-notifications/) | Dashboard, API |
| **Scene** | A Scene is a mobile app or web experience of one or more screens displayed with fully native UI components in real time, providing immediate, contextual responses to user behaviors. Scenes can be presented in full-screen, modal, or embedded format using the default swipe/click mode or as a Story. They can also contain survey questions. [Learn more](https://www.airship.com/docs/guides/features/messaging/scenes/scenes/) | Dashboard |
| **Story** | A Story is a Scene set to automatically transition to the next screen without swiping or clicking. [Learn more](https://www.airship.com/docs/guides/features/messaging/scenes/surveys-stories/#story-mode) | Dashboard |
| **Embedded Content** | Embedded Content is an alternative Scene format that can be displayed on any app or web screen in a view defined by a developer. It can also be presented in Story format. [Learn more](https://www.airship.com/docs/guides/features/messaging/scenes/embedded-content/) | Dashboard |

### Email, SMS, and Open channels

Supported message types for the Email, SMS, and Open channels and whether they can be sent from the [Dashboard](https://www.airship.com/docs/reference/glossary/#dashboard) or API:

| Message type | Description | Dashboard or API support |
| --- | --- | --- |
| **Email** | Email is an HTML or plain-text message that you send to registered users. Email notifications appear in recipients' email inboxes. [Learn more](https://www.airship.com/docs/guides/features/messaging/email/) | Dashboard, API |
| **SMS** | An SMS is a message that you can send to an MSISDN (phone number) over the SMMP protocol to devices that have opted in for a specific sender ID (long or short code). SMS messages appear in recipients' native SMS clients. Generally speaking, SMS is inclusive of MMS and RCS. [Learn more](https://www.airship.com/docs/guides/messaging/messages/content/sms/) | Dashboard, API |
| **Open channel** | An Open channel message can be sent to any medium that can accept a JSON payload. [Learn more](https://www.airship.com/docs/guides/features/messaging/open-channels/) | Dashboard, API |

## Composers — *How you can send* {#composers}

You can create a message of any type in the dashboard using a composer. Composers are defined by what you can include and control: message types, delivery, and automation. The following sections describe the composers you can use per channel and which message types are supported for each.

See [Message types](#message-types) above for API support per message type.

### App

These composers support the app channel only and are for sending the single message type they are named for:

* [Apple News](https://www.airship.com/docs/reference/glossary/#apple_news)
* [In-App Automation](https://www.airship.com/docs/reference/glossary/#iaa)

### App and Web

The Scene composer supports the app and web channels for these message types:

* Scene
* Story
* Embedded Content

### All channels

The composers listed in the following table support all channels for these message types:

* Push notification
* In-app message
* Message Center
* Web push notification
* Email
* SMS
* Open channel

They also support combining message types in a single send.

| Composer | Description |
| --- | --- |
| **Message** | Send a single message. [Learn more](https://www.airship.com/docs/guides/messaging/messages/create/) |
| **A/B Test** | Experiment with different variations of a message. [Learn more](https://www.airship.com/docs/guides/experimentation/a-b-tests/messages/) |
| **Automation** | Automatically send a message to users when they meet certain conditions. [Learn more](https://www.airship.com/docs/guides/messaging/messages/sequences/about/) |
| **Sequence** | Automatically send a series of messages to users when they meet certain conditions. [Learn more](https://www.airship.com/docs/guides/messaging/messages/sequences/about/) |


<!--

### Experimentation and Journeys

-->

## Reporting

So you've established an audience and sent your messages. Now what? Dig into reporting at every level:

* [Message Reports](https://www.airship.com/docs/guides/reports/message/) evaluate the performance of individual messages. Messages created with the A/B Test higher-level statistical report along with a message report for each variant. For Sequences, the Performance report shows audience behavior compared to the Sequence’s goal and a message report for each message in the Sequence.
   * [Scene Reports](https://www.airship.com/docs/guides/messaging/in-app-experiences/scenes/create/scene-reports/)
   * [A/B Test Reports](https://www.airship.com/docs/guides/experimentation/a-b-tests/messages/)
   * [Sequence Performance](https://www.airship.com/docs/guides/messaging/messages/sequences/performance/)
   
* [Engagement Reports](https://www.airship.com/docs/guides/reports/engagement/) explain aggregate user engagement activity, response rates, and important high-level statistics such as opt-in/opt-out and uninstall levels by platform.

* [Performance Analytics](https://www.airship.com/docs/reference/glossary/#pa) provides customizable dashboard-style reports using advanced analytics to show and
   interpret engagement with your app, website, and across multiple apps.

You can also set up [integrations with Airship partners](https://www.airship.com/docs/integrations/) and use [Real-Time Data Streaming](https://www.airship.com/docs/reference/glossary/#rtds) to send you Airship events to an outside system.

<!--

## Message components

Whatever message type you create, the building blocks of a message are:

* *Audience* — The channels you want to send your message to and the users on those channels.
* *Content* — The text, media, and settings that determine how the message is experienced by your audience.
* *Delivery* — The timing and other options that determine when the message is sent.

-->

<!-- From old "how messaging works page

## Integration {#integration}

To take advantage of Airship, you must have an app, website, or another
medium, e.g, SMS, email, etc., that you want to use to communicate with your
users.

### Apps and websites

Your app or website must include the Airship SDK. The SDK enables communication with mobile devices and web browsers and is the mechanism for registering your users as [Channels](https://www.airship.com/docs/reference/glossary/#channel_engage). The SDK also interprets message payloads that you send to your users, tracks user trends within your app, and enables [Named User](https://www.airship.com/docs/reference/glossary/#named_user), [Channel Coordination](https://www.airship.com/docs/reference/glossary/#channel_coordination), and predictive features: [Predictive Churn](https://www.airship.com/docs/reference/glossary/#predicted_to_churn) and [Optimal Send Time](https://www.airship.com/docs/reference/glossary/#optimal_send_time).


### SMS, Email, and open channels

You do not need to use the Airship SDK for SMS, email, or open channels.
However, these channels typically require you to use the API to register new
channels and perform other features.

SMS and email are native messaging channels; you can register users via the
API, but you don't need to do anything special to communicate with your users
via SMS or email.

However, while email and SMS channels are convenient mediums and easy to set
up, they do not provide the orchestration and predictive features that help
you better understand your user base. Data and analytic features generally
require the SDK.

Open channels are platforms that are not natively supported by the
Airship SDK. To use Airship with open channels, your open platform, e.g.,
chatbot, Slack integration, must be able to
accept and interpret a JSON payload. Typically you will enable the delivery of the
payload via a webhook server. See: [Open Channels](https://www.airship.com/docs/developer/api-integrations/open/).

-->

<!-- remove all this?

#### Channels and Channel IDs

The underlying representation of an audience member is a [channel](https://www.airship.com/docs/guides/getting-started/developers/channels-intro/),
which is represented by a unique identifier, the *channel ID*. A channel contains all the necessary information that you (and the
Airship service) need to communicate with your users, including but not limited to: metadata used for targeting,
associations with other Airship or third-party identifiers, opt-in/opt-out status,
orchestration data, and more.

-->

<!--- commmenting this part out until the channels guide has the disambiguation

A channel is a platform that you want to use to communicate with users, like
Android, iOS, or SMS. Your channels are typically integrated with Airship
but not all channels require integration. See
[Integration](#integration) above

-->

<!-- remove all this?

To target a channel directly, use the `channel_id` which you will find in the [channel object](https://www.airship.com/docs/developer/rest-api/ua/schemas/channels/#channellistingobject). The channel ID is a [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier)
representing an individual device, e.g., smartphone, browser, email address,
etc.

Channel IDs are the atomic units of an audience and are assigned upon initial registration of a user.
In the case of app and web users, our SDK creates the channel automatically. For email, SMS, and open channels,
you must use our channel registration API to generate an addressable channel.

In most cases, however, it's not necessary to know the channel ID for each user in order to target either an individual
user or groups of users. We have a number of other ways to group and target users such as tags, tag groups,
audiences lists, segments, etc. See [Segmenting Your Audience](https://www.airship.com/docs/guides/audience/segmentation/segmentation/) for details about other targeting mechanisms.

-->

<!-- TO DO

### Opt In Status

Before your mobile app or website audience can receive notifications, they must opt-in to notifications. In most cases, users of your Airship-integrated app or website automatically become potential members of your audience. Just using your app and/or site registers users as channel IDs in our system.

SMS, email, and open channels do not require SDK integration, so opt-in status
is maintained...

 -->

<!-- remove all this?

#### Selecting an Audience

In most cases, you won't concern yourself with individual channel IDs. You
will instead select an audience based on things your channel IDs have
in common. First you'll select which channels to address: Android, iOS, SMS,
etc. Then you'll either select your entire audience, or just a section of your audience, based on tags, segments, and other identifying characteristics.

This is represented in the dashboard as:

* **All Users** sends the message to your entire audience.

* **Target Specific Users** lets you create a recipient group based on
   segmentation data. See:
   [Segmenting Your Audience](https://www.airship.com/docs/guides/audience/segmentation/segmentation/).

* **Test Users** are predefined recipient groups. After choosing Test Users,
   select from the *Test Groups* dropdown menu that appears. See:
   [Preview and Test Groups](https://www.airship.com/docs/guides/audience/preview-test-groups/).

* **Upload Users** lets you upload a list of users just before sending the
   message. See: [Create and Send](https://www.airship.com/docs/reference/glossary/#create_and_send).


#### Targeting

Airship groups channel IDs by tag, named user, segments, audience
lists, and more. In addition to your own tags, Airship's predictive
features group users based on how they use your app, their time zone, and
other data reported by the SDK. You can use these grouping mechanisms to
target specific sections of your audience.


##### Tags

Tags are plain-text identifiers for channel_ids. Some tags are assigned by
Airship as the SDK gathers relevant, identifying information from the
SDK, e.g., time zone, locale, etc. But, in many cases, you can assign tags to
users arbitrarily or based on actions within your app and in response to
messages. For example, you might use tags to determine where a customer is in
a particular engagement funnel — not opening notifications, opening
notifications, acting on notifications, etc. See: [Tags](https://www.airship.com/docs/guides/audience/tags/).

##### Named Users

A named user is set of channel_ids that represent a single user. For example,
if a user logs into your website and app, a named user groups those
channels into a single entity, so you can better understand a customer's
behavior.

Named users are typically assigned by the SDK. You don't have use an external
system or otherwise figure out which channel IDs belong to which people; we do
that for you. Named users have most of the same characteristics as channel
IDs; you can assign tags to them, select audiences of named users, etc. Named
users are the atomic unit for Airship's analytic features. You have to
use named users to take advantage of the system's predictive features. See:
[Named Users](https://www.airship.com/docs/guides/audience/named-users/).

-->