Skip to main content

1. Connect your revenue

In Integrations, choose where you charge. They can coexist, and whoever charges through more than one sees a single MRR. Stripe connects over OAuth. None of your tokens are stored: calls use the platform key with a header identifying your account. AbacatePay connects by pasting an API key. Generate a read-only one — the same key that reads is the one that charges, and Keep does not need that access. Asaas connects by pasting a read-only API key too, like AbacatePay. Keep detects on its own whether the key is production or sandbox. In every case the access is read-only: Keep never creates, changes, or cancels a charge.

2. Generate an API key

In API keys, click New key and give it a name you will recognize six months from now. It is how you will decide which one to revoke.
The secret appears only once. We store only the hash, so not even we can show it to you later. If you lose it, generate another and revoke the old one.

3. Send activity

One call from your backend, where you already know who the user is. One per login usually does it.
Sending the customerId is what makes the match exact: the same id arrives from the other side, from your own billing. With only an email, you are back to the domain heuristic — which fails exactly when whoever pays is not who uses.

4. Wait two weeks

Keep compares the last 7 days against the 7 before. Before two windows exist, there is nothing to compare. If you want a result right away, send a backfill: the endpoint accepts an array of up to 500 events per call, with at in the past.