Integration · Attribution and ads measurement

Send subscription revenue to Singular

RevenueDot reports each subscription step to Singular's server-to-server EVENT endpoint as rc_initial_purchase_event, rc_renewal_event and so on, with amt set to the revenue in US dollars, negative for refunds. The V2 endpoint matches on $singularDeviceId, and V1 matches on advertising IDs. Singular can then credit revenue to the campaign behind each install.

What teams do with it

  • Credit trial starts and subscriptions to the Singular campaign behind each install.
  • Report net revenue to Singular, with refunds as negative amt.
  • Send sandbox purchases to a separate Singular SDK key, so test data stays out of production.
  • Switch endpoints between V2 and V1 for older Singular accounts.

What RevenueDot sends

  • V2 (the default): POST https://s2s.singular.net/api/v2/evt, form-encoded, matched on sdid. V1 (legacy accounts): GET https://s2s.singular.net/api/v1/evt, matched on advertising IDs.
  • n is the event name, rc_initial_purchase_event, rc_trial_started_event, rc_renewal_event, rc_cancellation_event, rc_billing_issue_event and the other steps, and it can be renamed. a is your SDK key and umilisec is the event time.
  • amt and cur: the revenue in US dollars, negative for refunds. purchase_product_id and purchase_transaction_id identify the purchase.
  • Identity: $singularDeviceId as sdid (V2). V1 needs $idfa and $idfv on iOS, or $gpsAdId (aifa) or $androidId (andi) on Android. $ip becomes ip, and the app user ID becomes custom_user_id unless it is anonymous.
  • Privacy fields: $attConsentStatus as att_authorization_status (0 to 3) on iOS and $limitDataSharing as data_sharing_options. The e JSON carries rc_app_user_id and rc_event_id.

Setup

How to connect Singular to RevenueDot

  1. 01

    Copy your SDK key

    In Singular, open Developer Tools → SDK Keys and copy the SDK Key. Copy a second key for sandbox events if you use one.

  2. 02

    Set the device ID in your app

    Set $singularDeviceId to the Singular SDK's device ID for the V2 endpoint, or call collectDeviceIdentifiers() for V1. Save the app's bundle ID or package name in RevenueDot too.

  3. 03

    Open the integration

    In RevenueDot, open Integrations → Singular.

  4. 04

    Enter the keys and endpoint

    Fill in SDK key and Sandbox SDK key, then pick the Event endpoint: V2, or V1 for legacy accounts. Singular accounts created from July 15, 2026 must use V2.

  5. 05

    Connect and test

    Click Connect Singular, then send a test event for a customer that has the device ID and check the delivery log.

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

How Singular 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.
  • Rejections: Singular answers {"status":"ok"} when it accepts an event. Any other answer is logged as a rejection with Singular's reason.

FAQ

Singular and RevenueDot

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

Paste your Singular SDK Key under Integrations → Singular in RevenueDot, set $singularDeviceId in your app and click Connect Singular. Each subscription step then goes to Singular's server-to-server EVENT endpoint with the revenue in US dollars.

Should I use the V2 or the V1 Singular endpoint?

Use V2 unless your Singular account is older and still uses V1. V2 matches on $singularDeviceId. V1 matches on advertising IDs. Singular accounts created from July 15, 2026 must use V2.

Does Singular get refunds as negative revenue?

Yes. Singular accepts negative revenue, so a refund is sent as a cancellation event with a negative amt.

Is there a RevenueCat Singular integration alternative?

Yes. RevenueDot sends the parameters that RevenueCat documents for its own Singular delivery (checked October 2026) to Singular's EVENT endpoint, from an open source backend you can self-host.

Sources: Singular · Singular: server-to-server EVENT endpoint · RevenueCat: Singular reference. Singular is a trademark of its owner, used to describe compatibility. RevenueDot is not affiliated with or endorsed by it.

Get started

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