Which count belongs in your budget?
Use the provider's billable definition for the selected plan and period. Buttondown's pricing page says it charges for active subscribers receiving emails. Kit's pricing page uses unique active subscriber language. These definitions should not be replaced by the number of rows in an exported CSV.
beehiiv documents active, inactive, pending, paused and needs-approval states. Pending status in its double-opt-in workflow indicates an uncompleted confirmation. That documentation is not a reason to treat every provider's “active” field, or an imported historical record, as proof of a newly confirmed opt-in.
One file, several different totals
We ran the read-only inspector against a deliberately awkward synthetic export. It contains 16 rows and 13 unique shape-valid addresses. Nine rows have an active label; after exact-address grouping and the shape check, seven unique addresses have that label. Only three unique records meet the fixture's stricter local review-ready rule: active, a synthetic confirmed label and no row-level issue.
Those totals all describe the same input. None is a real provider billing total or a verified subscriber count. The three-record result reflects our local rule, not a recommendation to delete the other records. Ambiguous states need investigation before changing a real audience.
- Define each count · CSV worksheet
- Executed synthetic count output · JSON
- Inspect the 16-row fixture · CSV
- Reproduce the counts · Python
A useful reconciliation table
For each count, record its definition, value, observation time, source and unresolved questions. Keep these rows separate: raw export records; unique identity keys; the provider's active filter; confirmed opt-ins for your actual collection workflow; billable subscribers; and paying readers. A reader paying for newsletter access is different from a contact contributing to the software bill.
Use the same observation time where possible. A list can change between an export and a dashboard check. If you cannot reconcile the views, record that difference. Do not resolve it by choosing whichever number produces a more attractive cost or conversion rate.
What happens at a pricing boundary?
Record the exact wording of the included allowance, the account's billable count and the date the provider measures it. Check whether a promotion, annual commitment, add-on or different publication changes the scope. A public calculator may show one selection while your account has another. The worksheet intentionally leaves unknown cells blank.
The dated cost calculator exposes only the existing 1,000- and 10,000-subscriber scenarios. It does not interpolate a quote for 6,800 subscribers or decide which of your contacts a provider bills. The newsletter comparison records the plan and currency limitations behind those observations.
Keep confirmation separate from form acceptance
A successful form request establishes that a request was accepted at that stage. It does not by itself establish mailbox delivery, a clicked confirmation link, a paying reader or a completed order. When your workflow requires confirmation, count that separate event from its actual evidence. If you only have an active-list aggregate, leave confirmed opt-ins unknown rather than replace them with the aggregate.
Before moving a real list, use the CSV import checklist. This article used synthetic local data on 10 October 2026; it accessed no provider audience and changed no subscription status.
Sources and scope
- Buttondown pricing · Read 10 October 2026.
- beehiiv subscriber statuses · Read 10 October 2026.
- Kit pricing · Read 10 October 2026.
Factual explanation and local teaching examples. Source reads and local executions have separate scopes. No native provider workflow, send, payment, deliverability result or comparative winner is claimed. Send a correction.