<!-- BusyBot node reference — https://busybot.net/tools/profitwell/ -->

> Node: ProfitWell (`profitwell`) · Action · v1
> Category: Analytics · Credentials: ProfitWell API (`profitWellApi`)
> Updated: 2026-08-16

# ProfitWell

> Retrieve subscription revenue metrics and company settings from ProfitWell.

## Overview

ProfitWell (now part of Paddle) provides subscription financial metrics and analytics. This tool accesses the ProfitWell API v2 (https://api.profitwell.com/v2). It supports two resources: Company (get settings) and Metric (get daily or monthly financial metrics). The Metric resource returns subscription revenue data including MRR, churn, customer counts, LTV, ARPU, and more. Daily metrics can be filtered by month (YYYY-MM format) and optionally by plan ID. Monthly metrics return all-time monthly data. Both types support a "simplify" mode that flattens the nested response into easier-to-process objects. Authentication is via API token passed in the Authorization header.

**Category:** Analytics  
**Tool Name:** `profitwell`  
**Version:** 1

**Appearance:** Icon: `lucide-TrendingUp` | Color: `#1E2A3A`

## Node Type

**Action** — processes input items and produces output

## Input / Output

| Direction | Port(s) |
|-----------|--------|
| Input | `Input` |
| Output | `Output`, `Error` |

## Credentials

This tool requires **ProfitWell API** credentials.
See the [Credentials Guide](https://busybot.net/credentials/profit-well-api/) for setup instructions.

### Resources

| Resource | Value |
|----------|-------|
| Company | `company` |
| Metric | `metric` |

### Operations

Each resource has its own Operation list. Pick the resource first, then the operation.

| Resource | Operation | Value | Description |
|----------|-----------|-------|-------------|
| Company | Get Settings | `getSetting` | Get your company's ProfitWell account settings |
| Metric | Get | `get` | Retrieve financial metric broken down by day for either the current month or the last |

### Parameters

`Company: Get Settings` takes no parameters of its own.

Parameter values are sent to ProfitWell exactly as you type them — this node does not evaluate `{{ … }}` expressions in its fields, so enter literal values.

#### Metric: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Type | `options` | Yes | — | Whether to retrieve daily or monthly metrics. |
| | | | | Options: `daily` (broken down by day for the current or previous month), `monthly` (all monthly metrics for your company) |
| Month | `string` | Yes | — | Can only be the current or previous month. Format should be YYYY-MM. _(shown when Type is `daily`)_ |
| Simplify | `boolean` | No | `true` | Whether to return a simplified version of the response instead of the raw data. |
| Options | `collection` | No | `{}` | Optional plan filter and metric selection. |
| — Plan ID | `string` | No | — | Only return the metric for this Plan ID. You can find plan IDs via the ProfitWell API endpoint GET /metrics/plans. |
| — Metrics (`dailyMetrics`) | `multiOptions` | No | — | Comma-separated list of metric trends to return (the default is to return all metrics). _(shown when Type is `daily`)_ |
| | | | | Options: `active_customers`, `churned_customers`, `churned_recurring_revenue`, `cumulative_net_new_mrr`, `cumulative_new_trialing_customers`, `downgraded_customers`, `downgraded_recurring_revenue`, `future_churn_mrr` (MRR that will be lost when users who are currently cancelled actually churn), `new_customers`, `new_recurring_revenue`, `reactivated_customers`, `reactivated_recurring_revenue`, `recurring_revenue` (your company's MRR), `upgraded_customers`, `upgraded_recurring_revenue` |
| — Metrics (`monthlyMetrics`) | `multiOptions` | No | — | Comma-separated list of metric trends to return (the default is to return all metrics). _(shown when Type is `monthly`)_ |
| | | | | Options: `active_customers`, `active_trialing_customers`, `average_revenue_per_user` (ARPU), `churned_customers`, `churned_customers_cancellations`, `churned_customers_delinquent`, `churned_recurring_revenue`, `churned_recurring_revenue_cancellations`, `churned_recurring_revenue_delinquent`, `churned_trialing_customers`, `converted_customers`, `converted_recurring_revenue`, `customers_churn_cancellations_rate`, `customers_churn_delinquent_rate`, `customers_churn_rate`, `customer_conversion_rate`, `customers_retention_rate`, `downgraded_customers`, `downgrade_rate`, `downgraded_recurring_revenue`, `existing_customers`, `existing_recurring_revenue`, `existing_trialing_customers`, `growth_rate`, `lifetime_value` (average LTV at the end of the period), `new_customers`, `new_recurring_revenue`, `new_trialing_customers`, `plan_change_rate`, `plan_changed_recurring_revenue`, `reactivated_customers`, `reactivated_recurring_revenue`, `recurring_revenue`, `revenue_churn_cancellations_rate`, `revenue_churn_delinquent_rate`, `revenue_churn_rate`, `revenue_retention_rate`, `upgrade_rate`, `upgraded_customers`, `upgraded_recurring_revenue` |

#### All Operations

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Max Concurrency | `number` | No | `10` | Maximum number of items to process concurrently. |

## Output Data

The ProfitWell response is merged into the output item's JSON at the top level — the returned fields sit alongside the fields the input item already carried, so downstream nodes address them directly (`{{ $json.recurring_revenue }}`) rather than through a wrapper property. A response field with the same name as an existing item field overwrites it. Binary data on the input item is forwarded unchanged.

How many items you get back depends on the shape of the response:

| Configuration | Output |
|---------------|--------|
| Company → Get Settings | One output item carrying your company's settings fields. |
| Metric → Get, Type `daily`, Simplify on | **One output item per day in the month** — each item carries a `date` plus one property per requested metric. |
| Metric → Get, Type `monthly`, Simplify on | One output item carrying one property per requested metric plus the `date` of the most recent month in the series. |
| Metric → Get, Simplify off | One output item carrying the raw metrics object — one property per metric, each an array of `{ date, value }` entries. |

With Simplify off, a daily response looks like this, and you index into the arrays yourself:

```json
{
  "recurring_revenue": [
    { "date": "2026-01-01", "value": 412300 },
    { "date": "2026-01-02", "value": 413100 }
  ],
  "active_customers": [
    { "date": "2026-01-01", "value": 318 },
    { "date": "2026-01-02", "value": 319 }
  ]
}
```

With Simplify on, the same call produces one flat item per date:

```json
{
  "date": "2026-01-01",
  "recurring_revenue": 412300,
  "active_customers": 318
}
```

Revenue metrics are returned in cents, matching the ProfitWell API.

## Usage Examples

- Get company ProfitWell account settings
- Get daily MRR and churn metrics for the current month
- Get monthly recurring revenue metrics for all time
- Get daily active customer count for January 2024
- Get monthly churn rate and LTV metrics filtered by plan

## Example Configuration

Retrieve your company's ProfitWell account settings:

```json
{
  "type": "profitwell",
  "parameters": {
    "resource": "company",
    "operation": "getSetting"
  }
}
```

Get a simplified daily breakdown for a specific month — one item per day:

```json
{
  "type": "profitwell",
  "parameters": {
    "resource": "metric",
    "operation": "get",
    "type": "daily",
    "month": "2026-01",
    "simple": true
  }
}
```

Get the full monthly history for a single plan, unsimplified:

```json
{
  "type": "profitwell",
  "parameters": {
    "resource": "metric",
    "operation": "get",
    "type": "monthly",
    "simple": false,
    "options": {
      "plan_id": "my-plan-id"
    }
  }
}
```

Ask for just two daily metrics instead of the full set:

```json
{
  "type": "profitwell",
  "parameters": {
    "resource": "metric",
    "operation": "get",
    "type": "daily",
    "month": "2026-01",
    "simple": false,
    "options": {
      "plan_id": "my-plan-id",
      "dailyMetrics": ["recurring_revenue", "active_customers"]
    },
    "maxConcurrency": 5
  }
}
```

Track churn and lifetime value month over month:

```json
{
  "type": "profitwell",
  "parameters": {
    "resource": "metric",
    "operation": "get",
    "type": "monthly",
    "simple": true,
    "options": {
      "monthlyMetrics": ["customers_churn_rate", "revenue_churn_rate", "lifetime_value"]
    }
  }
}
```

### Error Handling

| Mode | Behavior |
|------|----------|
| **stop** | Halts workflow on first error |
| **continue** | Skips failed items, passes successful ones through |
| **errorPort** | Routes failed items to Error output port |

## Tips

Retrieve subscription revenue metrics (MRR, churn, LTV, ARPU, etc.) and company settings from the ProfitWell API.

### Important Notes

- The `month` parameter only accepts current or previous month values in YYYY-MM format
- When using the `options` collection, structure it as a flat object directly under the `options` key
- The `simple` parameter controls response complexity - set to `true` for cleaner, processed data
- Daily metrics require a specific month, while monthly metrics return all available historical data