Your audience
Learn how your audience is identified, how users are added to your project, where data comes from, and how to use that data for segmentation, personalization, and more.
What is a Contact?
A Contact is any user in your project. Within the Airship documentation, we use “user” and “Contact” interchangeably.
You can think of a Contact as a container that holds all the information about a person who can receive messages from you. This includes their devices, communication preferences, and any data you’ve collected about them. While a Contact can be associated with multiple devices, such as a user’s tablet and phone, a device can only be associated with a single Contact.
A Contact can be in one of two states:
Anonymous Contact — This is a user who hasn’t been identified with a specific identifier from your system. Airship automatically creates an Anonymous Contact when someone first interacts with your app, website, or messaging channels. Anonymous Contacts still allow TagsMetadata that you can associate with channels or Named Users for audience segmentation. Generally, they are descriptive terms indicating user preferences or other categorizations, e.g.,
wine_enthusiastorweather_alerts_los_angeles. Tags are case-sensitive., AttributesMetadata used for audience segmentation and personalization. They extend the concept of Tags by adding comparison operators and values to determine whether or not to target a user, helping you better evaluate your audience., Subscription ListsAn audience list of users who are opted in to messaging about a specific topic. Users can manage their opt-in status per list using a Preference Center., and channel association.Named User — This is a user who has been identified with an identifier you provide, such as a customer ID or username from your system. This allows you to connect all of a person’s devices and channels under one identity.
Identifying a Contact as a Named User allows you to modify the Contact through Named User APIs and use the Named User ID for segmentation.
Airship can set targeting data on these identifiers, which are also used to map devices and channels to a specific user.
When a Contact goes from anonymous to named, the anonymous data automatically carries over to the Named User ID, if the Named User is new. If the Named User already exists, a conflict event is emitted by the SDK, and the app is responsible for migrating anonymous data to the existing Named User.
See Named users for more information, including implementation steps.
What is a channel?
A channel is a specific device or communication method that belongs to a Contact. For example, a Contact might have an iOS device, an Android device, an email address, a phone number for SMS, or a web browser registered for web push. Each of these is a separate channel associated with that Contact.
A single Contact can have multiple channels, allowing you to reach the same person through different devices and communication methods. Each channel has a unique Channel IDAn Airship-specific unique identifier used to address a channel instance, e.g., a smartphone, web browser, email address. that Airship uses to identify and send messages to that specific device or communication method.
In another context, “channel” can refer to the communication media supported by the Airship Service: app, web, email, SMS, and Open Channels.
Where Contacts come from
Users enter your project when they interact with your brand through any of your communication channels. Each of these interactions creates a Contact in your project, even if the person hasn’t logged in or provided their name yet.
The way users are added depends on which channel they use to connect with you:
- Mobile apps — When someone installs your iOS or Android app and opens it for the first time, the Airship SDK automatically creates a Contact and registers their device. If they opt in to push notifications, that channel is added to their Contact.
- Web push — When a visitor to your website clicks to allow push notifications, Airship creates a Contact and registers their web browser as a channel.
- Email — Users are added when they submit their email address through an opt-in form or SceneA 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., when you register them manually, or through other methods. Each email address becomes a channel associated with a Contact. See Register users in Getting Started for email.
- SMS — Users are added when they text a keyword to your SMS number, submit their phone number through an opt-in form or Scene, when you register them manually, or through other methods. Each phone number becomes a channel associated with a Contact. See Register users in Getting Started for SMS.
- Open Channels — Users are added when you register them manually for channels like WhatsApp, Facebook Messenger, or other custom messaging platforms. See Register channels in Getting Started for Open Channels.
Where data can be associated with your audience
You can attach data to users at two levels:
- Channel level — This data is tied to a specific device or communication method, such as a particular phone or email address. This level is useful when the information is specific to that device.
- Contact level — This is data tied to the user themselves, which applies across all their devices and channels. This level is recommended for most use cases because it gives you a complete view of each person.
When you identify a Contact as a Named User, you can store data at the Contact level, making it available across all their associated channels. This is especially powerful because it lets you see the full picture of how someone interacts with your brand, regardless of which device or channel they use.
Where audience data comes from
User data can come from multiple sources:
- Automatic collection — Airship SDKs automatically gather basic information like device type, operating system, language, timezone, and country. This happens in the background when users interact with your app or website. See Device properties.
- User actions — When users interact with your messages, make purchases, view content, or complete other activities, Airship records these as EventsEvents represent activities in the Airship system, as well as user behavior in your app or website. You can also send external activities (e.g., POS transactions) into the Airship system as events. Events power Airship data products and can be used in audience segments, as Automation triggers, and for partner integrations. that become part of their profile.
- Your systems — You can send data from your CRM, e-commerce platform, or other business systems to Airship via APIs or CSV uploads. This might include customer IDs, purchase history, preferences, or demographic information.
- User input — Information users provide directly, such as when they fill out forms, answer survey questions in Scenes, or update preferences in a Preference CenterA page where users can manage their opt-in statuses for the Subscription Lists in your project. Preference Centers are presented within your app or website or as an Airship-hosted web page..
- External integrations — Data from partner systems through integrations like Segment, Salesforce, or other platforms you’ve connected to Airship.
How data can be added or removed
You can manage user data in several ways:
- Dashboard — Upload CSV files to add or update user data in bulk, or use the Contact Management tool to view and manage individual users.
- APIs — Use Airship’s REST APIs to programmatically add, update, or remove Tags, Attributes, and other data. This is useful for real-time updates from your systems.
- SDKs — Your mobile app or website can add or remove data directly using Airship SDK methods. This is ideal for capturing user actions as they happen.
- Integrations — Connected platforms like Segment or your CRM can automatically sync data to Airship.
You can remove data by:
- Setting Attributes to empty values or removing Tags
- Using the API to explicitly remove specific data points
- Resetting a Contact to clear all anonymous data, typically done when a user logs out
What you can do with audience data
User data powers many features in Airship that help you send more relevant, effective messages:
Segmentation — Divide your audience into groups based on their data. For example, you might create a SegmentA grouping of audience members selected by unique or shared identifiers. Multiple identifiers can be combined within a Segment. of users who have made a purchase in the last 30 days, or users who live in a specific city. You can then send targeted messages to these Segments. You can create Segments based on:
- Attributes, such as age, location, or purchase history
- Tags, such as “premium_member” or “newsletter_subscriber”
- Events, such as “purchased” or “app_opened”
- Subscription lists
- Device properties
- Named User IDs
Personalization — Customize message content for each individual user. Instead of sending “Hello!” to everyone, you can send “Hello, Sarah!” using the user’s first name Attribute. You can personalize:
- Message text and subject lines
- Product recommendations based on purchase history
- Special offers based on loyalty tier
- Content based on location, language, or preferences
Automation — Trigger messages automatically based on user behavior or data changes. For example, send a welcome message when someone first opens your app, or a re-engagement message if they haven’t visited in 30 days. See Scenes, In-App Automation, and About Automations and Sequences.
Channel Coordination — When you have Named Users with multiple channels, Airship can help you choose the best channel to reach each person. For example, you might prefer to send messages to the channel they used most recently, or let users choose their preferred channel. See Channel Coordination.
Analytics and insights — Use user data to understand your audience better. See which segments are most engaged, which personalization strategies work best, and how user behavior changes over time. See Reports & Analytics.
Advanced features — User data also powers these advanced capabilities:
- Predictive Analytics
- Audience PulseAnalysis of user activity using the Recency, Frequency, Monetary model. You can create Segments from selected tiers and transitions within the reports and use them to target specific users.
- JourneysA continuous user experience of connected Sequences, Scenes, and/or In-App Automations.
- Experimentation
The more complete and accurate your user data, the more effectively you can use these features to create meaningful, relevant experiences for your audience.
Managing the Contact’s identifier (Named User ID)
For the mobile SDKS, see Contacts in the SDK developer documentation.
Email channel association
When an email address is registered through the SDK, it will be registered for both transactional and commercial emails by default. To change this behavior, you can override the options to request Double Opt-InA process where users who sign up for messaging must confirm opting in before they can receive messages. for commercial messages.
Associating an email channel
val properties = JsonMap.newBuilder().put("place", "paris").build()
val options = EmailRegistrationOptions.commercialOptions(commercialDate, transactionalDate, properties)
Airship.contact.registerEmail("your@example.com", options)JsonMap properties = JsonMap.newBuilder().put("place", "paris").build();
EmailRegistrationOptions options = EmailRegistrationOptions.commercialOptions(commercialDate, transactionalDate, properties);
Airship.getContact().registerEmail("your@example.com", options);let options = EmailRegistrationOptions.commercialOptions(
transactionalOptedIn: transactionalDate,
commercialOptedIn: commercialDate,
properties: properties
)
Airship.contact.registerEmail("your@example.com", options: options)UAEmailRegistrationOptions* options = [UAEmailRegistrationOptions commercialOptionsWithTransactionalOptedIn:transactionalDate commercialOptedIn:commercialDate properties:properties];
[UAirship.contact registerEmail:@"your@example.com" options:options];// Not supported
// Not supported// Not supported
// Not supported
// Not supported// Not supported// Not supported
// Not supportedSMS channel association
When an MSISDNThe mobile phone number, including country code, of a device in your Airship audience. Each MSISDN represents an individual mobile device. is registered through the SDK, Airship sends a message to that number, prompting them to opt in. For more information, see the SMS platform documentation: Non-Mobile Double Opt-In.
Associating an SMS channel
val options = SmsRegistrationOptions.options("senderId")
Airship.contact.registerSms("yourMsisdn", options)SmsRegistrationOptions options = SmsRegistrationOptions.options("senderId");
Airship.getContact().registerSms("yourMsisdn", options);let options = SMSRegistrationOptions.optIn(senderID: "senderId")
Airship.contact.registerSMS("yourMsisdn", options: options)UASMSRegistrationOptions* options = [UASMSRegistrationOptions optInSenderID:@"senderId"];
[UAirship.contact registerSMS:"yourMsisdn" options:options];// Not supported
// Not supported// Not supported
// Not supported
// Not supported// Not supported// Not supported
// Not supportedOpen Channel association
Open Channels support notifications to any medium that can accept a JSON payload, through either the Airship API or web dashboard. For more information about Open Channels, see the Open Channels documentation.
Associating an Open Channel
val options = OpenChannelRegistrationOptions.options("platformName")
Airship.contact.registerOpenChannel("address", options)OpenChannelRegistrationOptions options = OpenChannelRegistrationOptions.options("platformName");
Airship.getContact().registerOpenChannel("address", options);let options = OpenRegistrationOptions.optIn(platformName: "platformName", identifiers: identifiers)
Airship.contact.registerOpen("address", options: options)UAOpenRegistrationOptions* options = [UAOpenRegistrationOptions optInSenderID:@"platformName"];
[UAirship.contact registerOpen:"address" options:options];// Not supported
// Not supported// Not supported
// Not supported
// Not supported// Not supported// Not supported
// Not supported