# Polar: paying customers and cancellation reasons

> Connect your Polar organization to Camelus: plan and revenue on every requester, MRR affected per theme, and cancellation reasons as feedback.

If you sell through [Polar](https://polar.sh), connect your organization and Camelus learns who pays you. Paying customers weigh more in theme scores, each theme shows how much monthly revenue it touches, and when someone cancels with a reason, that reason lands in your Inbox as feedback.

The connector is read-only and on the Pro and Studio plans.

## What you get

- **Plan and revenue on people.** Every requester whose email matches a Polar customer shows their plan and monthly revenue (MRR). Yearly plans count as a twelfth a month. Trials count as not paying yet.
- **Better ranking.** A paying requester weighs more than an unknown one, and a customer who cancelled in the last 90 days weighs the most: they told you why they left. See [how the score works](/docs#4-themes-and-the-score).
- **MRR affected** on each theme: the monthly revenue of the distinct paying customers who asked for it. Without Polar it shows "—": Camelus never guesses revenue.
- **Cancellation reasons as feedback.** When a customer cancels and picks a reason or writes a comment, it becomes an item from the **Polar** source, grouped into themes like any other feedback.
- **Alerts** (with alerts on in Settings → Notifications) for urgent feedback from paying customers, and when three or more customers of a product cancel with a reason in a week.
- **Digests** list complaints from paying customers and cancellations.

## Connect

1. In Polar, open **Settings → Developers → New token**. Give it the `subscriptions:read` scope only.
2. In Camelus, open **Settings → Integrations**, paste the token, pick **Production** (or **Sandbox** for a Polar sandbox organization) and click **Connect Polar**.

The first sync starts right away. Camelus then syncs once a day: active subscriptions, plus those cancelled in the last 90 days. On the first sync, cancellation reasons from the last 30 days are imported.

## Add the webhook (recommended)

Without it, changes arrive with the next daily sync. With it, they arrive in seconds.

1. In Polar, open **Settings → Webhooks → Add endpoint**.
2. Paste the **Endpoint URL** shown in Settings → Integrations (`https://api.camelus.si/v1/polar/connector/…`). Format: **Raw**.
3. Select every `subscription.*` event.
4. Copy the signing secret Polar shows (`whsec_…`) and paste it into **Signing secret** in Camelus.

Camelus checks the signature of every delivery and ignores anything older than five minutes.

## Map your products

Cancellation reasons go to a Camelus product. With a single product, they all go there. With several, pick a Camelus product for each Polar product under **Products** in Settings → Integrations; reasons from unmapped Polar products aren't imported. Plans and revenue count for everyone either way.

Each product also has a **Polar cancellations** source in its settings, with an on/off switch.

## Privacy

- The token is encrypted at rest and only decrypted on the server to call Polar. It's never shown again; Camelus shows its last four characters.
- Camelus reads subscriptions: the customer's email, product, amount, status and cancellation reason. It never writes to Polar.
- Revenue and plan stay inside Camelus. [Destinations](/docs/destinations) receive counts (paying requesters, MRR affected), never who pays what.
- **Disconnect** deletes the token and the cached subscriptions, and removes plans and revenue from people. Cancellation feedback already in the Inbox stays.
