Skip to content
Back to skills

Loops

ASecurity

Send marketing and transactional emails with Loops. Use when a user asks to set up email marketing for a SaaS, create drip campaigns, send product update emails, or use a modern alternative to Mailchimp for startups.

  • 142 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added May 29, 2026
content-marketingtypescriptgoapi

Works with

  • terminal
  • api

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned May 29, 2026

npx -y skills add TerminalSkills/skills --skill loops --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Loops?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Loops
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/terminalskills-loops/badge)](https://www.skillsdirectory.com/skills/terminalskills-loops)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: loops
description: >-
  Send marketing and transactional emails with Loops. Use when a user asks to
  set up email marketing for a SaaS, create drip campaigns, send product update
  emails, or use a modern alternative to Mailchimp for startups.
license: Apache-2.0
compatibility: 'Any platform via REST API'
metadata:
  author: terminal-skills
  version: 1.0.0
  category: business
  tags:
    - loops
    - email
    - marketing
    - saas
    - campaigns
---

# Loops

## Overview

Loops is email marketing built for SaaS. Clean UI, event-based automations, transactional emails, and marketing campaigns. Designed as a modern Mailchimp alternative for startups and product teams.

## Instructions

### Step 1: Transactional Email

```typescript
// lib/loops.ts — Send transactional email via Loops API
export async function sendTransactional(
  email: string,
  transactionalId: string,
  data: Record<string, string>
) {
  await fetch('https://app.loops.so/api/v1/transactional', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      Authorization: `Bearer ${process.env.LOOPS_API_KEY}`,
    },
    body: JSON.stringify({
      email,
      transactionalId,    // template ID from Loops dashboard
      dataVariables: data,
    }),
  })
}

// Usage: send welcome email
await sendTransactional('user@example.com', 'welcome_email', {
  firstName: 'John',
  planName: 'Pro',
})
```

### Step 2: Track Events

```typescript
// Track events to trigger automated sequences
await fetch('https://app.loops.so/api/v1/events/send', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    Authorization: `Bearer ${process.env.LOOPS_API_KEY}`,
  },
  body: JSON.stringify({
    email: 'user@example.com',
    eventName: 'plan_upgraded',
    eventProperties: { plan: 'pro', mrr: 49 },
  }),
})
```

### Step 3: Contact Management

```typescript
// Create or update contact
await fetch('https://app.loops.so/api/v1/contacts/update', {
  method: 'PUT',
  headers: {
    'Content-Type': 'application/json',
    Authorization: `Bearer ${process.env.LOOPS_API_KEY}`,
  },
  body: JSON.stringify({
    email: 'user@example.com',
    firstName: 'John',
    userGroup: 'pro-users',
    plan: 'pro',
  }),
})
```

## Guidelines

- Free tier: 1,000 contacts, 2,000 emails/month.
- Event-based automations: trigger email sequences from app events (signup, upgrade, churn risk).
- Built for SaaS — has concepts like user groups, event properties, and lifecycle stages.
- For transactional-only needs, Resend is simpler. For full marketing, Loops is better.

Files in this skill

  • SKILL.md2.5 KB
  • _scores.json1.4 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.