Integrations › Revenue › Stripe

Turn your Stripe into build-in-public posts

Stripe is the payments platform where a maker takes card payments and runs subscriptions, invoices and refunds. FoxPlug reads what you did there, scores it, and tells you what to fix, what to say and what to skip. Nothing posts until you approve it.

Read onlyChecked with a real account

1What FoxPlug reads from Stripe

These are the exact things it reads, and nothing else.

WhatThe details it takes
Charges (first customer and paid-order count)the latest 100 charges: id, paid, status, amount, currency, created. The oldest succeeded charge becomes the first-customer moment; the count of succeeded charges crosses 10, 50, 100 or 500.
Active subscriptions (count, monthly revenue, new in 30 days)up to 100 active subscriptions with their prices: currency, created, each item's unit amount, quantity, recurring interval and interval count. Yearly, weekly and daily prices are turned into a monthly amount.
Cancelled subscriptions (cancelled in the last 30 days)up to 100 cancelled subscriptions; counts those with canceled at or ended at inside 30 days.
Past-due subscriptions (failed renewals)up to 100 subscriptions Stripe marked past due: how many, and the monthly amount at risk. Only written when Stripe answered, so 'nothing failed' is never claimed from a failed read.
Where new customers are (country only)for active subscriptions: subscription created time plus a two-letter country taken from the customer address, shipping address, the payment method billing address or the card's country. Only the country code and created time are kept.
Cards updated by the card networksevents of type payment method.automatically updated from the last 30 days: customer id and created time.
Cards on active subscriptions (expiring cards)per active subscription: the card's expiry month and year, payment method id, customer id and email, plan nickname and the subscription's monthly amount. Only cards expiring this month or next with 14 days or less left are flagged.
Open invoices with a failed paymentup to 100 open invoices: id, customer, customer email, amount due, attempt count, the payment intent's last payment error code or decline code, plan nickname or line description, hosted invoice url, created. An open invoice never attempted is not counted as a failure.
Customer portal settingsthe default billing portal configuration: whether it is active, its login page URL, whether cancellation reasons are collected and whether pausing is on.
Customers still paying who have set a cancelfrom the active subscriptions: cancel at period end or cancel at, period end, customer email, plan nickname, monthly amount, and cancellation details feedback and comment (the comment cut to 600 characters).
Booked downgradesup to 100 subscription schedules: active schedules whose next phase costs less than the current one, with plan nicknames and the customer's email.
Your yearly and recurring pricesup to 50 active recurring prices: nickname, unit amount, interval, product. Used to spot monthly payers of 3 months or more who could take the yearly price, and to name cheaper plans in a draft.
Number of cards on file for the 10 biggest customerspayment methods of type card for each of the 10 biggest customers, limit 3 each: only how many cards there are, to count customers with a single card.
Cancellations of the last 180 days, and disputes (win-back)cancelled subscriptions with the customer's email and name, plan, amount, canceled at and cancellation details feedback and comment; disputes with the charge's customer id (a customer who disputed is never written to); active subscriptions to see who came back.
Why they left (last 30 days)the 5 newest cancellations (up to 20 read) and plan downgrades from customer.subscription.updated events; for each, the customer's email and name, used to look up their last visit and errors in the PostHog and Sentry the maker connected.

2Moments it finds, and what each becomes

A moment is one thing that happened in Stripe worth a second look. Each one is scored, then it becomes a post, a changelog entry, a thing to fix or an idea to email, or it is skipped.

Post

The first successful payment shows up in the account

The moment is titled like this: 💸 First customer — $19.99 (or '💸 Got the first paying customer' when no amount can be read)

A maker connects Stripe and presses Check for what's new. The oldest succeeded charge is $19.99, so the moment reads 'First customer — $19.99' and a post about the first paying customer is drafted for review. The amount is the maker's own revenue.

Post

Paid orders cross 10, 50, 100 or 500

The moment is titled like this: Passed 10 paid orders

The 10th succeeded charge is read. The moment 'Passed 10 paid orders' is written once (its id is fixed per threshold) with the line 'Crossed 10 successful payments, steady traction on the revenue side.'

Post

A payment arrives through the Stripe sign-in connection's webhook

The moment is titled like this: New payment — $29.00 (the very first one reads '💸 First customer — $29.00')

