Loops vs Userlist: contacts and Stripe events, or users and company accounts
Loops bills by subscribed contacts and has a free plan: $99 a month at 9,998 subscribers and $249 at 49,989. Userlist bills by tracked users from a $149 floor (Basic, up to 10,000 users) and keeps data about companies as well as people, which is the part B2B SaaS teams usually miss elsewhere. A small team that wants the lowest bill and a ready-made Stripe connection should start with Loops. A team whose messages depend on what a whole account is doing should price Userlist.
By Julian Pryor · Updated 7 Oct 2026
Short answer
Pick Loops for a founder-run or small-team product where one person owns lifecycle email, billing events come from Stripe, and the audience is counted in individual contacts. Pick Userlist when trial, upgrade and cancellation messages should be decided per company (for example, "nobody on this account has invited a teammate"), and the extra $50 to $300 a month between 10,000 and 50,000 users is acceptable. If you raised under $500k, Userlist's first-year discount changes that arithmetic.
The bill at four audience sizes
Prices below were read from Loops' pricing page and Userlist's pricing page on 7 October 2026. Loops' figures are slider readouts at the subscriber counts shown. Userlist publishes $149 (Basic) and $349 (Professional) for up to 10,000 users plus $10 and $12 for each extra 1,000, and its page also reads $229 at 18,000 users and $369 at 32,000 on Basic, which fits that formula exactly. The 25,000 and 50,000 rows below apply the formula.
| Audience | Loops | Userlist Basic | Userlist Professional |
|---|---|---|---|
| About 5,000 | $48 at 4,788 subscribers | $149 (the plan starts at 10,000 users) | $349 |
| About 10,000 | $99 at 9,998 subscribers | $149 | $349 |
| 25,000 | $198 at 24,339 subscribers | $149 + 15 × $10 = $299 | $349 + 15 × $12 = $529 |
| 50,000 | $249 at 49,989 subscribers | $149 + 40 × $10 = $549 | $349 + 40 × $12 = $829 |
The gap against Loops is $50 a month at 10,000 ($600 a year), $101 at 25,000 and $300 at 50,000 ($3,600 a year) for Basic. Professional adds the A/B split tests and conversion goals discussed below, and costs $250 a month more than Loops at 10,000.
Two different units on one invoice
Loops counts subscribed contacts: an address marked as subscribed counts, and unsubscribed contacts do not count toward the price. Userlist counts tracked users, and that count also sets how many messages you may send. Every plan includes 5 times the tracked users in monthly messages with a floor of 500,000, so a 10,000-user account has room for 50 messages per user a month before Userlist adds $1 for each extra 1,000 messages. The floor only stops mattering past 100,000 users. Loops paid plans, by contrast, do not charge by send at all, and the Loops page says transactional sending costs nothing extra.
If you migrate, expect the counts to differ. A B2B product with 10,000 seats spread over 2,000 companies is 10,000 on Userlist, while Loops would count whichever of those addresses you keep subscribed.
Free plan, trial and the early-stage discount
Loops' Early Stage plan lets you upload unlimited contacts but delivers only to the 1,000 newest of them, up to 4,000 sends in any rolling 30 days with marketing and transactional counted together, at 10 emails a second, and with a "Powered by Loops" footer. Userlist has no free plan on its page. It offers a 14-day trial on every plan and asks for card details at sign-up. It also says SaaS companies that have raised less than $500k in total funding can ask for 50% off the first 12 months on a new account. On Basic that is $74.50 a month for a year, $894 against $1,788 at list price.
What the plans include
| Limit or feature | Loops (paid) | Userlist Basic | Userlist Professional |
|---|---|---|---|
| Custom properties | No cap listed on the pricing page | 20 | 50 |
| Custom events | No cap listed; event names are case-sensitive | 20 | Unlimited |
| Team seats | No per-seat charge | 5 | 10 |
| A/B split tests and conversion goals | Experiments and goals appear in its docs | No | Yes |
| Transactional email | Included, no separate charge | Included, sent by calling the API | Included |
The Userlist caps matter for a SaaS with a rich event stream. Twenty custom events is enough for signup, activation and a few feature milestones, but a product tracking every settings change will reach it. Loops' docs describe event names as case-sensitive, so PaymentReceived and paymentReceived are different events; Userlist normalizes event names to snake_case.
Trial start, failed payment, upgrade and cancel
Loops has a Stripe integration that creates and updates contacts and sends Stripe events into workflows. The accepted list includes customer.subscription.created, .paused, .resumed, .trial_will_end and .deleted, plus invoice.paid, invoice.payment_failed, invoice.upcoming and checkout.session.completed. Contacts are matched by the Stripe customer's email, and events without an email are ignored. Its integration index also lists Polar. For Paddle, Lemon Squeezy or Chargebee there is no listed connector, so your own webhook handler would call the Loops events API (Stripe integration docs).
Userlist works from data you push. Its Push API takes users, companies, relationships and events (POST /events with a name and either a user or a company) and sends transactional messages from POST /messages, with a stated limit of 1,000 requests a minute and 100KB per request (Push API docs). Company-level triggers such as "Company performs an event" and "Company joins a segment" let one account's billing state start a workflow for chosen users. It ships a three-email Failed Payment Recovery template, but the template names no event: you choose the trigger yourself, typically a property such as billing state changing.
In both tools the billing system still retries the card. Loops or Userlist only write the email that gets the customer to update it.
Switching in either direction
- Export contacts with subscription status and import unsubscribed addresses as unsubscribed, not active.
- Count your custom properties and events first. Userlist Basic stops at 20 of each, and Loops needs its contact properties created before import.
- Authenticate a sending domain in the new tool (Loops documents the steps under "Setting up your domain") and leave the old domain's records in place.
- Rebuild one trigger, failed payment, and run it in the new tool for a week while the old one stays on. Sending the same event to both shows duplicates early.
- Move trial and cancellation sequences last, after the failed-payment flow has run clean.
Which to choose
- Loops fits a small product where one audience of individuals is the unit, Stripe is the billing system and the budget is tight. It is the cheaper of the two at every size in the table.
- Userlist Basic fits B2B SaaS where several people share one account and the message should depend on the account. The company object is the reason to pay $50 or more a month above Loops.
- Userlist Professional is for teams that need A/B split tests, conversion goals and more than 20 events, and can justify $349 a month at 10,000 users.
Related reading: Drip vs Userlist, Encharge vs Userlist, Vero vs Userlist, Loops vs Vero, email tools for B2B SaaS and the full comparison index.
Loops vs Userlist: common questions
Is Userlist more expensive than Loops?
On the published rates, yes. At about 10,000 contacts Loops reads $99 a month and Userlist Basic $149, a gap of $50 a month or $600 a year. By 50,000 users the page's own formula puts Userlist Basic at $549 against $249 for Loops. The cheaper bill is not the whole story: Userlist includes company accounts and company-level triggers, which Loops does not describe.
Can Loops react to a failed Stripe payment without custom code?
Yes, for Stripe. Loops' Stripe integration accepts invoice.payment_failed, customer.subscription.trial_will_end, customer.subscription.deleted and several other Stripe events, and a workflow can start from any of them. Events that do not carry an email address are ignored, and each event has to be switched on in the Loops Stripe settings as well as in the workflow.
Does Userlist connect to Stripe or Paddle?
Its documentation index lists no billing-provider integration. Plan and billing data reach Userlist because your own code, a Segment pipeline, a Zapier or Make scenario, or its webhooks integration pushes events and properties to its Push API. Its docs use billing_state, plan and next_billing_at as example company properties.
Which has a free plan?
Loops does: unlimited contacts, but sends go only to the 1,000 newest of them, capped at 4,000 sends in any rolling 30 days, with a small "Powered by Loops" footer. Userlist lists a 14-day trial for every plan and asks for card details up front.