RevenueHogdocs← Back to app

Connect Stripe

A Stripe account connects with one read-only restricted key, and each of its products shows up in Apps as its own web app: the same live feed, MRR, alerts, widgets and digest as your App Store apps, with purchases, renewals, trials, churn, refunds and chargebacks mapped onto the same event badges. RevenueHog never holds a key that can move money.

Create a restricted key

In the Stripe dashboard: Developers, API keys, Create restricted key. Grant Read on: Customers, Subscriptions, Invoices, Charges, Payment Intents, Checkout Sessions, Products, Prices, Coupons, Disputes, Payouts, Balance, Balance transaction sources, Events.

Optionally grant Webhook Endpoints: Write so RevenueHog can register its endpoint for you and events arrive instantly. Without it, events refresh every few minutes, and you can still wire a webhook by hand (below).

Read-only by design

A restricted key with read grants cannot create charges, refunds or anything else. If a call is missing a permission, Stripe's own error names the one to add and RevenueHog shows it verbatim.

Connect the account

Paste the key under Settings → Stripe. RevenueHog validates it live and walks you through two choices before anything is saved.

Apps. Every product on the account is listed, and each one you keep selected becomes its own app with its own feed, metrics and alerts. Payments that do not belong to a product (one-off checkouts, for example) land on the first selected app. An account with no products connects as a single app named after the account.

History. Import your full Stripe history (recommended), import only from a date you pick, or start live-only from the moment you connect. A full import rebuilds revenue, trials and churn from your invoices, subscriptions, refunds, disputes and checkout sessions, so the feed and metrics start with your past, not an empty page.

Reconnecting after a key rotation is the same paste; RevenueHog recognizes the account, updates the stored key, and nothing is lost.

Live events: webhook or polling

With Webhook Endpoints write on the key, RevenueHog provisions the endpoint automatically and events land the second Stripe sends them. Otherwise it polls your account's event log every few minutes. To wire the webhook by hand instead: Stripe dashboard, Developers, Webhooks, Add endpoint, using the URL shown on your connection card and these event types: invoice.paid, invoice.payment_failed, customer.subscription.created, customer.subscription.updated, customer.subscription.deleted, checkout.session.completed, refund.created, charge.dispute.created, charge.dispute.closed, charge.dispute.funds_reinstated. Then paste the signing secret into the connection card.

Either way the poller keeps running as a safety net, and every delivery is deduplicated, so nothing double-counts.

What lands where

Paid invoices become BUY and RENEW events (a trial's first paid cycle becomes CONV), trial starts become TRIAL, cancellations and expirations become CHURN, refunds become RFND, and chargebacks ride the refund family (opened = RFRQ, lost = RFND, won = RDEC). The full badge reference lives in Live feed & events. Proceeds are your gross minus Stripe's observed fees; MRR counts active, trialing-excluded and past-due subscriptions the same way Stripe's own dashboard does.

Not in scope for Stripe apps

App Store reviews, TestFlight, store funnels and version tracking are App Store surfaces; a web app simply doesn't show them.