Tailkits product guide

Loops

SaaS email priced by contacts, with unlimited transactional sends from $49

FreemiumEmail
Visit Loops
Website
loops.so
Pricing
Freemium
Categories
Email
Listed
Sep 2026
Updated
Oct 2026

Details about Loops

Short verdict: Loops puts marketing campaigns, lifecycle workflows and transactional email on one contact list, and it prices by subscribed marketing contacts instead of by emails sent. When password resets and receipts go to people who are not on your marketing list, the $49 Growth plan covers 10,000 or 1,000,000 of them a month; once recipients are marketing contacts, the bill follows the list, up to $3,999 a month at 1,000,000 contacts. The trade-offs are templates that must live in the Loops editor, an API limited to 10 requests a second with one recipient per call, US-only data and no inbound email. It suits SaaS teams that want developers and marketers in one tool, not teams that keep templates in code or need EU hosting.

How we reviewed it: We did not create an account or send email through Loops. On 21 October 2026 we read the pricing page and stepped its contact slider through every tier, read the billing, transactional, API, webhook and deliverability docs, the Terms, Privacy Policy, DPA and subprocessor list, and followed the quickstart on paper. We inspected the loops npm package and read 90 days of the public status page. We could not test deliverability, sending speed or the dashboard. Other services' figures come from our same-day comparison of seven email APIs.

What Loops costs and includes

Free plan$0 with no time limit: up to 1,000 subscribed contacts and 4,000 sends per rolling 30 days, marketing and transactional combined, with a "Powered by Loops" footer
Paid planGrowth from $49 a month for 5,000 subscribed contacts, with unlimited marketing and transactional sends; $4,799 at 1,500,000 contacts, custom pricing above that. Loops pricing
Transactional only: 10,000 / 100,000 / 1,000,000 emails a month$49 / $49 / $49 (Growth, with 5,000 or fewer subscribed contacts)
Every recipient also a marketing contact$99 / $399 / $3,999 (10,000 / 100,000 / 1,000,000 contacts)
Before the first emailA verified sending domain. No credit card for the free plan; some industries need written approval.
Data locationUnited States only; SOC 2 Type II report, DPA and EU-U.S. Data Privacy Framework certification
SendingREST API and SMTP (smtp.loops.so, port 587), both through templates built in Loops; webhooks; no inbound email
SDKsOfficial JavaScript/TypeScript, Go, PHP and Ruby SDKs and a Nuxt module; community SDKs for Python, Java, .NET, Elixir and Laravel; an official CLI
AI toolingHosted MCP server at mcp.loops.so and agent skills

What we found in the pricing, docs and SDK

Contacts set the price, not emails

Loops bills on subscribed contacts, the people you send marketing email to. The billing docs say transactional recipients do not count as contacts unless they also receive marketing email, and a transactional send to a new address only adds it to your audience if the request sets addToAudience. Unsubscribed contacts don't count, and paid plans have no send limit. The free plan stops short of 10,000 emails, because transactional sends count toward its 4,000 per rolling 30 days.

The same volume can cost very different amounts (pricing slider, 21 October 2026):

How your recipients are set upContacts we assumed10,000 emails100,000 emails1,000,000 emails
Transactional only (resets, receipts, login codes)5,000 or fewer subscribed$49$49$49
Every email goes to a different marketing contact10,000 / 100,000 / 1,000,000$99$399$3,999
Mixed SaaS use: four emails per contact a month2,500 / 25,000 / 250,000$49$199$1,199
Loops Growth plan on the pricing page at 5,000 contacts for $49 a month and at 100,000 contacts for $399 a month, both with unlimited marketing and transactional sends
The Growth plan at two points on the contact slider: the price moves with contacts, and transactional sends stay unlimited.
Loops transactional email docs stating that a new contact sent a transactional email is not added to the audience and does not count toward billing unless addToAudience is set
The docs rule behind the $49 figure: transactional recipients stay out of the billed audience.

