Loops logo

Loops

Loops is a modern email platform purpose-built for software companies, combining product, marketing, and transactional email behind a single REST API and a single audience. Contacts, contact properties, mailing lists, events, segments, campaigns, email messages, themes, components, uploads, transactional sends, and dedicated sending IPs are all first-class API resources, with an OpenAPI 3.1 spec published at app.loops.so/openapi.yaml. Lifecycle workflows ("loops") use the Events API as their trigger, an HMAC-SHA256-signed webhook stream broadcasts every contact and email event for real-time integrations, and official SDKs ship for JavaScript, Nuxt, PHP, Ruby, and Go alongside an official Go-based CLI. Transactional email is included on every plan, team seats are unlimited, and a generous free tier covers 1,000 contacts and 4,000 sends per month — making Loops a Tier-1 developer-first email service for SaaS teams from waitlist to IPO.

1 APIs 26 Features
EmailMarketing EmailTransactional EmailEmail AutomationEmail CampaignsEmail WorkflowsContactsAudience ManagementEventsWebhooksSaaSDeveloper Tools

Loops publishes 1 API on the APIs.io network. Tagged areas include Email, Marketing Email, Transactional Email, Email Automation, and Email Campaigns.

Loops’ developer surface includes developer portal, documentation, getting-started guide, pricing, engineering blog, changelog, signup flow, and 22 more developer resources.

APIs

Loops API

The Loops API is a single REST API exposing every Loops resource — contacts, contact properties, mailing lists, events, campaigns, email messages, themes, components, transactio...

Features

Unified platform for product, marketing, and transactional email built for software companies
Single REST API (OpenAPI 3.1 published at app.loops.so/openapi.yaml) covering contacts, properties, mailing lists, events, campaigns, email messages, themes, components, transactional, uploads, suppressions, and dedicated sending IPs
Bearer-token API key authentication with a GET /api-key test endpoint
10 requests/second per team baseline rate limit with x-ratelimit-* response headers
Contacts API — create, update, find, delete; manage suppression status
Contact properties API — create custom properties and list the full property catalog
Mailing lists API — list mailing lists and manage list membership via contact updates
Events API — POST /events/send to trigger loops (workflows) and personalize content
Campaigns API — full CRUD plus list, with separate endpoints for the email message body
Email message API — fetch and update the content of an individual email message inside a campaign
Themes and components API — read reusable themes and shared components used across emails
Transactional email API — send transactional emails with template variables, file attachments, and headers; list transactional sends
Uploads API — create and complete file uploads for use in transactional attachments
Dedicated sending IPs API — list dedicated IPs assigned to your account
Webhook system with HMAC-SHA256 signing, 30 days of delivery history, contact + email + send + testing events, schema version 1.0.0
Lifecycle workflows ("loops") with triggers, timers, branching, and conditional logic
Saved segments built from contact properties and engagement data
A/B testing for campaigns
Email design editor optimized for major email clients
Analytics for conversion, opens, clicks, bounces, and unsubscribes
Official SDKs for JavaScript/TypeScript, Nuxt, PHP, Ruby, and Go; community SDKs for Laravel and Rails
Official `loops` CLI (Go) with Homebrew tap distribution
Official Claude Code Skills repository for the Loops API and CLI
25+ integrations across Stripe, Supabase, Clerk, Auth0, Auth.js, Better Auth, PostHog, Segment, RudderStack, Fivetran, HubSpot, Salesforce, Attio, Clay, Zapier, Make, Integrately, Bubble, Framer, Webflow, Emailify, and Email Love
Transactional email included at no extra charge on every plan
Unlimited team seats — never billed per seat or per send

Integrations

Stripe

Sync Stripe customers to your Loops audience and trigger automated emails on billing events.

Supabase

Send Supabase authentication emails (magic links, password reset, confirmations) through Loops.

Clerk

Send Clerk authentication emails through Loops.

Auth0

Route Auth0 authentication emails through Loops.

Auth.js

Send Auth.js authentication emails through Loops.

Better Auth

Route Better Auth transactional emails through Loops.

PostHog

Sync PostHog events and identified users into Loops contacts and workflows.

Segment

Sync Segment events and identified users into Loops.

RudderStack

Sync RudderStack events into Loops as event triggers.

Fivetran

Sync data into Loops via Fivetran connectors.

HubSpot

Sync HubSpot contacts to Loops.

Salesforce

Sync Salesforce contacts to Loops.

Attio

Sync Attio CRM contacts to Loops.

Clay

Push contacts from Clay into Loops.

Zapier

Connect Loops to 6,000+ apps via Zapier for contact sync, event triggers, and email sends.

Make

No-code automation flows that read from and write to Loops.

Integrately

No-code integration platform for connecting Loops to other tools.

Bubble

