Integration · Messaging and marketing

Send in-app purchase events to Airship

RevenueDot sends each subscription step to Airship as a custom event with a lowercase name such as rc_initial_purchase_event, on the device's channel or on the named user. Paid steps carry a value in US dollars. You can also set an rc_subscription_status attribute on the user. Airship needs a bearer token with the Events role.

What teams do with it

  • Trigger Airship journeys and messages from trial starts, renewals and billing issues.
  • Segment users by rc_subscription_status to target active, trial and expired customers.
  • Send sandbox events to a second Airship project, apart from production.

What RevenueDot sends

  • POST /api/custom-events on go.urbanairship.com (US) or go.airship.eu (EU) with Authorization: Bearer <token> and X-UA-Appkey.
  • name is lowercase: rc_initial_purchase_event, rc_trial_started_event, rc_trial_converted_event, rc_trial_cancelled_event, rc_renewal_event, rc_cancellation_event, rc_uncancellation_event, rc_non_subscription_purchase_event, rc_subscription_paused_event, rc_expiration_event, rc_billing_issue_event, rc_product_change_event or rc_test_event.
  • value: the US dollar revenue of initial purchases, trial conversions, renewals and one-time purchases. transaction is the event ID.
  • properties: product_id, store, environment, period_type, entitlement_ids, transaction_id, revenue, currency, price_in_purchased_currency, purchased_at, expiration_at and cancel_reason.
  • Identity: $airshipChannelId as the channel (ios_channel, android_channel or amazon_channel), else the app user ID as named_user_id. With Set the rc_subscription_status attribute on, the status is set on the channel or named user.

Setup

How to connect Airship to RevenueDot

  1. 01

    Create a token in Airship

    In Airship, copy the project's App key and create a Bearer token with the Events role under Settings → Tokens. Add the Attributes role if you set the status attribute. Use a second project's key and token for sandbox events.

  2. 02

    Create the status attribute (optional)

    To set the subscription status, create a text attribute named rc_subscription_status in Airship first.

  3. 03

    Open the integration

    In RevenueDot, open Integrations → Airship.

  4. 04

    Enter the keys

    Fill in App key, Bearer token and Cloud site (US or EU), and the Sandbox app key and Sandbox bearer token if you have them. Tick Set the rc_subscription_status attribute if you created it.

  5. 05

    Connect and test

    Click Connect Airship, then Send test event. Set $airshipChannelId in your app so events land on the device.

The Airship integration page in the RevenueDot dashboard, with its settings form
Captured from the RevenueDot dashboard with demo data.

How Airship deliveries are retried, logged and replayed

  • Retries: timeouts, 408, 425, 429 and 5xx answers retry after 5, 10, 20, 40 and 80 minutes. Any other 4xx fails at once, because sending the same request again cannot work. Fix the setting, then replay.
  • Delivery log: each delivery shows the request with every secret replaced by [redacted], the partner's answer, the HTTP status, the time taken and the number of attempts.
  • Skipped, with the reason: when there is nothing to send, such as a missing device ID, the delivery is marked skipped and says why. Retry sends it after your app sets the attribute.
  • Replay: Replay failed resends failed and skipped deliveries in bulk.
  • Sealed credentials: keys and tokens are encrypted with AES-256-GCM on the server and never shown again. The dashboard shows only the last four characters.
  • No deduplication: Airship documents none, so a replayed event is recorded again.
  • Rejections: Airship answers { ok: false, error } for a rejected request, which is logged as a rejection.

FAQ

Airship and RevenueDot

How do I send in-app purchase events to Airship?

Create a bearer token with the Events role in Airship, enter the App key and token under Integrations → Airship in RevenueDot, choose your cloud site and click Connect Airship. Each purchase, trial and renewal then arrives as an Airship custom event.

Does Airship match events to a device or to a user?

To the device's channel when your app sets $airshipChannelId, else to the named user whose ID is your app user ID. Anonymous app user IDs are never named users, so those events are skipped without a channel.

Why are Airship event names lowercase?

Airship rejects uppercase names, so RevenueDot lowercases each name, including any you set under Event names.

Is there a RevenueCat Airship integration alternative?

Yes. RevenueDot follows RevenueCat's Airship integration (checked October 2026): custom events with the rc_*_event names and an optional rc_subscription_status attribute, from an open source backend.

Sources: Airship · Airship: custom events API · RevenueCat: Airship integration. Airship is a trademark of its owner, used to describe compatibility. RevenueDot is not affiliated with or endorsed by it.

Get started

Send Airship every subscription event.

Start free on RevenueDot Cloud, free up to $10,000 a month in tracked revenue. Integrations are included on every plan.

Already have an account? Sign in · Prefer your own servers? Self-host free