npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@rawdash/connector-revenuecat

v0.28.0

Published

Rawdash connector for RevenueCat — mobile in-app subscriptions, products, and revenue metrics

Readme

@rawdash/connector-revenuecat

npm version license

Sync products, entitlements, customers, and subscription events from RevenueCat alongside overview metrics (MRR, active subscribers, trial conversion).

Install

npm install @rawdash/connector-revenuecat

Authentication

Authenticates with a RevenueCat v2 REST API key scoped to a single project. The key only needs read access to the resources being synced.

  1. Open the RevenueCat dashboard -> Project Settings -> API Keys.
  2. Create a v2 Secret API key with read access; copy the key value.
  3. Copy the Project ID from Project Settings -> General.
  4. Store the API key as a secret and reference it from the connector config as apiKey: secret("REVENUECAT_API_KEY"). Set projectId to the project identifier.

Configuration

| Field | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | | apiKey | secret | Yes | RevenueCat v2 REST API key (read-only). Create one in the RevenueCat dashboard under Project Settings -> API Keys -> Public app-specific or Secret API Key (V2). | | projectId | string | Yes | RevenueCat project identifier. Find it in Project Settings -> General. | | resources | array | No | Which RevenueCat resources to sync. Omit to sync all. Customer syncs also emit subscription entities embedded in each customer response. |

Resources

  • revenuecat_product (entity) - Products configured in RevenueCat, including their store identifier (App Store / Play Store SKU), type, and display name.
    • Endpoint: GET /v2/projects/{project_id}/products
    • storeIdentifier: Store-specific product SKU.
    • type: Product type (subscription, non_consumable, ...).
    • appId: RevenueCat app id the product belongs to.
    • displayName: Human-readable product name.
    • createdAt: Unix seconds when the product was created.
  • revenuecat_entitlement (entity) - Entitlements (logical features) configured in the project, keyed by lookup_key.
    • Endpoint: GET /v2/projects/{project_id}/entitlements
    • lookupKey: Stable lookup key used by client SDKs.
    • displayName: Human-readable entitlement name.
    • createdAt: Unix seconds when the entitlement was created.
  • revenuecat_customer (entity) - RevenueCat customers (app users) with first-seen / last-seen timestamps and a list of currently active entitlement lookup keys.
    • Endpoint: GET /v2/projects/{project_id}/customers
    • Each customer response includes embedded subscription objects; those are written separately as revenuecat_subscription entities.
    • firstSeenAt: Unix seconds the customer was first seen.
    • lastSeenAt: Unix seconds of the most recent activity.
    • activeEntitlements: Array of entitlement_id strings currently granting access.
  • revenuecat_subscription (entity) - Subscriptions, one row per (customer, product, original transaction). Extracted from the embedded subscriptions.items array in each customer response.
    • Endpoint: GET /v2/projects/{project_id}/customers
    • customerId: RevenueCat customer (app user) id.
    • productId: Product the subscription is for.
    • store: Originating store (app_store, play_store, ...).
    • status: Subscription status (active, expired, refunded, ...).
    • startsAt: Unix seconds the subscription started.
    • currentPeriodEndsAt: Unix seconds the current paid period ends.
    • givesAccess: Whether the subscription currently grants access.
    • autoRenewalStatus: Auto-renew status reported by the store (will_renew, will_not_renew, ...).
  • revenuecat_event (event) - Subscription lifecycle events (initial purchase, renewal, cancellation, billing issue, refund, trial start, conversion, ...).
    • Endpoint: GET /v2/projects/{project_id}/events
    • type: Event type (INITIAL_PURCHASE, RENEWAL, CANCELLATION, ...).
    • appUserId: App user id at the time of the event.
    • productId: Product involved in the event.
    • store: Originating store.
    • environment: production or sandbox.
    • priceInPurchasedCurrency: Charged amount in the purchase currency, if known.
    • currency: ISO currency code, if known.
  • revenuecat_metric_snapshot (metric) - Point-in-time snapshot of RevenueCat overview metrics (MRR, active subscriptions, active trials, trial conversion rate, etc.). Each metric is emitted as one sample per sync, tagged with the metric id under the metric dimension.
    • Endpoint: GET /v2/projects/{project_id}/metrics/overview
    • Granularity: minute
    • Dimensions: metric, unit
    • The unit varies by metric id (currency minor units for revenue metrics, count for subscriber metrics, ratio for conversion metrics) and is recorded in the unit dimension.

Example

import {
  defineConfig,
  defineDashboard,
  defineMetric,
  secret,
} from '@rawdash/core';

const revenuecat = {
  name: 'revenuecat',
  connectorId: 'revenuecat',
  config: {
    apiKey: secret('REVENUECAT_API_KEY'),
    projectId: 'proj1ab2cd3',
    resources: ['products', 'customers', 'events', 'metrics'],
  },
};

export default defineConfig({
  connectors: [revenuecat],
  dashboards: {
    mobile_revenue: defineDashboard({
      widgets: {
        active_subscriptions: {
          kind: 'stat',
          title: 'Active subscriptions',
          metric: defineMetric({
            connector: revenuecat,
            shape: 'entity',
            entityType: 'revenuecat_subscription',
            fn: 'count',
            filter: [{ field: 'status', op: 'eq', value: 'active' }],
          }),
        },
      },
    }),
  },
});

Rate limits

RevenueCat applies per-project rate limits and returns 429 with a Retry-After header on overrun; requests are retried with exponential backoff. List endpoints page via the starting_after cursor up to 1000 items per page.

Limitations

  • Monetary amounts (e.g. MRR) are emitted in the smallest currency unit reported by the upstream API (typically cents).
  • The overview metrics resource emits a point-in-time snapshot per sync rather than a backfilled timeseries; query timeseries widgets group these by metric and aggregate over time.
  • Subscription entities are emitted from data embedded in each customer response, not from a separate list endpoint.

Links

License

Apache-2.0