Send transactional email and sync contacts from Bubble no-code apps.

Framer

Capture form submissions in Framer sites and add them to Loops.

Webflow

Capture Webflow form submissions and add them to Loops contacts.

Emailify

Import custom MJML email templates from Emailify into Loops.

Email Love

Import MJML email templates from Email Love into Loops.

Incoming Webhooks

Receive arbitrary HTTP payloads and turn them into Loops events.

Resources

🌐
Portal
Portal
🔗
Documentation
Documentation
🔗
Documentation
Documentation
🔗
OpenAPI
OpenAPI
🔗
OpenAPI
OpenAPI
🚀
GettingStarted
GettingStarted
🔗
Webhooks
Webhooks
💰
Pricing
Pricing
📰
Blog
Blog
📄
ChangeLog
ChangeLog
📜
TermsOfService
TermsOfService
📜
PrivacyPolicy
PrivacyPolicy
🔗
Security
Security
📝
SignUp
SignUp
📝
SignIn
SignIn
🔗
Twitter
Twitter
🔗
LinkedIn
LinkedIn
👥
GitHubOrganization
GitHubOrganization
📦
SDK
SDK
📦
SDK
SDK
📦
SDK
SDK
📦
SDK
SDK
📦
SDK
SDK
🔧
Tool
Tool
🔧
Tool
Tool
🔧
Tool
Tool
💻
CodeExamples
CodeExamples
🔗
Package
Package
🔗
Plans
Plans

Sources

Raw ↑
aid: loops-so
url: https://raw.githubusercontent.com/api-evangelist/loops-so/refs/heads/main/apis.yml
apis:
- aid: loops-so:loops-api
  name: Loops API
  tags:
  - Email
  - Marketing
  - Transactional
  - Contacts
  - Campaigns
  - Events
  - SaaS
  humanURL: https://loops.so/docs/api-reference/intro
  properties:
  - url: https://loops.so/docs/api-reference/intro
    type: Documentation
  - url: https://app.loops.so/openapi.yaml
    type: OpenAPI
  - url: https://app.loops.so/openapi.json
    type: OpenAPI
  - url: openapi/loops-openapi.yml
    type: OpenAPI
  description: The Loops API is a single REST API exposing every Loops resource —
    contacts, contact properties, mailing lists, events, campaigns, email messages,
    themes, components, transactional sends, uploads, suppressions, and dedicated
    sending IPs. Base URL is https://app.loops.so/api/v1. Bearer-token authentication
    with API keys generated in Settings → API. Defaults to 10 requests/second per
    team with x-ratelimit-limit and x-ratelimit-remaining response headers; returns
    HTTP 429 when exceeded. OpenAPI 3.1 spec published at app.loops.so/openapi.yaml.
name: Loops
tags:
- Email
- Marketing Email
- Transactional Email
- Email Automation
- Email Campaigns
- Email Workflows
- Contacts
- Audience Management
- Events
- Webhooks
- SaaS
- Developer Tools
kind: contract
image: https://kinlane-productions2.s3.amazonaws.com/apis-json/apis-json-logo.jpg
access: 3rd-Party
common:
- url: https://loops.so
  type: Portal
- url: https://loops.so/docs
  name: Loops Docs
  type: Documentation
- url: https://loops.so/docs/api-reference/intro
  name: API Reference
  type: Documentation
- url: https://app.loops.so/openapi.yaml
  name: OpenAPI YAML
  type: OpenAPI
- url: https://app.loops.so/openapi.json
  name: OpenAPI JSON
  type: OpenAPI
- url: https://loops.so/docs/quickstart
  name: Quickstart
  type: GettingStarted
- url: https://loops.so/docs/webhooks
  name: Webhooks
  type: Webhooks
- url: https://loops.so/docs/integrations
  name: Integrations
  type: Integrations
- url: https://loops.so/pricing
  name: Pricing
  type: Pricing
- url: https://loops.so/blog
  type: Blog
- url: https://loops.so/changelog
  type: ChangeLog
- url: https://loops.so/legal/terms
  type: TermsOfService
- url: https://loops.so/legal/privacy
  type: PrivacyPolicy
- url: https://loops.so/legal/security
  type: Security
- url: https://app.loops.so/register
  name: Sign Up
  type: SignUp
- url: https://app.loops.so/login
  name: Sign In
  type: SignIn
- url: https://twitter.com/loops_so
  type: Twitter
- url: https://www.linkedin.com/company/loops-so
  type: LinkedIn
- url: https://github.com/loops-so
  name: Loops GitHub
  type: GitHubOrganization
- url: https://github.com/loops-so/loops-js
  name: Loops JavaScript SDK
  type: SDK
- url: https://github.com/loops-so/loops-nuxt
  name: Loops Nuxt SDK
  type: SDK
