Getting Started with Correios
Correios is a marketing email platform built for developers and growth teams. You connect your app to Correios via API, fire events when things happen (user registers, trial expires, user goes inactive), and Correios handles the email logic — sending, sequencing, branching, and tracking.
How It Connects to Your App
Your app and Correios communicate in two directions:
Your app → Correios
- Sync contacts (with custom field values) via
POST /contacts - Fire events via
POST /eventsto trigger flows
Correios → Your app (optional)
- Webhooks when emails are opened, clicked, bounced, or contacts unsubscribe
You don't have to manage email scheduling, retries, or unsubscribe logic. That's all handled by Correios.
Three Campaign Types
Broadcasts
A one-time email sent to a segment of contacts. Use for:
- Announcements, changelogs, newsletters
- Promotions or limited-time offers
- One-off communications to all users (or a filtered subset)
Broadcasts are scheduled and sent once. They don't react to contact behaviour.
Sequences
A linear drip sequence — a series of emails sent on a fixed schedule after a contact is enrolled. Use for:
- Onboarding education (email per day for a week)
- Product training courses
- Nurture campaigns with no branching needed
Sequences are simpler than flows — no conditions, no branching. Every contact gets the same emails in the same order.
Flows
Visual, event-triggered automations with branching logic. Use for:
- Reacting to lifecycle events (trial expiring, user went inactive)
- Conditional logic (send different emails to users who uploaded vs. didn't upload)
- Chaining actions: send email → wait → check condition → branch
Flows are triggered by events fired from your app. They're the most powerful campaign type.
Rule of thumb: If you need branching or timing tied to a contact's behaviour, use a flow. If you're sending the same series to everyone, use a sequence. If it's a one-time send, use a broadcast.
Quick Start
Step 1 — Add a Sending Domain
Go to Settings > Sending Domains and add your domain (e.g. yourdomain.com). Follow the DNS verification steps. You'll need to add DKIM and SPF records — Correios shows you exactly what to add.
See the Provider Setup guide for step-by-step instructions for common DNS providers.
Step 2 — Add a Sending Email
After your domain is verified, go to Settings > Sending Emails and add the email address you want to send from (e.g. [email protected]). This address is used in all campaign sends.
Step 3 — Create Custom Fields
Custom fields let you store per-contact data and use it in email templates as {{custom.fieldName}}.
Go to Settings > Custom Fields and create the fields your app will sync. For example:
plan(text) — the user's subscription plantrialEndsAt(date) — when the trial expireshasUploadedVideo(boolean) — whether the user has uploaded anything
Step 4 — Sync Your First Contact
Call POST /api/v1/contacts with the contact's email and any custom field values:
The contact appears in your Contacts list immediately.
Step 5 — Fire Your First Event
Fire a lifecycle event to test that your connection is working:
If you have a flow with a user.registered trigger active, Jane will be enrolled automatically.
What's Next
- Flows Guide — build event-triggered automations
- Variables & Personalization — use contact data in your emails
- API Integration Guide — full integration patterns for developers
- API Reference — complete API documentation