A customer pays $29.00 on a connected account. The webhook is checked with its signature and becomes 'New payment — $29.00', described as '$29.00 from a new customer.'

Fix first

Subscriptions Stripe has marked past due (a renewal charge failed)

The moment is titled like this: No milestone. The Today brief line reads '3 subscriptions are past due, $87 a month at risk.'

Three renewals failed. The brief puts a Fix line first: '3 customers' payments failed. Fix before you post.' with the monthly amount at risk, because money at risk beats announcing anything.

Email idea

A card expires this month or next, or an invoice failed in a way the customer must fix

The moment is titled like this: Brief line: 'Revenue rescue: 2 customers to write to.'

Two active subscribers have cards expiring in under 14 days with no network refresh. FoxPlug lists them and prepares a draft note for each. A payment that failed for lack of funds is left to Stripe's retries (skip), and a bank refusal with no reason or a fraud flag is marked do not chase.

Email idea

A customer set a cancel, or a customer cancelled 45 to 90 days ago and the maker shipped a big win

The moment is titled like this: Brief line: 'Saving customers: 1 still paying, leaving.' / win-back picks for the newest top-tier win

A subscriber on a Pro plan chose 'too expensive' and their period ends in 5 days. A short draft is ready that offers a cheaper plan the maker really has. Months later, when the maker ships a big win, people who left for a matching reason get a draft that links the changelog.

3How the brain uses it

The rules below are the ones that apply to Stripe. The same rules, with worked examples, are on the brain page.

4Set up Stripe in a few steps

Access: one-click Stripe sign-in (when switched on), or a pasted restricted key (rk_live_) set to Read. What to give it: restricted key, read-only on charges/balance. Panel copy: 'Read only: FoxPlug asks Stripe for read-only permission and nothing else.' Key page steps: set Customers, Charges and Refunds, Subscriptions, Invoices, Events, Disputes, Products and Prices, Customer portal, Subscription schedules to Read, everything else None, never Write.

  1. Open https://dashboard.stripe.com/apikeys (the in-app link opens the Stripe keys page).
  2. Check you are in live mode, not a sandbox, otherwise you get a test key that sees no real payments.
  3. Under Restricted keys press Create restricted key and name it FoxPlug.
  4. Start with no permissions, then set to Read: Customers, Charges and Refunds, Subscriptions, Invoices, Events, Disputes, Products and Prices, Customer portal, Subscription schedules. Leave everything else on None and never choose Write.
  5. Press Create key, confirm the code Stripe sends you, copy the key that starts rk_live_ (Stripe shows it once) and paste it into the Stripe box in FoxPlug. FoxPlug checks the key and refuses one that can change anything.
  6. Or, where the panel shows it, press Connect with Stripe, sign in at Stripe and allow read-only access.

5Limits worth knowing

Where it stops, so nothing surprises you.

6What it never reads

Read only means read only, and the list below is what the code leaves alone.

  • Full card numbers. From a card the code reads only expiry month, expiry year and country.
  • Anything with write power: a full secret key (sk_live_) is refused, a key that can write is refused, and a test-mode key is refused.
  • Test-mode objects: anything with livemode false is dropped before any number is made.
  • Customer emails and names are not written to logs or URLs; they are stored for the maker only.
  • A customer who disputed a charge is never contacted by win-back.

7Questions

Can FoxPlug change, refund or charge anything in my Stripe?

No. FoxPlug only accepts a restricted key set to Read; it refuses a full secret key and any key that can write. It also never retries a charge or creates a coupon. Drafts for customers are only sent when you press Send.

Why was my key refused?

A key is refused if it is a full sk_live_ key, a test-mode key, not an rk_live_ restricted key, or can write to customers, subscriptions or payment intents. It is also refused if it cannot read Subscriptions, Invoices, Customers or Charges and Refunds. The message names what to fix.

Does FoxPlug email my customers?

Not on its own. Failed payment, expiring card, saving and win-back notes are drafts for you to read and edit. A note goes out only when you press Send, from your own connected sender, and people on your do-not-contact list are left out.

Does it see test-mode payments?

No. Test-mode objects are dropped before any number is made, and a test key is refused. Use a live restricted key.

When does it read my Stripe?

When you press Check for what's new or Build / Update the brief. Nothing is fetched on a timer.

FoxPlug reads this tool only when you press Check for what's new, and only to read. Plans and limits are on the pricing page. Questions: support.