- url: https://github.com/loops-so/loops-php
  name: Loops PHP SDK
  type: SDK
- url: https://github.com/loops-so/loops-rb
  name: Loops Ruby SDK
  type: SDK
- url: https://github.com/loops-so/loops-go
  name: Loops Go SDK
  type: SDK
- url: https://github.com/loops-so/cli
  name: Loops CLI
  type: Tool
- url: https://github.com/loops-so/homebrew-tap
  name: Loops Homebrew Tap
  type: Tool
- url: https://github.com/loops-so/skills
  name: Loops Skills for Claude Code
  type: Tool
- url: https://github.com/loops-so/loops-nextjs
  name: Loops Next.js Example
  type: CodeExamples
- url: https://www.npmjs.com/package/loops
  name: loops on npm
  type: Package
- url: https://loops.so/pricing
  data:
  - id: free
    name: Free
    entries:
    - geo: US
      unit: 1
      label: User
      limit: 1
      price: Free
      metric: user
      timeFrame: month
      description: Free tier — no credit card required. Loops branding shown at the
        bottom of emails.
    elements:
    - name: Up to 1,000 subscribed contacts
    - name: Up to 4,000 sends per month (enough for weekly emails)
    - name: All features included
    - name: Transactional email at no extra charge
    - name: Unlimited team seats
    - name: Loops branding at the bottom of every email
    description: Free to start. No credit card required.
  - id: paid
    name: Paid
    entries:
    - geo: US
      unit: 1
      label: User
      limit: 1
      price: Call
      metric: user
      timeFrame: month
      description: Paid plans remove send limits and Loops branding. Pricing scales
        by audience size and contact tier.
    elements:
    - name: Remove send limits
    - name: Remove Loops branding from emails
    - name: All features included
    - name: Transactional email at no extra charge
    - name: Unlimited team seats — never charged per seat
    - name: Never charged per send
    description: For teams sending beyond the free-tier limits.
  - id: custom
    name: Custom
    entries:
    - geo: US
      unit: 1
      label: User
      limit: 1
      price: Call
      metric: user
      timeFrame: month
      description: Custom plans for high-volume senders and enterprise.
    elements:
    - name: Custom contact and send volumes
    - name: Dedicated sending IPs
    - name: Custom plan terms
    description: Contact Loops for custom plans.
  name: Plans
  type: Plans
- type: Authentication
  data:
  - name: Bearer Token
    description: API keys are generated in the Loops dashboard under Settings → API
      and passed via the Authorization header as Bearer tokens. Test keys with GET
      /api-key.
- type: RateLimits
  data:
  - name: Default API rate limit
    description: 10 requests per second per team. Responses include x-ratelimit-limit
      and x-ratelimit-remaining headers; HTTP 429 returned when exceeded.
  - name: Webhook delivery rate limit
    description: Webhooks deliver at a maximum of 10 events per second; excess events
      are queued for subsequent delivery.
- type: Webhooks
  data:
  - name: Webhook event categories
    description: Contact events (contact.created, contact.unsubscribed, contact.deleted,
      contact.mailingList.subscribed/unsubscribed); email send events (campaign.email.sent,
      loop.email.sent, transactional.email.sent); email engagement (email.delivered,
      email.opened, email.clicked, email.softBounced, email.hardBounced, email.unsubscribed,
      email.resubscribed, email.spamReported); and testing.testEvent.
  - name: Webhook signing
    description: Each webhook carries Webhook-Id, Webhook-Timestamp, and Webhook-Signature
      (HMAC-SHA256) headers. Verify by recomputing the signature from event ID, timestamp,
      and raw body using the signing secret saved during webhook setup.
  - name: Webhook schema version
    description: Webhooks include webhookSchemaVersion 1.0.0, eventName, and eventTime
      (unix seconds). 30 days of delivery history is retained.
