Documentation Index
Fetch the complete documentation index at: https://loops.so/docs/llms.txt
Use this file to discover all available pages before exploring further.
Misclassifying an email (sending marketing content through the transactional API, or a slow transactional message through a marketing path) hurts both deliverability and user expectations. This guide covers when each path is appropriate, what Loops does to keep them separate, and how to pick when you are not sure.
For an overview of the three sending types in Loops (Campaigns, Workflows, Transactional), see Types of emails.
Quick answer
| Send it as… | When the email is… |
|---|
| Transactional | Triggered by a specific user action, expected by that user, and contains only content relevant to that action |
| Workflow | Triggered by an event or property change, part of an ongoing lifecycle sequence |
| Campaign | A one-off send to a segment of your Audience |
Loops and Campaigns are both marketing email. Transactional is its own category.
What counts as transactional
Transactional email is 1-to-1 and triggered by the user. Clear examples:
- Password resets and magic links
- Email verification and OTP codes
- Receipts, invoices, and payment confirmations
- Shipping updates
- Account creation and deletion confirmations
- Security alerts (“new login from Chrome on macOS”)
- Scheduled report exports the user requested
Less clear examples, with the typical call:
| Email | Typical classification |
|---|
| Welcome email right after signup | Marketing. Send as a Workflow on Contact added. The user signed up, but the email is relationship-building, not action-completing. |
| Weekly scheduled digest of their activity | Marketing, even though it is personalized |
| ”Your trial ends in 3 days” | Marketing, it is promoting renewal |
| ”Your trial ended, data will be deleted in 30 days” | Usually transactional, because it reflects account state and deletion timing the user needs |
| Team invitation email | Usually transactional, the invitee took no action yet but it completes the inviter’s action |
| Re-engagement email | Marketing |
When in doubt: if the user would reasonably be surprised to receive it, or if it contains any promotional content, send it as marketing. For individual cases you are unsure about, email help@loops.so.
Why the distinction matters
Sender reputation
Transactional email has high engagement by default because the recipient is actively waiting for it. That engagement boosts your sender reputation. Marketing email has lower engagement, and sending marketing content through a transactional path mixes the two signals and can hurt deliverability for the messages that matter.
Loops sends transactional and marketing email from your verified sending domain and a small shared pool of Loops IPs by default, so the reputation signals are connected. This is usually helpful because high transactional engagement can support overall deliverability. It also means marketing content sent through a transactional path can weaken the same reputation profile that your operational messages depend on.
Legal and compliance
Marketing email must include an unsubscribe link and honor opt-outs. Transactional email is exempt because it is operationally required. Loops enforces this automatically:
- Campaigns and Workflow emails include an unsubscribe link in the Loops footer, or you add
{unsubscribe_link} when uploading custom emails.
- Transactional emails do not include an unsubscribe link.
Unsubscribe vs suppression
These are two different states in Loops, and the distinction matters when deciding classification:
| State | What it means | Transactional still sends? | Marketing still sends? |
|---|
Unsubscribed (subscribed property is false) | The contact opted out of marketing | Yes | No |
| Suppressed (suppression) | Hard bounce or complaint, Loops blocks all sends | No | No |
So “transactional bypasses unsubscribes” is true. “Transactional bypasses suppression” is not, see contact suppression.
Tracking
By default, Loops does not track opens or clicks on transactional email. This is deliberate, see the note in the transactional guide. Marketing email tracks both.
This means email.opened and email.clicked webhook events do not fire for transactional sends.
How Loops keeps them separate
| Behavior | Campaigns and Workflows | Transactional |
|---|
| Unsubscribe link | Required (auto-added or {unsubscribe_link} tag) | Not added |
| Open and click tracking | On | Off |
| Added to Audience | Yes, on signup or contact creation | Only with "addToAudience": true |
| Triggers “Contact added” workflow | Yes | No |
Honors subscribed: false | Yes, does not send | No, still sends |
| Honors suppression | Yes | Yes |
| Sent via | Editor, workflows, scheduled campaigns | Send transactional email API only |
Full behavior reference: Transactional email overview.
Common mistakes
Sending a “welcome” email as transactional
The user technically took an action (signing up), but a welcome email is usually promotional or onboarding content. Send it as a workflow with a “Contact added” trigger so it respects unsubscribes and contributes to your marketing engagement signal.
For examples of what to include, see Your first onboarding emails.
Sending marketing content through the transactional API
Mixing product announcements or newsletters into transactional sends risks complaints and spam flags. Email service providers (ESPs) watch for this. The fix is to send marketing content as a Campaign or Workflow instead.
Transactional uses the same domain setup as marketing. If DNS is not right, nothing sends. See Setting up your domain.
Using marketing-style “From” names on transactional
Transactional should come from a From name the user recognizes from the app (for example, Loops <noreply@mail.loops.so>). Overly branded or promotional From names on receipts and security alerts confuse users and hurt engagement. See sending settings.
Read more