RevenueHog

// Security

What happens to your keys

RevenueHog works from keys you paste in: an App Store Connect .p8, and optionally a restricted Stripe key or a Google Play service account. Here is how they are stored, what they can do, and how to remove them.

Last updated 2026-10-20 · by RevenueHog

Encrypted at rest

Every credential you give us (the .p8 private key, a Stripe restricted key, a Google Play service-account file, an Apple Ads key) is encrypted with AES-256-GCM before it is written to the database. The encryption key is a Cloudflare Worker secret, held apart from the database, so a copy of the database alone cannot decrypt anything. GCM is authenticated: a tampered value fails to decrypt instead of producing garbage. Keys are decrypted in memory only when RevenueHog calls Apple, Stripe or Google on your behalf, and the dashboard never shows a stored key back to anyone.

The least access that works

Give the App Store Connect key the lowest role that covers what you want. RevenueHog detects the role and shows which features it unlocks in Settings.

App Store Connect roleWhat RevenueHog can do with it
Sales or Finance (minimum)Read daily sales and subscription reports: revenue, MRR, churn, trials.
FinanceAlso read payout reports.
App ManagerAlso set server-notification URLs for you (the only write) and read TestFlight.
AdminAlso webhooks and analytics report requests. Not needed for most people.

For Stripe, RevenueHog accepts restricted keys only (rk_live_ or rk_test_) and rejects secret keys. The setup asks for read permissions on customers, subscriptions, invoices, charges, products, prices, payouts, balance and events. Webhook Endpoints write is optional; without it RevenueHog polls instead of registering a webhook.

Rotation and deletion

Upload a new .p8 in Settings and the old encrypted copy is overwritten. Remove a credential and the row is deleted. Delete your account and every workspace you were the last member of is deleted with it, including stored keys and imported data; see account deletion.

Where it runs

Sub-processorPurpose
CloudflareHosting (Workers), queues, cache, email delivery
NeonPostgreSQL database, United States
AppleSource of App Store reports and notifications; push delivery (APNs)
GoogleGoogle Play data if you connect it, Google sign-in, analytics, push (FCM)

The full data inventory is in the privacy policy.

Report a problem

Found a vulnerability or think a key was exposed? Email privacy@revenuehog.dev. If a key may be exposed, revoke it at Apple or Stripe first: that takes effect immediately.

FAQ

Can RevenueHog change my apps or my prices?
Not with the minimum role. A Sales or Finance key can only read reports. The one write RevenueHog ever makes is setting your server-notification URLs, and only when you give the key the App Manager role and ask it to.
Why a restricted Stripe key and not a secret key?
A secret key can move money. A restricted key can only do what you tick when you create it, so RevenueHog refuses sk_ keys outright and asks for read permissions only.
How do I revoke access?
Remove the key in Settings and the stored copy is deleted. To be sure, also revoke it at the source: App Store Connect, Users and Access, Integrations, or Stripe, Developers, API keys. Revoking at the source works instantly even if you never sign in to RevenueHog again.

// Related