Airship

Customer engagement platform for push notifications, in-app messages, SMS, and mobile app experiences with deep journey orchestration.

Why route Airship through Datafly Signal

  • Profiles are updated from the server, not the browser. Events reach Airship even when a tracker blocker or a failed page unload would have dropped a client-side call, so the profile reflects what actually happened.
  • Delivery is batched, rate-limited, and retried. Signal buffers to Kafka, respects the Airship rate limit, and retries on 429 or transient failure rather than dropping the event.
  • One consent decision governs every destination. Airship is gated by the same consent state as the rest of your stack, so a withdrawal applies everywhere at once.

Prerequisites

Complete these steps in Airship before configuring Signal.

Access your Airship dashboard

Log in to go.airship.com (US) or go.airship.eu (EU).

Find your App Key

Navigate to Settings > APIs & Integrations > App Keys. The App Key for your project is shown at the top — a 22-character alphanumeric string. Copy it.

Create a Bearer token

On the same APIs & Integrations page, click Tokens > Create Token. Configure:

  1. Give it a name (e.g. “Datafly Signal”).
  2. Assign the All Access role (or a custom role with events:write, channels:write, and named_users:write scopes).
  3. Click Create Token and copy it immediately.
⚠️

Bearer tokens are the preferred auth method. The older App Master Secret is deprecated for new integrations.

Determine your data centre

Dashboard URLData CentreValue for Signal
go.airship.comUSgo.urbanairship.com
go.airship.euEUgo.airship.eu

Configuration

FieldTypeRequiredDescription
app_keystringYesYour Airship App Key, sent as X-UA-Appkey.
access_tokensecretYesAn Airship bearer token with the Events scope, sent as Authorization: Bearer.
api_hostselectYesgo.urbanairship.com (US) or go.airship.eu (EU): the data centre your project is in.

Signal Setup

Quick Setup

  1. Navigate to Integrations in the sidebar.
  2. Open the Integration Library tab.
  3. Find Airship under the Marketing Automation category.
  4. Click Install, and fill in the required fields with the credentials gathered above.
  5. Click Install Integration to create the integration with a ready-to-use default configuration.

API Setup

curl -X POST http://localhost:8084/v1/admin/integration-catalog/airship/install \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Airship",
    "variant": "default",
    "config": {
      "app_key": "xxxxxxxxxxxxxxxxxxxxxx",
      "access_token": "xxxxxxxxxxxxxxxxxxxx",
      "api_host": "go.urbanairship.com"
    },
    "delivery_mode": "server_side"
  }'

Event Mapping

Signal sends Airship custom events (POST https://{api_host}/api/custom-events, a JSON array of up to 100 events) named after Airship’s SDK templates, so the template names work in Journeys and Automations:

Signal eventAirship custom eventPreset
view_itembrowsedDefault, Retail
add_to_cartadded_to_cartDefault, Retail
remove_from_cartremoved_from_cartRetail
add_to_wishliststarred_productRetail
product_sharedshared_productRetail
begin_checkoutbegin_checkoutDefault, Retail
purchasepurchased (value, ltv: true)All
refundrefundedRetail
searchsearch (query, total_results)All
sign_up / loginregistered_account / logged_inAll
generate_leadgenerate_leadDefault
content_viewed, content_completed, content_saved, content_sharedbrowsed_content, consumed_content, starred_content, shared_contentMedia

Every event carries occurred (the event time), interaction_type: "url" and the page URL without its query string as interaction_id. Money events carry body.value as a number and an upper-case currency; product events carry id and items (id, name, category, brand, variant, price, quantity).

Identity

FieldSourceNotes
user.named_user_iduser_id from datafly.identify()Required. Events from visitors who are not identified are not sent: Airship needs a named user or channel.

Airship does not match custom events on email or phone, so neither is sent. Associate your named users with their channels in your apps or with the Named Users API.

Airship events should be sent under the marketing consent category. Airship maintains opt-in records per channel (push, email, SMS) — Signal forwards CMP consent state so server-side journey logic can suppress non-consenting visitors.

Verify it’s working

  1. Trigger a test event from your website.
  2. In Airship, navigate to Audience > Named Users and search for the test user by ID.
  3. Click into the named user and check the Events tab for recent custom events.
  4. In Signal, check Live Events to confirm delivery with a 202 response status.

Troubleshooting

SymptomPossible CauseResolution
401 UnauthorizedInvalid bearer token or wrong scopesRegenerate the token in Settings > APIs & Integrations with the required write scopes.
400 Bad Request on custom eventMissing required fieldsCustom events require a lowercase name, occurred (within the last 90 days) and a named user or channel. Signal sends all three.
Events received but no notification triggeredJourney not configured for event nameCheck that an Airship Journey or Automation is set to trigger on the custom event name being sent.
Wrong data centre errorUS/EU mismatchCheck your dashboard URL and set api_host to go.urbanairship.com (US) or go.airship.eu (EU).

Visit Airship API documentation for full reference and Custom Events details.

See also