coss.com vs Loops
Loops runs marketing, product and transactional email from one contact record, with workflows. coss.com adds receiving, sub-accounts and SMS.
Loops is email for SaaS teams: campaigns, event-triggered workflows and transactional messages built in its editor, priced by subscribed contacts with unlimited sends. coss.com has no workflows. It charges per recipient, sends HTML straight from your code, receives email, and puts SMS, Verify and Risk on the same API key.
At a glance
Loops's side was checked on against its own pages. Prices are list prices.
| Feature | coss.com | Loops |
|---|---|---|
| Pricing model | Per recipient, with no volume tiers to pick: $0.40 per 1,000 recipients for the first 1,000,000; $0.30 per 1,000 recipients from 1,000,001 to 10,000,000; $0.22 per 1,000 recipients beyond 10,000,000. Paid plans start at $25/month, all of it spendable on usage | By subscribed contacts, with unlimited sends and no seat fees: Growth from $49/month for up to 5,000 contacts, Enterprise custom from 1.5 million |
| Free tier | Free plan: 3,000 email recipients a month, 3,000 received emails a month and 3 inboxes; 1 sending domain; 1,000 contacts per environment | 4,000 sends per rolling 30 days to your first 1,000 contacts, marketing and transactional together, with a Powered by Loops footer |
| Transactional email | REST API and an SMTP relay (smtp.coss.com), batch and scheduled sends, idempotency keys, templates with versions and locales | API or SMTP, always through a template published in Loops (SMTP carries JSON naming it, not HTML); opens and clicks aren't tracked |
| Attachments | Up to 20 per email, 25 MB combined | Not generally available: Loops enables them on request; requests under 4 MB |
| Marketing email | Contacts with custom properties, audiences, segments, topics with a hosted preference center and double opt-in, broadcasts on a separate marketing stream | Campaigns, segments, mailing lists with a preference center, signup forms, and double opt-in for form signups |
| Automation | — | Workflows started by a new contact, a property change, a list join or your own events, with timers, branches, filters and experiments |
| Receiving emailLoops' own guide sends inbound processing to other providers | Every environment has its own address under coss.com's inbound domain, or receive at your own domain with one MX record; an email.received webhook, content and attachments through the API | — |
| Other channels | SMS, Verify (one-time codes), Hooks (webhooks as a service) and Risk on the same API key and SDK | Email only, by its own description |
| Multi-tenant sendingNot found in Loops' docs | Sub-accounts on Scale and Enterprise: each with its own domains, SES tenant, reputation, quotas and suppression list (transactional email) | — |
| SDKs | TypeScript, plus generated SDKs for Python, Go, Ruby, PHP, Java and .NET; Laravel, Rails and Django mail drivers; a CLI and an MCP server | Go, JavaScript, Nuxt, PHP and Ruby; a CLI, agent skills and an MCP server; SMTP guides for Django, Laravel and Rails |
| Webhooks | Standard Webhooks signatures, automatic retries, test events and `coss listen` to forward events to localhost | Webhook-Id, Webhook-Timestamp and Webhook-Signature headers (HMAC-SHA256); 8 attempts over about 28 hours; an endpoint is disabled after 5 days of failures |
| Testing | Sandbox environments with coss_test_ keys: the same API, nothing leaves coss.com | Sends to @example.com and @test.com addresses succeed with no email delivered |
Which to choose
Both are good at what they do. Here is where each one fits better.
Choose Loops when
You want event-triggered sequences
Loops workflows start from your events or contact changes and run emails, timers, branches and experiments. coss.com's marketing email is broadcasts you write and schedule.
You send a lot to few contacts
Loops charges by subscribed contacts with unlimited sends and no seat fees. coss.com bills every recipient, so frequent email to a small list costs more as you send more.
Non-engineers write the emails
Loops' editor lets your team build and publish campaigns and transactional messages, with forms and no deploy. coss.com's templates are HTML and text, with variables.
You connect tools without code
Loops has integrations with Stripe, Supabase, Zapier, Clerk, PostHog and others.
Choose coss.com when
Your code sends the email
Pass HTML, text or a React Email component straight to coss.email.send(), with attachments, and no template to publish first. Templates are there when you want them.
You receive email too
Every environment can receive email, and inboxes give AI agents their own addresses, with threads and replies from the same address.
Email is one channel of several
SMS, one-time codes (Verify), Hooks and Risk use the same API key, SDK, webhooks and logs as email.
You send for your own customers
Sub-accounts on Scale and Enterprise each get their own domains, SES tenant, reputation, quotas and suppressions.
Tracking on transactional email
Turn on open and click tracking for an environment or one category of email, on your own domain if you like. Loops doesn't track them on its transactional messages.
Moving from Loops
- 1
Add and verify your domain
There is no importer for Loops: the dashboard's importer covers Resend, SendGrid and Postmark. Add your domain in coss.com and publish its DNS records, keeping Loops' until you switch.
Read the guide - 2
Bring over contacts and lists
Export your audience from Loops as CSV and import it on the Contacts page (up to 10,000 rows, with a status column) or with coss.email.contacts.import. Contact properties become custom properties, mailing lists become topics or audiences, and filters become segments. An import never re-subscribes someone who unsubscribed.
Read the guide - 3
Recreate templates
A Loops transactional email becomes a coss.com template, or HTML from your code. Its transactionalId and dataVariables map to template_id and variables, and each variable is declared on the template.
Read the guide - 4
Replace workflows and webhooks
coss.com has no workflows: campaigns become broadcasts, and workflow emails move into your own code, on the events you already send to Loops. Update your webhook handler to coss.com's events; Standard Webhooks verification should look familiar.
Read the guide
Questions
- Is there an importer for Loops?
- No. The dashboard's importer covers Resend, SendGrid and Postmark. From Loops, add your domain, import your contacts as CSV or through the API, recreate your templates and switch your sending code.
- Does coss.com have workflows like Loops?
- No. coss.com has no automation workflows. Marketing email is broadcasts to audiences and segments, and any sequence runs from your own code, using scheduled sends up to 30 days ahead if you want.
- How does pricing differ from Loops?
- Loops charges by subscribed contacts with unlimited sends. coss.com charges per recipient, with a contact limit set by the plan, and a paid plan's fee is credit spent on usage. Which is cheaper depends on how often you email your list.
- Can I send transactional email without a template?
- Yes. coss.email.send() takes HTML, text or a React Email component directly, and SMTP takes an ordinary message. Templates are optional.
- Can coss.com receive email?
- Yes. Each environment has an address under coss.com's inbound domain with no DNS setup, or you can receive at your own domain with an MX record. Each message triggers an email.received webhook and stays readable through the API.
Sources
Loops's facts were checked on ; their pages are the final word on their prices and features.
The coss.com side
- Marketing emailcoss.com Marketing email sends newsletters and announcements to your contacts as broadcasts, with audiences, segments, topics and a hosted preference center.
- Emailcoss.com Email is a transactional email API. Send single, batch and scheduled email from your domains, with templates, tracking and per-recipient webhooks.
Try coss.com next to Loops.
A development key costs nothing and delivers nothing, so you can compare with real code.
Add coss.com to this project: read https://coss.com/llms.txt, get a development key with `npx coss-cli init --agents`, and build and test with it.