- type: Integrations
  data:
  - name: Stripe
    description: Sync Stripe customers to your Loops audience and trigger automated
      emails on billing events.
  - name: Supabase
    description: Send Supabase authentication emails (magic links, password reset,
      confirmations) through Loops.
  - name: Clerk
    description: Send Clerk authentication emails through Loops.
  - name: Auth0
    description: Route Auth0 authentication emails through Loops.
  - name: Auth.js
    description: Send Auth.js authentication emails through Loops.
  - name: Better Auth
    description: Route Better Auth transactional emails through Loops.
  - name: PostHog
    description: Sync PostHog events and identified users into Loops contacts and
      workflows.
  - name: Segment
    description: Sync Segment events and identified users into Loops.
  - name: RudderStack
    description: Sync RudderStack events into Loops as event triggers.
  - name: Fivetran
    description: Sync data into Loops via Fivetran connectors.
  - name: HubSpot
    description: Sync HubSpot contacts to Loops.
  - name: Salesforce
    description: Sync Salesforce contacts to Loops.
  - name: Attio
    description: Sync Attio CRM contacts to Loops.
  - name: Clay
    description: Push contacts from Clay into Loops.
  - name: Zapier
    description: Connect Loops to 6,000+ apps via Zapier for contact sync, event triggers,
      and email sends.
  - name: Make
    description: No-code automation flows that read from and write to Loops.
  - name: Integrately
    description: No-code integration platform for connecting Loops to other tools.
  - name: Bubble
    description: Send transactional email and sync contacts from Bubble no-code apps.
  - name: Framer
    description: Capture form submissions in Framer sites and add them to Loops.
  - name: Webflow
    description: Capture Webflow form submissions and add them to Loops contacts.
  - name: Emailify
    description: Import custom MJML email templates from Emailify into Loops.
  - name: Email Love
    description: Import MJML email templates from Email Love into Loops.
  - name: Incoming Webhooks
    description: Receive arbitrary HTTP payloads and turn them into Loops events.
- type: Features
  data:
  - Unified platform for product, marketing, and transactional email built for software
    companies
  - Single REST API (OpenAPI 3.1 published at app.loops.so/openapi.yaml) covering
    contacts, properties, mailing lists, events, campaigns, email messages, themes,
    components, transactional, uploads, suppressions, and dedicated sending IPs
  - Bearer-token API key authentication with a GET /api-key test endpoint
  - 10 requests/second per team baseline rate limit with x-ratelimit-* response headers
  - Contacts API — create, update, find, delete; manage suppression status
  - Contact properties API — create custom properties and list the full property catalog
  - Mailing lists API — list mailing lists and manage list membership via contact
    updates
  - Events API — POST /events/send to trigger loops (workflows) and personalize
    content
  - Campaigns API — full CRUD plus list, with separate endpoints for the email message
    body
  - Email message API — fetch and update the content of an individual email message
    inside a campaign
  - Themes and components API — read reusable themes and shared components used across
    emails
  - Transactional email API — send transactional emails with template variables, file
    attachments, and headers; list transactional sends
  - Uploads API — create and complete file uploads for use in transactional attachments
  - Dedicated sending IPs API — list dedicated IPs assigned to your account
  - Webhook system with HMAC-SHA256 signing, 30 days of delivery history, contact
    + email + send + testing events, schema version 1.0.0
  - Lifecycle workflows ("loops") with triggers, timers, branching, and conditional
    logic
  - Saved segments built from contact properties and engagement data
  - A/B testing for campaigns
  - Email design editor optimized for major email clients
  - Analytics for conversion, opens, clicks, bounces, and unsubscribes
  - Official SDKs for JavaScript/TypeScript, Nuxt, PHP, Ruby, and Go; community SDKs
    for Laravel and Rails
  - Official `loops` CLI (Go) with Homebrew tap distribution
  - Official Claude Code Skills repository for the Loops API and CLI
  - 25+ integrations across Stripe, Supabase, Clerk, Auth0, Auth.js, Better Auth,
    PostHog, Segment, RudderStack, Fivetran, HubSpot, Salesforce, Attio, Clay, Zapier,
    Make, Integrately, Bubble, Framer, Webflow, Emailify, and Email Love
  - Transactional email included at no extra charge on every plan
  - Unlimited team seats — never billed per seat or per send
  sources:
  - https://loops.so
  - https://loops.so/docs/api-reference/intro
  - https://app.loops.so/openapi.yaml
  - https://loops.so/docs/webhooks
  - https://loops.so/docs/integrations
  - https://loops.so/pricing
  - https://github.com/loops-so
  updated: '2026-05-25'
created: '2026-05-25T00:00:00.000Z'
modified: '2026-05-25'
position: Consuming
description: Loops is a modern email platform purpose-built for software companies,
  combining product, marketing, and transactional email behind a single REST API
  and a single audience. Contacts, contact properties, mailing lists, events, segments,
  campaigns, email messages, themes, components, uploads, transactional sends, and
  dedicated sending IPs are all first-class API resources, with an OpenAPI 3.1 spec
  published at app.loops.so/openapi.yaml. Lifecycle workflows ("loops") use the
  Events API as their trigger, an HMAC-SHA256-signed webhook stream broadcasts every
  contact and email event for real-time integrations, and official SDKs ship for
  JavaScript, Nuxt, PHP, Ruby, and Go alongside an official Go-based CLI. Transactional
  email is included on every plan, team seats are unlimited, and a generous free
  tier covers 1,000 contacts and 4,000 sends per month — making Loops a Tier-1
  developer-first email service for SaaS teams from waitlist to IPO.
maintainers:
- FN: Kin Lane
  email: [email protected]
  X: apievangelist
  url: https://apievangelist.com
specificationVersion: '0.16'