Integration · Product analytics

Send subscription revenue to TelemetryDeck

RevenueDot sends each subscription step to TelemetryDeck as a signal through ingest API v2. The signal type is rc_initial_purchase_event, rc_renewal_event and so on, floatValue is the revenue in US dollars, and the details sit in RevenueCat.event.* parameters. It matches users on $telemetryDeckUserId, the hashed ID your TelemetryDeck SDK uses.

What teams do with it

  • See paying users next to the usage signals TelemetryDeck already collects.
  • Chart trial starts, renewals and cancellations in TelemetryDeck's dashboards.
  • Sum floatValue to chart revenue without sending anything personal.
  • Keep sandbox purchases out of production queries with isTestMode.

What RevenueDot sends

  • A JSON array with one signal per event, POST https://nom.telemetrydeck.com/v2/, or /v2/namespace/{namespace}/ when you set a Namespace. TelemetryDeck needs no auth header: the app ID routes the signal.
  • type is the step: 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, rc_transfer_event, rc_refund_reversed_event or rc_test_event.
  • floatValue: the revenue in US dollars, negative for refunds, which TelemetryDeck sums as it is.
  • payload: flat RevenueCat.event.<field> keys such as RevenueCat.event.product_id, .store, .environment, .period_type, .price, .currency, .transaction_id, .commission_percentage and .is_trial_conversion.
  • Identity: $telemetryDeckUserId as clientUser (required) and $telemetryDeckAppId as appID when set, else the App ID you saved. isTestMode is true for sandbox events.

Setup

How to connect TelemetryDeck to RevenueDot

  1. 01

    Copy your TelemetryDeck app ID

    In TelemetryDeck, copy the app's App ID from its settings, and your Namespace if TelemetryDeck gave you one.

  2. 02

    Set the user ID in your app

    Set $telemetryDeckUserId to the hashed user ID your TelemetryDeck SDK uses, with the SDK's attribute call. Optionally set $telemetryDeckAppId too.

  3. 03

    Open the integration

    In RevenueDot, open Integrations → TelemetryDeck.

  4. 04

    Enter the app ID and namespace

    Enter the App ID (used for customers without $telemetryDeckAppId) and the Namespace. Set Sales reporting.

  5. 05

    Connect and test

    Click Connect TelemetryDeck, then send a test event for a customer that has $telemetryDeckUserId.

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

How TelemetryDeck 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.
  • Why a user can be skipped: RevenueDot cannot recreate TelemetryDeck's hash of a user ID, so a customer without $telemetryDeckUserId is skipped and the log says so.

FAQ

TelemetryDeck and RevenueDot

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

Set $telemetryDeckUserId in your app, enter your TelemetryDeck App ID under Integrations → TelemetryDeck in RevenueDot and click Connect TelemetryDeck. Each purchase, trial and renewal is then sent as a signal through ingest API v2.

Why was a purchase skipped for TelemetryDeck?

The customer has no $telemetryDeckUserId attribute. TelemetryDeck hashes user IDs in its SDK, and RevenueDot cannot recreate that hash. Once your app sets the attribute, press Retry on the skipped delivery.

Does TelemetryDeck get the revenue amount?

Yes, as floatValue in US dollars, either gross or after store commission and taxes, as you set under Sales reporting. Refunds are negative.

Is there a RevenueCat TelemetryDeck integration alternative?

Yes. RevenueDot uses the RevenueCat.event.* parameter names that TelemetryDeck documents for RevenueCat (checked October 2026), so existing TelemetryDeck queries keep working.

Sources: TelemetryDeck · TelemetryDeck ingest API v2 · TelemetryDeck: default parameters. TelemetryDeck is a trademark of its owner, used to describe compatibility. RevenueDot is not affiliated with or endorsed by it.

Get started

Send TelemetryDeck 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