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.