# Audience management tools Look up and manage contacts, retrieve channel IDs, and upload audience data over SFTP. # Contact management > Look up contacts, view their channels and named users, and manage records or suppression. You can use the contact management tool to view details about specific contacts and remove channels and contacts from your Airship records. If on an [AXP](https://www.airship.com/docs/reference/feature-packages/) plan, you can also create [named users](https://www.airship.com/docs/reference/glossary/#named_user) and add/remove [channels](https://www.airship.com/docs/reference/glossary/#channel_term) to/from a named user. For SDK methods for managing named users, see [Contacts](https://www.airship.com/docs/sdk-topics/contacts/) in our developer documentation. ## Contact lookup You can look up a contact using these identifiers: * [Channel](https://www.airship.com/docs/reference/glossary/#channel_term) ID * [Named user](https://www.airship.com/docs/reference/glossary/#named_user) ID — Case-sensitive * [Device token](https://www.airship.com/docs/reference/glossary/#device_token) * Email address * Phone number — Can include a combination of spaces, dashes, and braces around the area code, for example: `18001234567`, `1 800 123 4567`, and `1 (800) 123-4567` ### Looking up a contact To look up a contact: 1. Go to **Audience**, then **Contact Management**. 1. Enter an identifier and select **Look up**. Lookup results list for each identifier and associated named user, if any: * Creation date and time * Last registration or modified date and time * Associated channel types 1. For more information about a channel or named user, select the right arrow icon (→). See the next two sections for descriptions of those views. ![Email channel and named user returned for a channel ID lookup](https://www.airship.com/docs/images/contact-mgmt-search_hu_5084ed6fbea1c679.webp) *Email channel and named user returned for a channel ID lookup* ### Viewing channel details 1. [Look up a contact](#looking-up-a-contact). 1. For a returned channel, select the right arrow icon (→). Data displayed for each channel: * Identifier * [Channel](https://www.airship.com/docs/reference/glossary/#channel_term) ID * Creation and last registration dates and times * Installation status * Opt-in status * App, web, and open channels display **Opted-In** or **Opted-Out**. **Background Enabled** or **Background Disabled** appears for app channel background push. * SMS channels have a check box, which is checked if opted in. You can check/uncheck the box to change the status. * Email channels have **Commercial** and **Transactional** check boxes, which are checked if opted in. You can check/uncheck the boxes to change the status. * If an email or SMS channel is suppressed, you will see a button for removing suppression. See [Removing suppression](#removing-suppression). * Tracking status — Email channels have **Open tracking** and **Click tracking** check boxes, which are checked if opted-in. You can check/uncheck the boxes to change the status. * In a holdout group — This label appears if the channel is currently excluded from messaging as part of an active [Holdout Experiment](https://www.airship.com/docs/reference/glossary/#holdout_experiment). ![Details for email, SMS, iOS, and web channels](https://www.airship.com/docs/images/contact-mgmt-channels_hu_1d4c0401b9a772dd.webp) *Details for email, SMS, iOS, and web channels* 1. Select the down arrow icon (▼) for information associated with the channel. Data displayed per tabbed section: | Section | Description | | --- | --- | | **Channel detail** | Channel ID, push address, and aliases, if any. Email channels also display commercial and transactional opt-in/out dates, if any. | | **Channel tags** | [Tags](https://www.airship.com/docs/reference/glossary/#tag) | | **Tag groups** | [Tag groups](https://www.airship.com/docs/reference/glossary/#tag_group) and the tags within the groups | | **Attributes** | [Attribute](https://www.airship.com/docs/reference/glossary/#attribute) IDs, types, and values. For JSON attributes, the ID is formatted as ``. See [JSON attributes](https://www.airship.com/docs/guides/audience/attributes/about/#json-attributes) in _About attributes_. | | **Device properties** | [Device property](https://www.airship.com/docs/reference/glossary/#device_property) tag groups and the tags within the groups | | **Subscription lists** | [Subscription list](https://www.airship.com/docs/reference/glossary/#subscription_list) IDs | | **Holdout group history** | The [Holdout Experiment](https://www.airship.com/docs/reference/glossary/#holdout_experiment) name and start and end times when the user was excluded from messaging | ### Viewing named user details To view information about a named user: 1. [Look up a contact](#looking-up-a-contact). 1. For a returned named user, select the right arrow icon (→). Data displayed per tabbed section: | Section | Description | | --- | --- | | **Channels** | Each channel is listed separately. The appearance and functionality is identical to the [detail view for a channel](#viewing-channel-details). | | **User Tag Groups** | [Tag groups](https://www.airship.com/docs/reference/glossary/#tag_group) and the tags within a group. | | **Attributes** | [Attribute](https://www.airship.com/docs/reference/glossary/#attribute) IDs, types, and values. For JSON attributes, the ID is formatted as ``. See [JSON attributes](https://www.airship.com/docs/guides/audience/attributes/about/#json-attributes) in _About attributes_. | | **Message History** | A list of messages sent to the user within the last 30 days. | ![Named user details](https://www.airship.com/docs/images/contact-mgmt-named-user_hu_7ff4265973b8ef05.webp) *Named user details* ## Creating a named user [AXP](https://www.airship.com/docs/reference/feature-packages/) If a channel is not yet associated with a named user, you can manually create one: 1. [Look up a contact](#looking-up-a-contact). 1. For a returned channel, select the right arrow icon (→). 1. Select **Create Named User**. 1. Enter the user name. 1. Select **Submit**. The channel and any channels associated with it will be associated with the named user. ## Associating channels with a named user [AXP](https://www.airship.com/docs/reference/feature-packages/) To add a channel: 1. [Look up a contact](#looking-up-a-contact). 1. For a returned named user, select the right arrow icon (→). 1. Select **Add/edit channels**. 1. Enter a contact identifier and select **Look up**. 1. Select **+ Add channel** for an individual channel. * If the channel you want to add is already associated with a named user, both the individual channel and its currently associated named user will be listed in the results. * If you searched for a named user, or if a named user was returned when searching for a different identifier, select **▼ View channels** to see its associated channels. Select **+ Add channel** to disassociate the channel from its current named user and associate it with the named user you are editing. To disassociate a channel from a named user: 1. [Look up a contact](#looking-up-a-contact). 1. For a returned named user, select the right arrow icon (→). 1. Select **Add/edit channels**. 1. Select **Remove** for a channel. ## Deleting a channel To remove a channel from your Airship records: 1. [Look up a contact](#looking-up-a-contact). 1. For a returned channel, select the right arrow icon (→). Make sure to select a channel, not a named user. The option to delete a channel is not available when viewing details for a channel within a named user record. 1. Select **Delete this channel**. ## Deleting a contact To remove a contact and its associated channels from your Airship records: 1. [Look up a contact](#looking-up-a-contact). 1. Select the right arrow icon (→) for a channel or named user. 1. Select **Delete this contact**. ## Removing suppression To remove suppression for an [email](https://www.airship.com/docs/developer/api-integrations/email/bounce-handling/) or [SMS](https://www.airship.com/docs/developer/api-integrations/sms/opt-in-out-handling/#suppression) channel: 1. [Look up a contact](#looking-up-a-contact). 1. For a returned channel, select the right arrow icon (→). 1. Select the information icon (ⓘ) next to the Opt-in Status check box to view the reason. 1. Select **Remove suppression**. The button is only present if the channel is suppressed. The [Real-Time Data Streaming](https://www.airship.com/docs/reference/glossary/#rtds) [Email registration event](https://www.airship.com/docs/developer/rest-api/connect/schemas/email-compliance-events/#registration) for this action includes the username of the user who removed suppression. After removing suppression, you must also opt the channel back in to messaging before they can receive email from you again. # Finding channel IDs > Find the channel ID for a mobile app or web browser, programmatically or with the Channel Capture tool. Follow these methods to find the [channel](https://www.airship.com/docs/reference/glossary/#channel_term) ID in a mobile app or web browser. ## Find a mobile app channel ID A channel ID is created when the Airship SDK registers a device. The methods below cover retrieving it from your app code, exposing it to end users, or finding it during testing. ### Programmatic access You can access the channel ID directly through the SDK in your app code: #### iOS Swift ```swift let channelID = Airship.channel.identifier ``` #### iOS Objective-C ```objc NSString *channelID = UAirship.channel.identifier; ``` #### Android Kotlin ```kotlin val channelId = Airship.channel.id ``` #### Android Java ```java String channelId = Airship.getChannel().getId(); ``` #### React Native ```ts const channelId = await Airship.channel.getChannelId(); ``` #### Flutter ```dart String channelId = await Airship.channel.identifier; ``` #### Cordova ```js Airship.channel.getChannelId((channelID) => { console.log("Channel: " + channelID) }) ``` #### Capacitor ```js const channelID = await Airship.channel.getChannelId() ``` #### .NET MAUI ```csharp using AirshipDotNet; string channelId = Airship.Instance.ChannelId; ``` #### Unity ```csharp string channelId = UAirship.Shared.ChannelId; ``` For more detailed information about accessing channel IDs, see the platform-specific documentation: * [iOS Audience Management](https://www.airship.com/docs/developer/sdk-integration/apple/audience/channels/) * [Android Audience Management](https://www.airship.com/docs/developer/sdk-integration/android/audience/channels/) * [React Native Audience Management](https://www.airship.com/docs/developer/sdk-integration/react-native/audience/channels/) * [Flutter Audience Management](https://www.airship.com/docs/developer/sdk-integration/flutter/audience/channels/) * [Cordova Audience Management](https://www.airship.com/docs/developer/sdk-integration/cordova/audience/channels/) * [Capacitor Audience Management](https://www.airship.com/docs/developer/sdk-integration/capacitor/audience/channels/) * [.NET Audience Management](https://www.airship.com/docs/developer/sdk-integration/dotnet/audience/channels/) * [Unity Audience Management](https://www.airship.com/docs/developer/sdk-integration/unity/audience/channels/) ### Channel Capture tool The Channel Capture tool is a feature built into the SDK that helps users find their channel ID. It is valuable for troubleshooting individual device issues in production apps since it can expose the channel ID to the user, who can then send it to Support. Users can also use it to find their channel ID for a [preview and test group](https://www.airship.com/docs/reference/glossary/#preview_test_group).
[Channel Capture](https://airship.wistia.com/medias/w5v083w2oj)
If the Channel Capture tool is enabled, it will listen for six app foregrounds within 30 seconds. On the sixth app open, the channel ID will be copied to the user's clipboard with a leading `ua:`. Paste your channel ID from the clipboard to your preferred document. If there is no channel, only `ua:` will be present. The channel ID will remain on the clipboard for 60 seconds on iOS and until cleared on Android. The Channel Capture tool is enabled by default and can be disabled through the Airship Config options. For information on how to disable it, see the platform-specific documentation linked above. #### Android Kotlin ```kotlin val options = AirshipConfigOptions.newBuilder() // ... .setChannelCaptureEnabled(false) .build() ``` #### Android Java ```java AirshipConfigOptions options = AirshipConfigOptions.newBuilder() // ... .setChannelCaptureEnabled(false) .build(); ``` #### iOS Swift ```swift config.isChannelCaptureEnabled = false ``` #### iOS Objective-C ```objc config.isChannelCaptureEnabled = NO; ``` #### React Native ```ts await Airship.takeoff({ ... isChannelCaptureEnabled: false, }) ``` #### Flutter ```dart Airship.takeOff( AirshipConfig( ... isChannelCaptureEnabled: false ) ); ``` #### Cordova ```js Airship.takeoff({ ... isChannelCaptureEnabled: false, }) ``` #### Capacitor ```js await Airship.takeoff({ ... isChannelCaptureEnabled: false, }) ``` #### .NET MAUI ```csharp // Not supported ``` #### Xamarin ```csharp // Not supported ``` #### Titanium ```js // Not supported ``` #### Unity ```csharp // Not supported ``` ### Alternative methods You can also find a device's channel ID by logging it to the console. You can view the console with these tools: * **iOS:** [iPhone Configuration Utility](https://support.apple.com/downloads/iphone_configuration_utility) or [Xcode](https://developer.apple.com/xcode/) * **Android:** [Android Debug Bridge](https://developer.android.com/tools/adb) If you didn't write the device identifier to the console, you can use the steps here to help retrieve it: [Using Charles Proxy to profile an Airship Implementation](https://support.airship.com/hc/en-us/articles/213491123-Using-Charles-Proxy-to-profile-an-Airship-Implementation). > **Tip:** Even if you're comfortable with using Charles Proxy, you may want to speak with your developer before you attempt to retrieve your channel ID yourself. Your app may have been designed with a hidden feature that allows you to quickly retrieve your ID, saving you the difficulty of working with Charles Proxy. ## Find a web browser channel ID Your web channel ID is only available if you have already [integrated the Airship SDK](https://www.airship.com/docs/developer/sdk-integration/web/getting-started/) with your website. To access your web channel ID, you will need to open the Developer console in your browser and paste in a small amount of code. Instructions for Google Chrome and Mozilla Firefox are provided. 1. Open the console via keyboard shortcut or the menu. **Google Chrome** * **Keyboard Shortcuts:** In macOS you can go directly to the console with *Cmd+Opt+J*. In Windows, the shortcut is *Ctrl+Shift+J*. * **Menu:** Select the more menu icon (⋮), then **More Tools**, then **Developer Tools**, then select the Console tab. **Mozilla Firefox** * **Keyboard Shortcuts:** In macOS you can go directly to the console with *Cmd+Opt+K*. In Windows, the shortcut is *Ctrl+Shift+K*. * **Menu:** Select the "hamburger" icon, then **More Tools**, then **Web Developer Tools**, and then select the Console tab. 1. Depending on the web SDK version, paste the following code in the console, then press Enter. If a browser has registered, the resulting line is the channel ID. **Version 1** ```javascript UA.then(sdk => {console.log(sdk.channel.id)}) ``` ![The channel ID in a successful console response](https://www.airship.com/docs/images/channel_id_console_response_hu_60bcff090b24cb03.webp) *The channel ID in a successful console response* **Version 2 (asynchronous call)** ```javascript UA.then(sdk=>console.log(sdk.channel.id().then((channel)=>console.log(channel)))) // Or if you are using async/await syntax (async function getChannel() { const sdk = await UA; const channelId = await sdk.channel.id(); console.log(channelId); })(); ``` **Common errors:** * ![Response: null](https://www.airship.com/docs/images/channel_id_console_null_hu_1ae99c08456231dd.webp) *Response: null* The SDK will return `null` if the browser is unregistered. Only registered browsers will have a channel ID. See our documentation on [how to register the current browser with Airship](https://www.airship.com/docs/developer/sdk-integration/web/getting-started/#uasdk). * ![Response: UA is not defined](https://www.airship.com/docs/images/channel_id_console_no_sdk_hu_d5edbddbbc20e773.webp) *Response: UA is not defined* A `UA is not defined` response can indicate that the SDK snippet is not present within the page. Navigate to a page on your site that does have the SDK snippet and repeat step 2 above. > **Note:** Ideally, the SDK snippet will be present in every page on your site, as per the [Add JavaScript Snippet section](https://www.airship.com/docs/developer/sdk-integration/web/getting-started/#add-javascript-snippet-to-web-pages) of our Web Getting Started guide. If, for testing or other reasons, you have added the snippet to just one page of your site, you will need to be on that specific page for retrieving your web channel ID to be successful. # SFTP upload for CSV files > Bulk-upload audience and personalization data from CSV files to your Airship project over SFTP. ## What you can upload SFTP upload supports the following tasks: - Creating an [uploaded list](https://www.airship.com/docs/reference/glossary/#uploaded_list) — See [Uploaded lists](https://www.airship.com/docs/guides/audience/audience-lists/uploaded/). - Setting and removing [attributes](https://www.airship.com/docs/reference/glossary/#attribute) — See [CSV upload](https://www.airship.com/docs/guides/audience/attributes/setting/#csv-upload) in *Setting and removing attributes*. - Associating [channels](https://www.airship.com/docs/reference/glossary/#channel_term) with [named users](https://www.airship.com/docs/reference/glossary/#named_user) — See [CSV upload](https://www.airship.com/docs/guides/audience/named-users/#csv-upload) in *Named users*. - Adding more codes for a [Coupons](https://www.airship.com/docs/reference/glossary/#coupons) campaign — See [Managing campaigns and adding more codes](https://www.airship.com/docs/guides/personalization/sources/coupons/) in *Coupons*. All uploaded files are encrypted in transit and at rest. ## Generate an SSH key pair Airship's SFTP implementation uses SSH key pairs for authentication: a private key for your client and a public key for Airship. First, generate your key pair: 1. Open a terminal. On Windows, use PowerShell or Command Prompt. 1. At the command line, enter `ssh-keygen -t rsa`. You can set other options, but the key type must be set to RSA (`-t rsa`). 1. Enter the directory and file name for your new keys, without an extension. For example: `/Users/your_username/Documents/rsa_keys/`. 1. (Optional) Set a passphrase and confirm. The output of the process generates two files: * `` contains your private key. * `.pub` contains your public key. Copy the contents of your `.pub` file. You'll paste it when adding the key to Airship. ## Add your public key to Airship Add your public key to Airship so it can authenticate your SFTP transfers: 1. Next to your project name, select the dropdown menu (▼), then **Settings**. 1. Under **Project settings**, select **SFTP**. 1. Select **Add key**. 1. For **Purpose**, select the type of transfers you intend to make using the key: * Attributes or Attributes snapshot — For processing details, see [Setting and removing attributes](https://www.airship.com/docs/guides/audience/attributes/setting/#csv-upload). * Coupons * Named users — Use for named user association * Static lists — Use for [uploaded lists](https://www.airship.com/docs/reference/glossary/#uploaded_list) 1. For **Name**, enter a value that helps you identify the key in the dashboard. 1. For **Public key**, paste the contents of the `.pub` file you saved in the [previous step](#generate-an-ssh-key-pair). 1. Select **Save key**. > **Note:** Repeat this process for each additional purpose. You can reuse the same key pair, but each purpose needs its own key entry. After saving, select the view icon (eye) for a key and copy the values you need to configure SSH or an SFTP client: - For SFTP clients, copy the username, address, and port values. - For SSH-based connections, copy the SSH command line value. It combines the username, address, and port into one string. For all SFTP connections, the port is `5222`, and the address is `sftp.airship.com`, or `sftp.airship.eu` for EU customers. ## Configure a connection and transfer files Set up SFTP transfer at the command line or with an SFTP client using the [values copied from the Airship dashboard](#add-your-public-key-to-airship) and [your private key](#generate-an-ssh-key-pair). Many CRM platforms natively support SFTP. Once your connection is established, transfer your CSV files to Airship. ![SFTP client configuration](https://www.airship.com/docs/images/sftp-client-setup_hu_86bc6d506ba22424.webp) *SFTP client configuration* ## Verify transfer After transfer, find each upload type at the following dashboard locations: | Upload type | Dashboard path | | --- | --- | | Attributes | Go to **Audience**, then **Attributes**, then **Upload History**. | | Named user association | Go to **Audience**, then **Attributes**, then **Upload History**. | | Uploaded lists | Go to **Audience**, then **Lists**, then **Uploaded**. | | Coupons | Next to your project name, select the dropdown menu (▼), then **Settings**. Under **Project settings**, select **Coupons**. | {class="table-col-1-20"}