Skip to content

Connect Adapty

Last updated

Whisperr receives subscription events from Adapty through Adapty’s webhook integration. It uses them to know the billing state of each user: in a trial, paid, cancelled with access left, payment failed, expired or refunded. The webhook needs no app code. Your app needs only the shared user ID below.

Whisperr uses one billing source per app. To connect Adapty, first disconnect RevenueCat or Superwall if the app has one: open it in Integrations → Billing and hold Hold to disconnect.

Whisperr links an Adapty customer to a Whisperr user by the customer user ID (customer_user_id in Adapty’s events). Call Adapty identify with the same user ID that you give to Whisperr identify(), and Adapty logout where you call Whisperr reset.

PlatformIdentifyLog out
Swifttry await Adapty.identify(user.id)try await Adapty.logout()
AndroidAdapty.identify(user.id) { error -> }Adapty.logout { error -> }
Flutter (adapty_flutter)await Adapty().identify(user.id);await Adapty().logout();
React Native (react-native-adapty)await adapty.identify(user.id);await adapty.logout();

An Adapty profile with no customer user ID never matches a user. An app with no log-in can set the Adapty custom attribute whisperr_id to the Whisperr anonymous ID, and turn on Send user attributes in the Adapty webhook settings. Of the Whisperr SDKs, only Flutter exposes the anonymous ID today, as Whisperr.instance.anonymousId. Whisperr reads no other attribute, and never the email, IP address or advertising IDs that Adapty sends.

  1. In the Whisperr dashboard, open Integrations → Billing → Adapty, or go straight to https://app.whisperr.net/integrations?source=adapty. Click Create values. Copy the webhook URL and the authorization value. A workspace owner or admin must do this step. Whisperr shows the authorization value only once and keeps only its hash.
  2. In Adapty, open Integrations → Webhook and turn it on. Paste the URL in Production endpoint URL and Sandbox endpoint URL. Paste the authorization value in both Authorization header value fields. Keep Adapty’s default event names. Click Save.
  3. When you click Save, Adapty checks the URL. The Whisperr dashboard shows Adapty checked the URL. Adapty is now connected.

If the dashboard says that the authorization value did not match, paste the value from step 1 again.

If you lose the authorization value, hold Hold to replace the value in the Adapty setup and paste the new value in Adapty at once. The old value stops working within a minute.

Adapty events go through the same billing states, billing events and subscription playbooks as RevenueCat events. See What Whisperr does with billing events.

Adapty eventWhat it does in Whisperr
trial_started, subscription_startedStarts a trial or a paid subscription.
subscription_renewed, trial_convertedA paid renewal, or the trial’s first payment.
subscription_renewal_cancelled, trial_renewal_cancelledCancel with access left.
subscription_renewal_reactivated, trial_renewal_reactivatedCancel reverted.
subscription_expired, trial_expiredThe subscription or trial ended.
entered_grace_period, billing_issue_detectedPayment failed.
subscription_refundedRefunded.
subscription_paused, subscription_deferredPause scheduled, period extended.
non_subscription_purchase, non_subscription_purchase_refundedOne-time revenue, no billing state.

Whisperr accepts and ignores subscription_active, trial_active, access_level_updated, events that you renamed in Adapty, and cancellations of a plan that was upgraded or replaced.

  • Sandbox events show in the dashboard. They do not change a billing state and do not start a playbook.
  • Prices are converted to USD with the daily rate of the purchase date.

Whisperr stores a minimized copy of each event: type, store, product, dates, cancel and expiry reasons, and price. After Whisperr matches an event, it keeps Adapty customer IDs only as keyed hashes.

Whisperr sees Adapty events from the moment you connect. It does not import older history. An event that reaches Whisperr more than 72 hours after it happened sets the billing state but starts no playbook.

After live events arrive, the dashboard shows the share of Adapty customers in the last 30 days that match a Whisperr user. Your coding agent can read the same numbers with the Whisperr MCP tool get_adapty_status.

Common questions

Which Adapty events does Whisperr use?

Trial and subscription starts, renewals, cancellations and reactivations, expirations, billing issues and grace periods, refunds, pauses and deferrals, and one-time purchases. Whisperr accepts and ignores subscription_active, trial_active and access_level_updated.

Does Whisperr read Adapty profile data such as email?

No. Of the profile, Whisperr reads only the customer user ID, the Adapty profile ID and the custom attribute whisperr_id. It never reads the email, IP address or advertising IDs that Adapty sends.

Does Whisperr import past Adapty events?

No. Whisperr sees Adapty events from the moment you connect. An event that arrives more than 72 hours after it happened sets the billing state but starts no playbook.