>
loops
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.
#loops#email#marketing#saas#campaigns
terminal-skillsv1.0.0
Works with:claude-codeopenai-codexgemini-clicursor
Usage
$
✓ Installed loops v1.0.0
Getting Started
- Install the skill using the command above
- Open your AI coding agent (Claude Code, Codex, Gemini CLI, or Cursor)
- Reference the skill in your prompt
- The AI will use the skill's capabilities automatically
Example Prompts
- "Generate a professional invoice for the consulting work done in January"
- "Draft an NDA for our upcoming partnership with Acme Corp"
Documentation
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.
Information
- Version
- 1.0.0
- Author
- terminal-skills
- Category
- Business
- License
- Apache-2.0