Skip to main content
ChartMogul is a subscription analytics platform: it reads your billing systems (Stripe, Chargebee, Recurly, App Store, custom imports and others) and turns them into SaaS metrics such as MRR, ARR, churn and LTV. This connector reads your ChartMogul account through its public API and brings your customers and their subscriptions, plans and plan groups, invoices with their line items and payments, every MRR movement (new business, expansion, contraction, churn, reactivation) and your key metrics day by day.
The connector only reads data. It never creates, changes or deletes anything in ChartMogul.

Configuring ChartMogul as a Source

In the Sources tab, click on the “Add source” button located on the top right of your screen. Then, select the ChartMogul option from the list of connectors. Click Next and you’ll be prompted to add your access.

1. Add account access

The connector signs in with a ChartMogul API key. To create one, in ChartMogul open Profile > View Profile, choose API Keys in the sidebar and click Add API Key. A key with read-only access is enough. We recommend a dedicated key for Nekt, so you can revoke it without affecting other integrations. See ChartMogul’s guide to API keys. The following configurations are available:
  • API Key: The ChartMogul API key.
  • Start Date: Earliest date to read for activities (activity date) and first day of the daily metrics. ChartMogul recalculates past activities and metrics whenever your billing data changes (an invoice imported late, a refund, a customer merge, a new billing source), so these streams are read again from this date on every sync. The other streams are always read in full.
Once you’re done, click Next.

2. Select streams

Choose which data streams you want to sync. For faster extractions, select only the streams that are relevant to your analysis. You can select entire groups of streams or pick specific ones.
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 the desired layer where the data will be placed, a folder to organize it inside the layer, a name for each table (which will effectively contain the fetched data) and the type of sync.
  • Layer: choose between the existing layers on your catalog. This is where you will find your new extracted tables as the extraction runs successfully.
  • Folder: a folder can be created inside the selected layer to group all tables being created from this new data source.
  • Table name: we suggest a name, but feel free to customize it. You have the option to add a prefix to all tables at once 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, 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 define some additional settings:
  • Configure Delta Log Retention and determine for how long we should store old states of this table as it gets updated. Read more about this resource here.
  • Determine when to execute an 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 page. If needed, manually trigger the source extraction by clicking on the arrow button. Once executed, your data will appear in your Catalog.
For you to be able to see it on your Catalog, you need at least one successful source run.

Streams and Fields

Available streams

The table below lists every stream, its slug (the exact identifier to pass when creating the source via API) and a short description.
Amounts come in cents, as ChartMogul sends them: divide by 100 to get the value in the account currency (or, for invoices, in the invoice currency). Nested information (customer attributes, address, custom attributes, edit history, validation errors) comes as JSON text.

Fields by stream

Customers and subscriptions

Customers and leads of your ChartMogul account, with their current MRR and ARR and their lead, trial and subscriber statuses. Read in full on every sync.Table: customers · Primary key: uuid · Sync: Full table
Subscriptions of every customer, with current MRR, ARR, plan, quantity and status. ChartMogul only lists subscriptions customer by customer, so this stream makes one request per customer. Read in full on every sync.Table: subscriptions · Primary key: uuid · Sync: Full table

Plans and sources

Billing systems and custom imports that feed your ChartMogul account.Table: data_sources · Primary key: uuid · Sync: Full table
Subscription plans of every source, with their billing interval.Table: plans · Primary key: uuid · Sync: Full table
Plan groups (sets of plans reported together).Table: plan_groups · Primary key: uuid · Sync: Full table
Which plans belong to each plan group: one row per plan group and plan.Table: plan_group_plans · Primary key: plan_group_uuid, uuid · Sync: Full table

Invoices

Invoices imported into ChartMogul: the valid, enabled invoices that ChartMogul uses for its metrics. Line items and transactions are also available one per row in the next two streams.Table: invoices · Primary key: uuid · Sync: Full table
Every line item of every invoice (subscription, one-time and trial charges), with amounts, discounts, taxes, fees and the service period.Table: invoice_line_items · Primary key: uuid · Sync: Full table
Every payment and refund attempt of every invoice.Table: invoice_transactions · Primary key: uuid · Sync: Full table

Activities and metrics

Every MRR movement of your account: new business, expansion, contraction, churn and reactivation, per customer. Read in full, from the Start Date, on every sync.Table: activities · Primary key: uuid · Sync: Full table
All key metrics for every day since the Start Date: MRR, ARR, customer and net MRR churn rates, LTV, active customers, ASP and ARPA. Read in full, from the Start Date, on every sync.Table: metrics_daily · Primary key: date · Sync: Full table
MRR for every day since the Start Date, broken down into new business, expansion, contraction, churn and reactivation. Read in full, from the Start Date, on every sync.Table: mrr_movements_daily · Primary key: date · Sync: Full table

Implementation Notes

Data Quality Considerations

  • Every stream is read in full on every sync. ChartMogul has no “changed since” filter for customers, plans or invoices, and it recalculates activities and metrics for past days, with no time limit, whenever your billing data changes. A full read is the only way to always match what ChartMogul shows: an invoice paid or refunded later, a customer that churned, an activity added months in the past or replaced after a recalculation, a corrected MRR value.
  • A sync never loads half a stream: every stream is read completely before anything is loaded, so a sync that fails halfway leaves the previous table in place. If a stream that had records comes back completely empty, the sync stops instead of emptying the table (Plan Group Plans and Invoice Transactions excepted, as they can legitimately be empty). If ChartMogul leaves out a day in the middle of the daily metrics, the sync stops instead of saving a table with a missing day. Days before your account’s history starts, and today or yesterday when your ChartMogul time zone is behind UTC, are simply not in the table yet.
  • Invoices: only valid, enabled invoices are read, the same ones ChartMogul uses for its metrics. Invoices with import errors or disabled in ChartMogul do not appear.
  • Daily metrics follow your ChartMogul account’s time zone and include today, whose values change until the day ends. Every percentage change is relative to the previous day.

API Limits & Performance

  • ChartMogul allows 40 requests per second. The connector sends at most 20 per second, one at a time, and waits when ChartMogul asks it to slow down.
  • Lists are read in pages of 200 records.
  • Subscriptions are only available customer by customer, so the Subscriptions stream makes one request per customer, one after the other. Expect roughly 35 to 50 minutes for 10,000 customers and several hours for 100,000. While it runs, the sync log shows how many customers were read and an estimate of the time left. For very large accounts (for example B2C, with hundreds of thousands of customers), deselect Subscriptions or schedule the source with long runs in mind: the Customers stream already has each customer’s current MRR and ARR.
  • The daily metrics are read in blocks of 180 days, about 3 requests per year of history for each of the two metrics streams.

Troubleshooting

Skills for agents

Download ChartMogul skills file

ChartMogul connector documentation as plain markdown, for use in AI agent contexts.