# Revenue overview (https://www.getfounderhq.com/docs/analytics/revenue)

Revenue attribution answers one question: which channel and which content paid you.

FounderHQ joins every payment to the contact who paid it. It then reads that
contact's touch history and prints two answers on the payment:

- **Introduced by** — the touch that first brought the contact to you.
- **Closed by** — the last touch before the money arrived.

Refunds, lost disputes, and credit notes subtract from the same numbers.
Subscriptions also carry MRR, so a renewal keeps counting for the channel that
won the customer.

Every payment lands on the day the money moved, not the day FounderHQ heard
about it. A late webhook still lands on the right day.

## Two ways to get revenue in

**Connect your payment provider.** Open **Settings → Integrations → Revenue**
and choose the brand the account belongs to. Stripe can connect in one click,
with a read-only key, or by webhook. Dodo can connect with a read-only API key
or by webhook. Providers you can connect today:

| Provider        | Page                                                          |
| --------------- | ------------------------------------------------------------- |
| Stripe          | [Connect Stripe](/analytics/revenue/connect-stripe)           |
| Apple App Store | [Connect Apple](/analytics/revenue/connect-apple)             |
| Google Play     | [Connect Google Play](/analytics/revenue/connect-google-play) |
| Dodo Payments   | [Connect Dodo](/analytics/revenue/connect-dodo)               |
| RevenueCat      | [Connect RevenueCat](/analytics/revenue/connect-revenuecat)   |
| Superwall       | [Connect Superwall](/analytics/revenue/connect-superwall)     |

**Send the payment yourself.** Any other processor goes through the
[generic revenue API](/analytics/revenue/generic-revenue-api). You post one command
per payment or refund with a secret key. The command drives the same reports,
the same refunds, and the same MRR as a connected provider.

Read [connect modes](/analytics/revenue/connect-modes) before you choose.

## What FounderHQ needs from your checkout

A payment carries no attribution on its own. Your checkout must carry two IDs
from the visitor's browser or app:

```text
fhq_anonymous_id
fhq_session_id
```

Where those IDs go depends on the provider and on how you take payments. See
[checkout metadata and payment links](/analytics/revenue/checkout-metadata-and-payment-links).

Mobile stores work differently. The purchase carries a FounderHQ UUID in
Apple's `appAccountToken` or Google's `obfuscatedExternalAccountId`. See
[mobile purchase claims](/analytics/revenue/mobile-purchase-claims).

## How connections stay healthy

A key gets revoked. Somebody removes an invite. A webhook endpoint disappears
in a dashboard cleanup. None of that announces itself, and a connection that
looks fine while it quietly reports nothing is worse than one that is clearly
broken.

So FounderHQ checks every connected account a few times a day. The check is
read-only: it asks the provider whether the access you gave still works, and it
changes nothing on your side.

When a check fails, the connection shows **Needs attention** in
**Settings → Integrations → Revenue**, with the reason and the fix on the row —
for example, save a new read-only key, or re-invite FounderHQ in Play Console.
Nothing is switched off: the connection keeps running, and past revenue stays
exactly as it is. The badge clears itself the moment a check passes again.

For providers that only send webhooks, there is nothing to ask. FounderHQ
watches for silence instead, and says something only when an account that used
to send events stops for two weeks. A quiet month does not raise the badge.

## Where to go next

- [Attribution (Introduced by / Closed by)](/analytics/concepts/attribution) — how
  the two answers are chosen.
- [Multiple providers](/analytics/revenue/multiple-providers) — what happens when
  two connections report the same purchase.
- [Generic revenue API](/analytics/revenue/generic-revenue-api) — the full field
  reference.