For transactional-only senders, that is the lowest bill in our comparison at 1,000,000 emails a month (Amazon SES: $163.84) and the highest at 10,000 (Postmark and Mailgun: $15). Two caveats: the Enterprise column lists "custom transactional volume" without saying when Growth stops being enough, and the API limit below caps sending speed. The tier is recalculated from your contact count at each monthly renewal; there are no seat fees and no annual discount on the pricing page.

Every email starts as a template in Loops

Loops does not accept HTML in API requests, and its docs have a page explaining why. A send names the transactionalId of an email published in the Loops editor (or uploaded as MJML, or written in LMX) plus its dataVariables; a missing required variable fails the send. SMTP works the same way: the message body is that JSON as a string, so Supabase, Laravel or Nodemailer can point at smtp.loops.so, but each email still needs a Loops template.

Marketers can change a footer or logo without a deploy, and a draft can be edited while the published version keeps sending. The cost: templates written with React Email or Maizzle have to be rebuilt in Loops. Transactional emails carry no unsubscribe link or open and click tracking, and still reach unsubscribed contacts.

One recipient per call, 10 calls a second

The pricing page says paid teams can send up to 1,000 emails a second, but the API reference sets a baseline of 10 requests a second per team, and the transactional endpoint takes one recipient per request. The OpenAPI spec has no batch endpoint. That caps API sending at 10 transactional emails a second (864,000 a day) unless support raises it. A million emails a month averages 0.39 requests a second, which fits, but a burst of sign-in codes will get 429 responses (RateLimitExceededError in the SDK). An Idempotency-Key header blocks duplicates for 24 hours, so retries are safe. Attachments need support to enable them, and requests must stay under 4 MB.

A domain before anything else, but no approval queue

Sign-up asks for a work email, first name and company (or a Google login) and the sending domain, with no card. No email goes out until the SPF, DKIM, MX and DMARC records are verified, and platform subdomains such as vercel.app are refused. Unlike Amazon SES's per-region sandbox or Postmark's manual usage review, Loops documents no approval step or sending ramp, though its privacy policy says every email is scanned and flagged ones are reviewed by hand. The Terms require written approval for finance, lending, crypto, telemedicine and other industries, and rule out HIPAA-covered mail. For tests, sends to @example.com and @test.com return success without delivering anything; there is no separate sandbox key.

Limits in the fine print

  • US-only data. The subprocessor list says all of them process data in the United States, including OpenAI for LLM processing and People Data Labs for enrichment.

  • No inbound email or reply parsing.

  • One webhook endpoint per account, with 16 event types. Opens and clicks are reported for campaigns and workflows only. Payloads still say loop because Workflows were called Loops until 6 May 2026.

  • One sending domain per team. More domains mean separate teams that share no contacts or settings.

  • Suppressions follow hard bounces and complaints; paid plans can lift up to 100 per 30 days by API.

Reliability and developer experience

What we checkedResult
Status page, last 90 days100% for Email Sending, API, App, SMTP Relay and Webhooks; one incident (11 September 2026, metrics delayed about 1.5 hours, no data lost)
Earlier incidents in the past year20 October 2025: transactional email, webhooks and SMTP interrupted for 2 h 17 min; 24 January 2026: elevated errors on all components for 1 h 18 min; 2 March 2026: API errors for 46 min
Uptime commitmentNone published
Node SDKloops 7.3.0, published 3 September 2026: 361 KB unpacked, no dependencies, TypeScript types, ESM and CommonJS, Node 18 or later
Adoption413,875 npm downloads in the week of 28 September to 4 October 2026 (the last week with complete npm data); 7 GitHub stars, 1 open issue. Source on GitHub
API referenceOpenAPI 1.22.6, last changed 20 October 2026
Loops status page showing 100 percent uptime over the past 90 days for Email Sending, API, App, SMTP Relay and Webhooks
The Loops status page on 21 October 2026: 90 days without downtime on every component.

The SDK trails the API: its README says version 7.3.0 matches OpenAPI 1.21.9, and its type definitions have no methods for the metrics endpoints added on 29 September or the workflow groups added on 6 October 2026. In the docs, the quickstart's transactional step never says where to create an API key or how to send it (the API introduction does), and it calls the free allowance "4,000 monthly sends" where the billing page says a rolling 30-day window.

