Airship
Send user data to Airship for mobile marketing and push notification campaigns. Sync named user attributes and tags from your warehouse to Airship’s named users.
Prerequisites
- An Airship account with a project configured
- An Airship app key and master secret, or a bearer token with appropriate permissions
- Knowledge of which Airship cloud site your project uses (US or EU)
Permissions
To sync data to Airship, your credentials need the following permissions:
- Named Users: Read and write access to named users and their attributes
- Tags: Read and write access to tag groups
Authentication
Airship supports two authentication methods.
App Key & Master Secret (Basic Auth)
- Log in to the Airship dashboard
- Navigate to Settings > APIs & Integrations
- Copy your App Key and Master Secret
- In Zeotap, select App Key & Master Secret as the authentication method
- Paste the app key and master secret into the corresponding fields
Bearer Token
- Log in to the Airship dashboard
- Navigate to Settings > APIs & Integrations > Tokens
- Create a new token with the required permissions
- Copy the generated bearer token
- In Zeotap, select Bearer Token as the authentication method
- Paste the token into the Access Token field
Configuration
| Field | Type | Required | Description |
|---|---|---|---|
| Cloud Site | Select | Yes | Your Airship data center region: US (North America) or EU (Europe). The US site uses go.urbanairship.com and the EU site uses go.airship.eu. |
Target Settings
| Field | Type | Required | Description |
|---|---|---|---|
| Object Type | Select | Yes | The type of data to send: Named Users (Attributes) or Tags |
| Tag Group | Text | Conditional | The Airship tag group for tag operations. Required when Object Type is Tags. Defaults to device if not specified. |
Supported Operations
Sync Modes
| Mode | Supported |
|---|---|
| Upsert | Yes |
| Insert | — |
| Update | Yes |
| Mirror | — |
Audience Sync Modes
| Mode | Supported |
|---|---|
| Add | Yes |
| Remove | Yes |
| Mirror | Yes |
| Upsert | Yes |
Features
- Field Mapping: Yes
- Schema Introspection: No
Required Mapping Fields
| Object Type | Required Fields |
|---|---|
| Named Users (Attributes) | named_user_id |
| Tags | named_user_id, tags |
Default Destination Fields
Named Users (Attributes)
named_user_id, first_name, last_name, email, phone, city, region, country, zipcode, birthdate, loyalty_tier
Tags
named_user_id, tags
How It Works
Named User Attributes
When syncing named user attributes, Zeotap sends individual attribute update requests to the Airship API for each named user:
- Each row in your model is mapped to a named user identified by
named_user_id - All mapped fields (except
named_user_id) are sent as attributesetoperations - Requests are sent to
POST /api/named_users/{named_user_id}with anattributesarray - In mirror mode, rows marked as removed are sent to the uninstall endpoint in batches of 100
Tags
When syncing tags, Zeotap batches tag operations for up to 1,000 named users per request:
- Tags are extracted from the
tagsfield — comma-separated strings are split into individual tags - Add operations use
POST /api/named_users/tagswith theaddaction - Remove operations use the same endpoint with the
removeaction - In mirror mode, removed rows trigger tag removal while other rows trigger tag addition
Error Handling
- Failed requests are retried up to 3 times with exponential backoff
- HTTP 429 (rate limit) responses are retried automatically with the server-specified delay
- Per-row errors are tracked and reported in sync run results
Rate Limits
Airship does not publish hard rate limits for their API. However, the following best practices apply:
- Tag operations support up to 1,000 named users per request
- Named user uninstall supports up to 100 named users per request
- Zeotap automatically handles HTTP 429 responses with retry and backoff
- If you experience timeouts, consider reducing your sync batch size
Best Practices
- Use meaningful tag groups: Create specific tag groups in Airship for different data sources rather than using the default
devicegroup - Keep tags under 128 characters: Airship enforces a 128-character limit on tag names
- Limit tags per named user: Airship recommends no more than 1,000 tags per named user
- Named User IDs: Keep named user IDs under 128 characters with no leading or trailing whitespace
- Choose the right cloud site: Ensure you select the cloud site (US or EU) that matches your Airship project
Troubleshooting
Authentication failed: invalid credentials
Verify your app key and master secret (or bearer token) are correct. In Airship, navigate to Settings > APIs & Integrations and confirm the credentials. Ensure the master secret has not been rotated since you configured the destination.
Named user not found
Airship creates named users automatically when you set attributes or tags. If you see “not found” errors during connection testing, this is expected — the test uses a dummy named user ID to verify credentials.
Tags not appearing in Airship
Ensure the tag group specified in your target settings exists in Airship. Navigate to Settings > Tags in the Airship dashboard to verify. Tags are case-sensitive — check that your tag values match exactly.
Cloud site mismatch
If API calls return unexpected errors, verify your cloud site setting. US projects use go.urbanairship.com and EU projects use go.airship.eu. Using the wrong site returns authentication errors even with valid credentials.
Rate limiting (HTTP 429)
Zeotap automatically retries rate-limited requests with exponential backoff. If you see persistent rate limit errors, reduce the frequency of your sync schedule or contact Airship support to discuss your API usage limits.
Attribute updates not reflecting immediately
Airship processes attribute and tag updates asynchronously. Even after a successful API response, changes may take a few moments to appear in the Airship dashboard or be available for audience targeting.
Comma-separated tags not splitting correctly
When using the Tags object type, the tags field accepts comma-separated values that are automatically split into individual tags. Ensure there are no unintended commas in your tag values. If you need tags that contain commas, use a JSON array format instead.