# One support screen for beehiiv subscribers and Stripe billing

> Paste a reader's email and see their newsletter status, tiers, and payment history on one screen, with safe fixes your support teammate can run.

- Workflow type: app
- Services: beehiiv, Stripe
- Categories: Customer Support, Operations
- Published: 2026-08-14

## What it does

- Search any reader by email address and get one profile showing their subscription status, paid tier, how they signed up, and the custom fields you keep on them
- See every publication of yours that person is subscribed to, so you can answer "am I actually on the list" without opening your newsletter admin
- Pull their payment history next to it, so "I was charged but cannot read the paid posts" gets answered on the same screen instead of two tools
- Fix the everyday problems in place: correct a mistyped address, move someone onto the right tier, or resubscribe a reader who left by accident, each behind a confirmation step
- Keep a running log of every change with who made it and when, so you always know what happened to a reader record

## What you'll need

- A beehiiv account with the newsletters your team supports. An Owner or Admin sets up the connection once
- A Stripe account if you charge for paid subscriptions. If your newsletter is free you can skip it and the screen simply shows the newsletter side
- The email addresses of the readers writing in. Nothing else to prepare

## Prompt

Build me an internal subscriber support console so a support teammate can answer reader questions without being given admin access to our beehiiv workspace or our Stripe dashboard. The app is essentially one screen: a search box at the top where I paste a reader's email address, and a single merged profile below it. This is the ops person's daily screen, so keep it dense and fast, and keep the search box ready for the next lookup after every search.

Lookup. When an email is submitted, the handler calls beehiiv Get Subscription by Email for the currently selected publication. A publication picker sits next to the search box, populated by beehiiv List Publications, and remembers the last publication each teammate chose. The profile shows subscription status, current tier, the date they subscribed, the signup source and any UTM fields beehiiv returns, and every custom field as a plain label and value list. If the exact email lookup returns nothing, fall back to beehiiv List Subscriptions filtered by that email to surface near matches such as typos or plus addressing, and let the teammate pick the right person from those results instead of showing a dead end.

Publications. Alongside the profile, call beehiiv Get Publications by Subscription Email to list every publication in our workspace that address is subscribed to, with the status on each. Compare that against beehiiv List Publications so the panel also shows the publications the reader is not on. That single view answers most "I am not getting your emails" tickets on its own.

Billing. If the reader pays us, the same profile shows their billing history. Resolve the email to a customer first with Stripe Search Customers using an email query, then call Stripe List Subscriptions filtered by that customer id, including cancelled and past due ones rather than active only, and Stripe List Charges filtered by the same customer. Show each subscription with its status, the plan and amount, the current period end, and whether it is set to cancel at period end. Show each charge with date, amount, paid or refunded or failed status, and description. If no Stripe customer matches the address, show a calm "no payment record found for this address" state rather than an error.

Mismatch banner. At the top of the profile, compare the two sides and state any conflict in plain language, because the mismatch is usually the whole answer to the ticket. Call out an active paid Stripe subscription while the beehiiv tier is free or the status is not active, which is the "I was charged but cannot read the paid posts" case. Call out a beehiiv status of unsubscribed with the date, which is the "I am not receiving emails" case. Call out a paid beehiiv tier with no active Stripe subscription. When both sides agree, say so clearly so the teammate can reply with confidence.

Actions. Three buttons on the profile, each behind a confirmation step. Correct the email address when someone mistyped it at signup. Change the tier, with the dropdown populated from beehiiv List Tiers for that publication so only real tiers can be chosen. Resubscribe a reader who unsubscribed by accident, by setting their subscription status back to active. Use beehiiv Update Subscription by ID when the lookup already gave us the subscription id, and beehiiv Update Subscription by Email when acting on an address that was just matched. Every button opens a confirmation dialog that spells out exactly what will change, showing the current value and the new value, and nothing is written until the teammate confirms. Refresh the profile after a successful write so the screen always reflects reality. Keep the write surface exactly this narrow and do not add deletion or bulk actions.

Audit trail. Every attempted action writes a record in the app with the logged in teammate, the timestamp, the reader email, the subscription id, the publication, the action type, the before value, the after value, and whether it succeeded or failed. Show a recent activity section on the loaded reader's profile, and a separate full history view listing all changes across all readers, newest first, filterable by teammate and by date range. The log is append only and nothing in the interface edits or deletes it.

Handle the edge cases inline rather than with blank screens: no results, an address that exists in Stripe but not in beehiiv, an address in beehiiv with no payment record, and any API error surfaced as readable text on the panel it came from so the teammate knows which half of the picture failed to load.

## How to customize

- Choose which publications the console searches, or let it look across every publication in your workspace
- Decide how much your support teammate can change: address corrections only, or tier moves and resubscribes as well
- Adjust how much billing history appears, for example the last five payments instead of the last twenty

## FAQ

### Do I have to give my support teammate access to my beehiiv account?

No, and that is the main reason to use this. The console is the only surface they open. They can look up readers and run the few corrections you allow, without an admin login to your newsletter workspace or your payment dashboard.

### What happens if the reader is not found?

The screen tells you plainly that nothing matched, then looks for near matches on similar addresses. Most "I never got the newsletter" tickets turn out to be a typo at signup, so the near-match list usually finds the person straight away.

### Does this work if my newsletter is free?

Yes. Without a payment connection the profile shows the newsletter side only: status, tier, signup source, custom fields, and which publications the reader is on. You can add billing later and the same screen fills in.

### Can I see who changed what?

Yes. Every action is recorded with the teammate who ran it, the time, the reader it affected, and the before and after values. There is a full history view as well as recent activity on each reader profile.

### Can someone change a reader by accident?

Every action opens a confirmation step first that spells out exactly what will change, from the old value to the new one. Nothing is written until it is confirmed, and the change is logged either way.

### Why does it show newsletter status and payments together?

Because the two most common support tickets are "am I actually subscribed" and "was I actually charged", and answering either one usually means checking both systems. Seeing them side by side also exposes mismatches, like an active payment with no paid access.

Use this prompt in General Input: https://www.generalinput.com/prompts/one-support-screen-for-beehiiv-subscribers-and-stripe-billing