The hosted MCP server at mcp.loops.so uses browser sign-in and, per Loops, can run any API operation, including sending transactional email, so connect agents to a test team first.

What you still have to set up

  • Domain authentication: SPF, DKIM, MX and DMARC on a subdomain such as mail.yourapp.com.

  • Templates: one published transactional email per message type, including any you now keep in code.

  • A webhook endpoint that checks signatures, ignores duplicate webhook-id values and acts on email.hardBounced and email.spamReported.

  • Retries: back off on 429 and reuse the same idempotency key.

  • Contact rules: who becomes a marketing contact decides the bill.

  • Attachments: ask support to enable them if receipts carry PDFs.

Pros and cons

Pros

  • Transactional recipients don't count toward the price: $49 a month covers 10,000 to 1,000,000 transactional emails.

  • Campaigns, workflows and transactional email share one contact list that non-developers can manage.

  • No card, sandbox or approval queue documented before the first send.

  • A small, typed Node SDK with no dependencies.

  • 100% uptime on the status page over 90 days.

Cons

  • Marketing contacts drive the bill: $399 a month at 100,000 and $3,999 at 1,000,000.

  • No HTML in requests; every email is a Loops template.

  • 10 API requests a second, one recipient each, no batch endpoint.

  • US-only data, no inbound email, one webhook endpoint and one sending domain per team.

  • The SDK lags the newest API endpoints.

How Loops compares

  • Postmark costs $15 / $115 / $775 at 10,000 / 100,000 / 1,000,000 emails, with a free 100 emails a month that never expires. It accepts your own HTML, batches up to 500 messages per call and offers inbound on every plan except Basic, but it has no EU hosting either and reviews new accounts by hand. Choose it for low-volume transactional email, where it costs $34 less.

  • Mailgun costs $15 / $75 / $700 and lets you choose US or EU hosting per domain, with inbound routes. It needs SMS verification, and a card on file for your own domain. Choose it if data must stay in the EU.

  • Amazon SES costs $1.64 / $16.38 / $163.84, with EU regions and inbound, but each region starts in a sandbox that needs a manual review, and events and webhooks are yours to build. Choose it for the lowest price below about 300,000 emails a month, or whenever recipients are marketing contacts.

Templates built with React Email or Maizzle work as is with those three; Loops needs them rebuilt. See all email tools.

Who should use Loops

Use Loops if you run a SaaS product and want onboarding sequences, product updates and password resets in one tool your marketing team can edit, especially with a small marketing list and heavy transactional volume. Look elsewhere if your templates live in your codebase, if you need EU data residency, inbound email or HIPAA coverage, or if a large marketing list receives few emails, because Loops charges for every subscribed contact.

FAQ

Does Loops charge for transactional email?

Not on paid plans. Loops prices by subscribed marketing contacts, and transactional recipients don't count unless they also get marketing email or you send with addToAudience set to true, so Growth at $49 a month covers unlimited transactional sends with up to 5,000 contacts. On the free plan, transactional emails count toward its 4,000 sends per rolling 30 days.

How much does Loops cost for 100,000 emails a month?

$49 a month if they are transactional emails to people who are not marketing contacts. If each email goes to a different subscribed marketing contact, you need the 100,000-contact tier at $399 a month; four emails a month to 25,000 contacts costs $199. Prices are from the Loops pricing page on 21 October 2026.

Can I send my own HTML or React Email templates with Loops?

No. Loops does not accept HTML in API or SMTP requests; every send references a template built and published in the Loops editor, uploaded as MJML or written in its LMX markup. Templates made with React Email have to be rebuilt in Loops or sent through a provider that accepts HTML.

Does Loops store data in the EU?

No. Loops' subprocessor list says all of its subprocessors process data in the United States. Loops offers a DPA with Standard Contractual Clauses, is certified under the EU-U.S. Data Privacy Framework and has a SOC 2 Type II report, but there is no EU region.

Can Loops receive email?

No. Loops has no inbound email or reply parsing; replies go to the reply-to or From address you set. Mailgun and Amazon SES process inbound email, and Postmark does on every plan except Basic.