RevenueCat Source Beta

Ingest your event data from RevenueCat into RudderStack.

RevenueCat is an in-app subscription platform that lets you analyze and grow your cross-platform app subscriptions.

This guide will help you set up RevenueCat as a source in RudderStack.

Get started

  1. Go to your RudderStack dashboard and click Add Source. From the list of Event Streams sources, select RevenueCat.
  2. Assign a name to your source and click Continue*.
  3. Your RevenueCat source is now configured. Go to the Settings tab of the source and note the Webhook URL:
RevenueCat source webhook URL
  1. Log in to your RevenueCat dashboard.
  2. Go to Projects in the top nav bar and select your project.
RevenueCat select project
  1. In the left nav bar, click + New in the Integrations section. Under Add an integration, select Webhooks.
info
If you are on a legacy RevenueCat plan without access to webhooks, migrating to their new Pro plan to get webhook integration access is recommended.
  1. In the webhook configuration window, enter the name and URL obtained in Step 3 above. You can also configure the following settings as per your requirement:
  • Authorization header value
  • Environment to send events for (Production, Sandbox, or both)
  • Events filter
RevenueCat webhook configuration
  1. Click ADD WEBHOOK to finish the configuration.
warning
Make sure to test the configuration by sending a few test webhook events.

Event transformation

RudderStack ingests the events from RevenueCat as track events after converting them into the appropriate event format.

RudderStack supports ingesting events related to the following RevenueCat Event Types:

  • TEST
  • INITIAL_PURCHASE
  • RENEWAL
  • CANCELLATION
  • UNCANCELLATION
  • NON_RENEWING_PURCHASE
  • SUBSCRIPTION_PAUSED
  • EXPIRATION
  • BILLING_ISSUE
  • PRODUCT_CHANGE
  • TRANSFER
  • SUBSCRIPTION_EXTENDED

Property mappings

RudderStack maps the following RevenueCat properties from the event payload to the RudderStack fields:

RevenueCat propertyRudderStack property
typeevent
idmessageId
app_idappId
event_timestamp_msoriginalTimestamp
app_user_idexternalId of type revenuecatAppUserId
original_app_user_idoriginalAppUserId
aliasesaliases
product_idproductId
entitlement_idsentitlementIds
entitlement_identitlementId
period_typeperiodType
purchased_at_mspurchasedAtMs
grace_period_expiration_at_msgracePeriodExpirationAtMs
expiration_at_msexpirationAtMs
auto_resume_at_msautoResumeAtMs
storestore
environmentenvironment
is_trial_conversionisTrialConversion
cancel_reasoncancelReason
expiration_reasonexpirationReason
new_product_idnewProductId
presented_offering_idpresentedOfferingId
priceprice
currencycurrency
price_in_purchased_currencypriceInPurchasedCurrency
tax_percentagetaxPercentage
commission_percentagecommissionPercentage
takehome_percentagetakehomePercentage
subscriber_attributessubscriberAttributes
transaction_idtransactionId
original_transaction_idoriginalTransactionId
is_family_shareisFamilyShare
transferred_fromtransferredFrom
transferred_totransferredTo
country_codecountryCode
offer_codeofferCode
info
RudderStack uses uuid as the anonymousId if it does not receive the app_user_id, and original_app_user_id fields from RevenueCat.

A sample input payload ingested by RudderStack and the corresponding RudderStack-transformed track event is shown below:



Questions? Contact us by email or on Slack