> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nekt.com/llms.txt
> Use this file to discover all available pages before exploring further.

# RevenueCat as a data source

> Bring subscription data from RevenueCat to Nekt.

RevenueCat is a subscription management platform that simplifies in-app purchases and subscriptions for mobile apps. It provides a unified API to manage subscriptions across different app stores like Apple App Store, Google Play Store, and Stripe.

<img height="30" src="https://mintcdn.com/nekt/m0mxqPBEPJJC3NMw/assets/logo/logo-revenuecat.png?fit=max&auto=format&n=m0mxqPBEPJJC3NMw&q=85&s=92727d21fa542feecce134bc34a5452a" data-path="assets/logo/logo-revenuecat.png" />

## Configuring RevenueCat as a Source

In the [Sources](https://app.nekt.ai/sources) tab, click on the "Add source" button located on the top right of your screen. Then, select the RevenueCat option from the list of connectors.

Click **Next** and you'll be prompted to add your access.

### 1. Add account access

You'll need your RevenueCat **API Key** and **Project ID** for this connection. You can find these in your [RevenueCat dashboard](https://app.revenuecat.com/projects). Once you have them, add the account access.

The following configurations are available:

* **API Key**: Your RevenueCat Public API Key (v2).
* **Project ID**: The ID of your RevenueCat project.

Once you're done, click **Next**.

### 2. Select streams

Choose which data streams you want to sync - you can select all streams or pick specific ones that matter most to you.

> Tip: The stream can be found more easily by typing its name.

Select the streams and click **Next**.

### 3. Configure data streams

Customize how you want your data to appear in your catalog. Select a name for each table (which will contain the fetched data) and the type of sync.

* **Table name**: we suggest a name, but feel free to customize it. You have the option to add a **prefix** and make this process faster!
* **Sync Type**: you can choose between INCREMENTAL and FULL\_TABLE.
  * Incremental: every time the extraction happens, we'll get only the new data - which is good if, for example, you want to keep every record ever fetched.
  * Full table: every time the extraction happens, we'll get the current state of the data - which is good if, for example, you don't want to have deleted data in your catalog.

Once you are done configuring, click **Next**.

### 4. Configure data source

Describe your data source for easy identification within your organization, not exceeding 140 characters.

To define your [Trigger](https://docs.nekt.com/get-started/core-concepts/triggers), consider how often you want data to be extracted from this source. This decision usually depends on how frequently you need the new table data updated (every day, once a week, or only at specific times).

Optionally, you can determine when to execute a [full sync](https://docs.nekt.com/get-started/core-concepts/types-of-sync#additional-full-sync). This will complement the incremental data extractions, ensuring that your data is completely synchronized with your source every once in a while.

Once you are ready, click **Next** to finalize the setup.

### 5. Check your new source

You can view your new source on the [Sources](https://app.nekt.ai/sources) page. If needed, manually trigger the source extraction by clicking on the arrow button. Once executed, your data will appear in your Catalog.

<Warning>For you to be able to see it on your [Catalog](https://app.nekt.ai/catalog), you need at least one successful source run.</Warning>

# Streams and Fields

Below you'll find all available data streams from RevenueCat and their corresponding fields:

<AccordionGroup>
  <Accordion title="Customers">
    Stream for managing customer and subscriber information.

    **Key Fields:**

    * `id` - Unique identifier for the customer
    * `first_seen_at` - Timestamp of when the customer was first seen
    * `last_seen_at` - Timestamp of the customer's last activity
    * `last_seen_app_version` - The last app version used by the customer
    * `last_seen_platform` - The last platform used by the customer
    * `last_seen_country` - The last country where the customer was seen
    * `last_seen_platform_version` - The last platform version used by the customer
    * `active_entitlements` - Object containing a list of active entitlements.
      * `items`: An array of entitlement objects.
    * `experiment` - Object containing details about any experiment the customer is enrolled in.
      * `id`: The experiment ID.
      * `name`: The experiment name.
      * `variant`: The variant of the experiment.
    * `attributes` - Object containing a list of custom customer attributes.
      * `items`: An array of attribute objects.
  </Accordion>

  <Accordion title="Subscriptions">
    Core stream for tracking customer subscriptions. This is a child stream of `Customers`.

    **Key Fields:**

    * `id` - Unique identifier for the subscription
    * `customer_id` - ID of the customer associated with the subscription
    * `original_customer_id` - The original customer ID, in case of an alias
    * `product_id` - ID of the subscribed product
    * `status` - Current status of the subscription (e.g., active, expired)
    * `starts_at` - Timestamp of when the subscription started
    * `current_period_starts_at` - Timestamp of the start of the current billing period
    * `current_period_ends_at` - Timestamp of the end of the current billing period
    * `ends_at` - Timestamp of when the subscription is scheduled to end
    * `gives_access` - Whether the subscription currently grants access to entitlements
    * `pending_payment` - Whether there is a pending payment for the subscription
    * `auto_renewal_status` - Status of auto-renewal for the subscription
    * `total_revenue_in_usd` - Object containing total revenue details.
      * `currency`: Currency code.
      * `gross`: Gross revenue.
      * `commission`: App store commission.
      * `tax`: Sales tax.
      * `proceeds`: Net revenue.
    * `presented_offering_id` - The ID of the offering that was presented to the user
    * `entitlements` - Object containing a list of entitlements granted by this subscription.
      * `items`: An array of entitlement objects.
    * `environment` - The environment of the subscription (e.g., sandbox, production)
    * `store` - The app store where the subscription was made
    * `store_subscription_identifier` - The subscription identifier from the app store
    * `ownership` - The ownership type of the subscription
    * `pending_changes` - Object containing details about pending changes to the subscription.
      * `product`: Details of the product for the pending change.
    * `country` - The country of the subscription
    * `management_url` - URL to manage the subscription
  </Accordion>

  <Accordion title="Purchases">
    Stream for tracking individual purchase events. This is a child stream of `Customers`.

    **Key Fields:**

    * `id` - Unique identifier for the purchase
    * `customer_id` - ID of the customer who made the purchase
    * `original_customer_id` - The original customer ID, in case of an alias
    * `product_id` - ID of the purchased product
    * `purchased_at` - Timestamp of the purchase
    * `revenue_in_usd` - Object containing revenue details.
      * `currency`: Currency code.
      * `gross`: Gross revenue.
      * `commission`: App store commission.
      * `tax`: Sales tax.
      * `proceeds`: Net revenue.
    * `quantity` - The quantity of the purchase
    * `status` - Status of the purchase
    * `presented_offering_id` - The ID of the offering that was presented to the user
    * `entitlements` - Object containing a list of entitlements granted by this purchase.
      * `items`: An array of entitlement objects.
    * `environment` - The environment of the purchase
    * `store` - The app store where the purchase was made
    * `store_purchase_identifier` - The purchase identifier from the app store
    * `ownership` - The ownership type of the purchase
    * `country` - The country of the purchase
  </Accordion>

  <Accordion title="Invoices">
    Stream for managing subscription invoices. This is a child stream of `Customers`.

    **Key Fields:**

    * `id` - Unique identifier for the invoice
    * `customer_id` - ID of the customer associated with the invoice
    * `total_amount` - Object containing total amount details.
      * `currency`: Currency code.
      * `gross`: Gross amount.
      * `commission`: App store commission.
      * `tax`: Sales tax.
      * `proceeds`: Net amount.
    * `line_items` - Array of line item objects in the invoice.
      * `product_identifier`: The product identifier.
      * `product_display_name`: The product display name.
      * `quantity`: The quantity of the item.
      * `unit_amount`: Object with amount details for a single unit.
    * `issued_at` - Timestamp of when the invoice was issued
    * `paid_at` - Timestamp of when the invoice was paid
    * `invoice_url` - URL to view the invoice
  </Accordion>

  <Accordion title="Products">
    Stream for managing product definitions.

    **Key Fields:**

    * `id` - Unique identifier for the product
    * `store_identifier` - The product's identifier on the app store
    * `type` - Type of product (e.g., subscription, one-time)
    * `subscription` - Object with subscription-specific details.
      * `duration`: The subscription duration.
      * `grace_period_duration`: The grace period duration.
      * `trial_duration`: The trial duration.
    * `one_time` - Object with one-time purchase details.
      * `is_consumable`: Whether the product is a consumable.
    * `display_name` - The display name of the product
    * `app_id` - ID of the app this product belongs to
    * `app` - Object containing the full details of the app this product belongs to.
    * `created_at` - Timestamp of when the product was created
  </Accordion>

  <Accordion title="Entitlements">
    Stream for managing entitlements you've defined in RevenueCat.

    **Key Fields:**

    * `id` - Unique identifier for the entitlement
    * `lookup_key` - The lookup key for the entitlement
    * `display_name` - The display name of the entitlement
    * `created_at` - Timestamp of when the entitlement was created
    * `products` - Object containing a list of products associated with this entitlement.
      * `items`: An array of product objects.
  </Accordion>

  <Accordion title="Offerings">
    Stream for managing offerings and packages.

    **Key Fields:**

    * `id` - Unique identifier for the offering
    * `lookup_key` - The lookup key for the offering
    * `display_name` - The display name of the offering
    * `is_current` - Whether this is the current offering
    * `metadata` - Custom key-value metadata associated with the offering.
    * `packages` - Object containing a list of packages in this offering.
      * `items`: An array of package objects.
    * `created_at` - Timestamp of when the offering was created
  </Accordion>

  <Accordion title="Apps">
    Stream for managing your app configurations in RevenueCat.

    **Key Fields:**

    * `id` - Unique identifier for the app
    * `name` - Name of the app
    * `type` - Type of the app (e.g., app\_store, play\_store)
    * `created_at` - Timestamp of when the app was created
    * `amazon` - Amazon Appstore configuration.
      * `package_name`: The package name.
    * `app_store` - Apple App Store configuration.
      * `bundle_id`: The bundle ID.
    * `mac_app_store` - Mac App Store configuration.
      * `bundle_id`: The bundle ID.
    * `play_store` - Google Play Store configuration.
      * `package_name`: The package name.
    * `stripe` - Stripe configuration.
      * `stripe_account_id`: The Stripe account ID.
    * `rc_billing` - RevenueCat billing configuration.
      * `stripe_account_id`: The Stripe account ID.
      * `seller_company_name`: The seller company name.
      * `support_email`: The support email address.
    * `roku` - Roku configuration.
      * `roku_channel_id`: The Roku channel ID.
      * `roku_channel_name`: The Roku channel name.
    * `paddle` - Paddle configuration.
      * `paddle_is_sandbox`: Whether it's a sandbox environment.
      * `paddle_api_key`: The Paddle API key.
  </Accordion>
</AccordionGroup>

## Skills for agents

<Snippet file="agent-skills-intro.mdx" />

<Card title="Download RevenueCat skills file" icon="wand-magic-sparkles" href="/sources/revenuecat.md">
  RevenueCat connector documentation as plain markdown, for use in AI agent contexts.
</Card>
