What is EmailCampaign?
EmailCampaign is a multi-tenant email marketing platform. Each organization gets its own isolated workspace with its own contacts, templates, sending domains, campaigns and analytics.
Everything you do lives inside your organization. Members you invite see your data and nothing from any other tenant. Within that workspace you can:
- Send through your own provider — Gmail or Outlook over SMTP, Amazon SES, SendGrid or Brevo. The platform builds the right sending backend from whichever credentials you store.
- Use your own domain — register a sending domain, publish the DNS records we generate, and send as
[email protected]. - Build reusable templates — write HTML yourself or generate a first draft with the built-in AI assistant, then personalize with contact variables.
- Launch and track campaigns — target contact lists, track opens and clicks, and watch delivery, bounce and complaint rates update in real time.
Who this guide is for
Quick start
The shortest path from a new account to a sent campaign. Each step links to the section with the full detail.
- 1
Create your account and organization
Sign up, confirm your email, and log in. Your organization is created for you during signup. See Account & organization. - 2
Connect an email provider
Add SMTP credentials (Gmail, Outlook, or any SMTP host) or an Amazon SES, SendGrid or Brevo key under Settings → Email Providers. See Email providers. - 3
Optional — verify a custom sending domain
Add your domain, publish the DKIM, SPF and DMARC records we generate, then hit Verify. See Custom domains. - 4
Import your contacts
Upload a CSV or Excel file, or add contacts one at a time, and organize them into lists. See Contacts & lists. - 5
Create a template
Write your HTML or generate a draft with AI, and drop in personalization variables. See Templates & AI. - 6
Build and send your campaign
Walk the campaign wizard, choose your audience and provider, turn on tracking, and send. See Launch a campaign. - 7
Watch the results
Open Delivery Logs for delivery, open, click, bounce and complaint rates. See Logs & analytics.
You can send before you own a domain
Create your account and organization
Signing up creates both your user account and your organization in one step. Whoever signs up becomes the organization owner.
Sign up
- 1
Go to the signup page
Open Get Started and fill in your first and last name, your organization name, a username, your email address and a password. - 2
Verify your email address
We send a verification link to the address you entered. Click it to activate the account. If it does not arrive within a few minutes, check spam and promotions folders. - 3
Log in
Sign in at Log in and you land on your dashboard. Forgot your password later? Use the reset link on the login page.
What the organization name is used for
Your organization name is the tenant boundary for every resource — contacts, templates, campaigns, domains and logs are all scoped to it. It is also available in templates as the {{organization_name}} variable, so it can appear in email footers and signatures.
One email, multiple organizations
Manage your profile and password
Update your name and details under Profile. Change your password under Settings — you will be asked for your current password before setting a new one.
Connect an email provider
A provider is the service that physically delivers your mail. You need at least one before you can send. Add them under Settings → Email Providers → Add Provider.
Give the provider a recognizable name (for example “Corporate Gmail”), pick the type, and enter a From Email — the address recipients see in the From header. Then fill in the type-specific fields below.
SMTP (Gmail, Outlook, or any SMTP host)
| Field | What to enter |
|---|---|
| SMTP Host | The server hostname, e.g. smtp.gmail.com or smtp.office365.com. |
| Port | Usually 587 with TLS, or 465 with SSL. |
| Username | Normally the full mailbox address. |
| Password | An app password, not your everyday account password (see below). |
| Use TLS / Use SSL | Enable TLS for port 587, SSL for port 465. Do not enable both. |
Gmail and Outlook need an app password
Amazon SES
| Field | What to enter |
|---|---|
| Access Key ID | IAM access key with SES send permissions. |
| Secret Access Key | The matching secret for that key. |
| Session Token | Only needed if you use temporary STS credentials. Leave blank otherwise. |
| Region | The SES region your identities live in, e.g. us-east-1. |
| Configuration Set | Optional. Set this to receive open, click, bounce and complaint events back from SES. |
Leaving the SES sandbox
SendGrid and Brevo
Both need only an API Key generated in that provider's dashboard with mail-send permission.
Default provider and health checks
- Set as default provider — the provider pre-selected when you build a campaign. You can still override it per campaign.
- Run health check on save — verifies the credentials actually connect before you rely on them. Keep this on; a provider that fails its health check will fail mid-campaign otherwise.
Your credentials are encrypted at rest
Set up a custom sending domain
Sending from your own domain — rather than a shared or personal mailbox — is the single biggest improvement you can make to deliverability and brand trust. Manage domains under Dashboard → Domains.
Step 1 — Register the domain
Click Add Domain, enter the domain you want to send from (for example yourcompany.com), and choose an ownership mode:
| Ownership mode | What it means | When to choose it |
|---|---|---|
| Platform-managed | The platform provisions and manages the sending identity for you in its own infrastructure. | The default. Choose this unless you specifically need to send from your own AWS account. Inbound email receiving is only available in this mode. |
| Organization-owned | The identity is provisioned inside your own AWS SES account, using an SES provider you already connected. | You want sending reputation, quotas and billing to sit in your AWS account. Requires an Amazon SES provider and a plan that allows organization-owned SES. |
You can also change the MAIL FROM subdomain — it defaults to mail, giving you a MAIL FROM domain of mail.yourcompany.com. This is the domain used for bounce handling and SPF alignment.
Step 2 — Publish the DNS records
As soon as the domain is registered we generate the exact records to add at your DNS provider (Cloudflare, Route 53, GoDaddy, Namecheap, and so on). Each row has a copy button. This is what you will see:
| Type | Name / Host | Purpose |
|---|---|---|
CNAME | <token>._domainkey.yourcompany.com | DKIM signing — required. Three of these are issued. Verification cannot complete until all three resolve. |
MX | mail.yourcompany.com | Routes bounce and complaint notifications for your custom MAIL FROM domain. |
TXT | mail.yourcompany.com | SPF record authorizing the sending infrastructure for your MAIL FROM domain. |
TXT | _dmarc.yourcompany.com | DMARC policy. Recommended — starts in monitoring mode so nothing is rejected. |
MX | yourcompany.com | Only for platform-managed domains. Required if you want to receive replies in the built-in Inbox. |
Watch out for auto-appended domains
...yourcompany.com.yourcompany.com. Also make sure the CNAME records are not proxied (in Cloudflare, set them to “DNS only”).The root MX record replaces your existing mail routing
MX record on your root domain redirects mail for that domain to the platform. Only add it if the domain does not already receive business email elsewhere — otherwise use a dedicated subdomain such as news.yourcompany.com for sending.Step 3 — Verify
DNS changes usually propagate in a few minutes but can take up to 24–48 hours. Press Verify Now on the domain row to re-check on demand. The status moves through these values:
| Status | Meaning | What to do |
|---|---|---|
| PENDING_DNS | The domain is registered but the records have not been detected yet. | Publish the records, then press Verify Now. |
| PENDING_VERIFICATION | Records found; verification is in progress. | Wait and re-check. No action needed. |
| VERIFIED | The domain is ready to send from. | Create sender emails on it. |
| FAILED | Verification could not complete. The error is shown on the row. | Re-check every record for typos, proxying and auto-appended domains. |
| SUSPENDED | Sending was halted, usually for reputation or abuse reasons. | Read the suspension reason and contact support. |
| DISABLED | The domain was turned off for your organization. | Contact your organization admin or support. |
Keep the records in place
Domain limits
How many domains you can register, and whether custom or organization-owned domains are available at all, depends on your plan. The Domains page shows your current usage against your limit. See Plans & limits.
Create sender email addresses
Once a domain is verified, create the specific addresses you want to send from. Manage them under Dashboard → Sender Emails.
- 1
Pick a verified domain
Only domains in VERIFIED status can have sender addresses created on them. - 2
Choose the local part
- 3
Set a display name
The friendly name recipients see, such as “Acme Newsletter”. You can edit this at any time without recreating the address.
Use a real, monitored address
noreply@. Mailbox providers treat addresses that never accept replies less favorably, and replies from interested recipients are valuable. Pair a real address with the Inbox so nothing goes unanswered.Receiving replies
Sender addresses on platform-managed domains can also receive mail, and each one is marked as receiving-capable in the list. Addresses on organization-owned SES domains are send-only — replies go wherever your own MX records point. See Inbox.
Suspending and deleting
Deleting a sender address stops it being selectable for new campaigns. An address may also be marked SUSPENDED by the platform, with the reason shown on the row — suspended addresses cannot send until the issue is resolved. The number of sender addresses you can hold across all domains is capped by your plan.
Contacts and lists
Contacts are the people you send to. Lists group them so campaigns can target a defined audience. Manage both under Dashboard → Contacts.
Adding contacts
- One at a time — use New Contact for email, name, phone and any tags.
- Bulk import — use Import to upload a
.csv,.xlsxor.xlsfile up to 10 MB.
Preparing your import file
Put a header row on top with one column per field. At minimum include an email column; first name, last name and phone are recognized as well and feed the personalization variables. During import you can:
- Assign every imported row to an existing contact list.
- Apply tags to the whole batch — for example
imported, q1-leads— which makes it easy to find or clean up that batch later.
Clean the file before you upload
Working with lists
A contact can belong to several lists at once, and the campaign wizard shows each list's contact count as you select it. Structure lists around how you actually segment — by product interest, lifecycle stage or region — rather than by import batch.
Contact limits
Templates and AI content
Templates are reusable email designs. A campaign always sends a template, so create at least one before your first send. Manage them under Dashboard → Templates.
Creating a template
| Field | What it does |
|---|---|
| Template Name | Internal label used to find it in the campaign wizard. |
| Category | Groups templates by purpose — newsletter, promotional, transactional, verification, and so on. |
| Email Subject | Default subject line. A campaign can override it. |
| Preview Text | The short snippet shown after the subject in most inboxes. Leaving it empty wastes prime real estate. |
| Description | Internal note about when to use this template. Not sent to recipients. |
| Tags | Free-form labels for organizing your template library. |
| Email Content | The HTML body, written in the built-in editor. |
Generating a draft with AI
Rather than starting from a blank editor, fill in the template name and subject, then open the AI panel and press Generate with AI. You can steer the output with:
- Tone — professional, friendly, urgent, and so on.
- Audience — who you are writing to, e.g. “SaaS founders”.
- Call to action — the action you want, e.g. “Start free trial”.
The assistant fills in the body, plain-text alternative, description, tags and preview text. Everything it writes is fully editable — treat it as a first draft and always read it before sending.
Test what you build
Personalization variables
Variables let one template produce a personalized email for every recipient. Write them in double curly braces with no spaces, like {{first_name}}.
Values are substituted at send time from the contact record, the campaign and your organization. These are the variables available:
Contact
| Variable | Resolves to | Example |
|---|---|---|
{{email}} | The contact's email address | [email protected] |
{{first_name}} | First name | John |
{{last_name}} | Last name | Doe |
{{full_name}} | First and last name combined | John Doe |
{{phone}} | Phone number | +1234567890 |
Campaign and organization
| Variable | Resolves to | Example |
|---|---|---|
{{campaign_name}} | Name of the sending campaign | Summer Sale 2025 |
{{campaign_subject}} | The subject line used | Don't miss our summer deals! |
{{from_name}} | Sender's display name | ACME Corp |
{{from_email}} | Sender's email address | [email protected] |
{{organization_name}} | Your organization name | ACME Corporation |
System
| Variable | Resolves to | Notes |
|---|---|---|
{{unsubscribe_url}} | A unique one-click unsubscribe link for this recipient | Required for compliance. Include it in every marketing template. |
{{view_in_browser_url}} | A link to view the email in a browser | Useful when images or CSS are blocked. |
{{current_date}} | The date the email is sent | December 17, 2025 |
{{current_year}} | The current year | Handy for copyright footers. |
Always set fallbacks
{{first_name}} would otherwise render as an awkward gap — “Hi ,”. The campaign wizard lets you set a default first name (for example “there”), plus a company name and current year, which are used whenever the contact record is missing a value.Spelling matters
{{ first_name }} and {{First_Name}} will not be substituted — they will be delivered as literal text.Build and launch a campaign
The campaign wizard walks you through details, template, audience, sending configuration and review. Start it from Dashboard → Campaigns → New Campaign.
- 1
Campaign details
Name the campaign, add optional tags and an internal description, then write the Email Subject recipients will see and the Preview Text that follows it in the inbox. - 2
Select a template
Choose from your template library. A live preview renders below the selector so you can confirm you picked the right one. - 3
Choose your audience
Select one or more contact lists. Each card shows how many contacts it holds, so you can see your total reach before committing. - 4
Sending configuration and tracking
Pick the provider to send through, then set your tracking options and personalization fallbacks (described below). - 5
Review and launch
Confirm everything on the review step, then send. The campaign moves to SENDING and delivery is processed in the background — you can leave the page.
Tracking options
| Option | What it does | Recommendation |
|---|---|---|
| Track Email Opens | Embeds an invisible pixel so opens are recorded. | On. Note that privacy features in some mail clients inflate or suppress open counts. |
| Track Link Clicks | Rewrites links so clicks are attributed to the campaign and recipient. | On. Clicks are a far more reliable engagement signal than opens. |
| Include Unsubscribe Link | Guarantees an unsubscribe link is present in the sent email. | Always on for marketing email. |
Personalization fallbacks
On the same step you can set a Company Name, a Recipient First Name Placeholder used when a contact has no first name, and the Current Year. These fill in the corresponding template variables for this campaign.
Campaign statuses
| Status | Meaning |
|---|---|
| DRAFT | Saved but not sent. Fully editable. |
| SCHEDULED | Queued to start automatically at its scheduled time. |
| SENDING | Currently being delivered in batches. |
| SENT | Delivery has finished. Analytics keep updating as opens and clicks arrive. |
| PAUSED | Sending was interrupted and can be resumed where it left off. |
| CANCELLED | Stopped permanently. Cannot be resumed. |
Pausing and resuming
A campaign that is sending can be paused from its detail page and resumed later — useful if you spot a mistake mid-send. Emails already delivered cannot be recalled, so pause as early as you can.
Warm up before a big send
Delivery logs and analytics
Dashboard → Delivery Logs is the record of every email your organization has sent, with rates rolled up across the top.
| Metric | What it tells you |
|---|---|
| Total Emails | How many messages were dispatched. |
| Delivered / Delivery Rate | Share accepted by the receiving mail server. Below roughly 95% suggests list quality problems. |
| Open Rate | Share of recipients who opened. Directional only — some clients pre-fetch images, others block the pixel. |
| Unique Opens | Distinct recipients who opened, ignoring repeat opens by the same person. |
| Click Rate | Share who clicked a tracked link. The most trustworthy engagement measure. |
| Bounce Rate | Share that could not be delivered. Keep this under about 2%. |
| Complaint Rate | Share who marked the message as spam. Keep this under about 0.1% — this is the metric that gets senders blocked. |
Per-message detail
The log table lists individual sends with their recipient, campaign and current delivery status, and can be filtered while you investigate a specific problem. It is the first place to look when someone reports they did not receive an email.
Act on hard bounces and complaints
Where the events come from
Inbox and replies
Dashboard → Inbox collects mail sent to your sender addresses so replies to a campaign do not disappear into an unmonitored mailbox.
The Inbox shows unread count, inbox and sent totals, and the number of connected accounts, with Inbox, Sent and Trash folders.
Requirements
MX record published on the root domain. Sender addresses on organization-owned SES domains are send-only. See Custom domains.Unsubscribes and compliance
Honoring opt-outs is both a legal requirement and the cheapest way to protect your sending reputation.
Every marketing template should contain {{unsubscribe_url}}, and every campaign should have Include Unsubscribe Link enabled. Each recipient receives a unique link; following it opens a public unsubscribe page and immediately opts that contact out of future sends — no login required on their part.
- Only send to people who actually opted in. Never upload purchased lists.
- Make it obvious who is emailing and why the recipient is hearing from you.
- Include a valid postal address in your footer where your jurisdiction requires it.
- Process opt-outs promptly — the platform does this automatically, so do not re-add unsubscribed contacts through a later import.
Re-importing undoes your opt-outs
Notifications
The platform keeps you informed about campaign progress and delivery events without you needing to refresh.
- In-app, real time — the dashboard holds a live connection, so campaign progress and delivery events appear as they happen. Review the history under Notifications.
- Browser push — opt in and your browser will notify you about important events even when the dashboard tab is not focused. Your browser will ask permission the first time.
If real-time updates stop
Team, roles and permissions
Organizations are multi-user. Every member works inside the same workspace, with what they can do determined by their role.
| Role | Can do |
|---|---|
| Owner | Full control of the organization, including provider credentials, domains, billing-related settings and membership. |
| Admin | Manage organization resources and settings — contacts, templates, campaigns, domains, sender addresses and team insights. |
| Member | Day-to-day campaign work within the organization, without access to administrative settings. |
Team Insights
Organization admins get a Team Insights view showing member count, templates in use, most-used templates, notification volume and recent template activity — useful for seeing which assets your team actually relies on.
Least privilege
Plans and limits
Your organization is assigned a package that determines both hard limits and which features are switched on.
Limits
| Limit | Applies to |
|---|---|
| Contacts | Total contacts you may store. |
| Campaigns per month | How many campaigns you may create in a calendar month. |
| Emails per day / month | Sending volume ceilings. |
| Emails per minute | Throughput throttle applied while a campaign sends. |
| Batch size | How many messages are dispatched per batch during a send. |
| API requests per minute | Rate limit on API access. |
| Max domains | Sending domains you may register. |
| Max sender emails | Sender addresses across all your domains. |
Feature flags
| Feature | What it unlocks |
|---|---|
| Custom domain | The ability to register and verify your own sending domains at all. |
| Organization-owned SES | Provisioning domains inside your own AWS SES account instead of the platform-managed one. |
| Bulk email | Large-audience campaign sending. |
| Advanced analytics | The fuller reporting surface on delivery logs. |
| A/B testing | Running variant tests on campaigns. |
| Priority support | Faster support response targets. |
Unlimited and per-organization exceptions
Compare the standard tiers on the pricing section of the homepage.
Security and data handling
A short summary of how your credentials and tenant data are protected.
- Tenant isolation — every contact, template, campaign, domain and log entry is scoped to your organization and is not reachable by any other tenant.
- Encrypted credentials — SMTP passwords, AWS keys and provider API keys are encrypted before storage and are never returned in full through the API or displayed again in the dashboard.
- Authenticated sessions — access is token-based, and role checks are enforced on every request rather than only in the interface.
- Soft deletion — deleting a record removes it from your workspace while preserving an audit trail, so accidental deletions can be investigated.
Rotate credentials you no longer use
Deliverability best practices
Landing in the inbox is earned. These are the practices that matter most, in rough order of impact.
- 1
Authenticate your domain
Publish DKIM, SPF and DMARC as described in Custom domains. Unauthenticated mail is increasingly rejected outright by major providers. - 2
Send only to people who opted in
Permission is the foundation. Everything else is optimization on top of it. - 3
Warm up new domains and providers gradually
Build volume over days or weeks rather than sending your full list on the first day. - 4
Keep your list clean
Remove hard bounces immediately, and stop mailing contacts who have not engaged in a long time. Inactive recipients drag down your engagement signals. - 5
Make unsubscribing easy
A visible unsubscribe link produces far fewer spam complaints than a hidden one. A complaint hurts you much more than an opt-out does. - 6
Write like a human
Avoid all-caps subject lines, walls of exclamation marks, and image-only emails with no text. Keep a sensible ratio of text to images. - 7
Watch your rates every send
Rising bounce or complaint rates are the earliest warning that something is wrong. Investigate before the next campaign, not after.
Troubleshooting
The issues organizations hit most often during self-onboarding, and how to resolve them.
| Symptom | Likely cause and fix |
|---|---|
| Verification email never arrived | Check spam and promotions folders first. Confirm the address was typed correctly; if it was wrong, sign up again with the correct address. |
| Provider fails its health check | For Gmail or Outlook, you almost certainly used your account password instead of an app password. Otherwise re-check host, port and the TLS/SSL combination — port 587 uses TLS, port 465 uses SSL, never both. |
| Domain stuck on PENDING_DNS | The DKIM records are not resolving. Check for a domain auto-appended to the Name field by your DNS panel, and make sure the CNAMEs are not proxied. Propagation can take up to 48 hours. |
| Domain shows FAILED | Read the error text on the domain row, correct the record it names, then press Verify Now. A single mistyped DKIM token blocks the whole verification. |
| Cannot create a sender email | The domain must be VERIFIED, and you must be under your plan’s sender-email limit. Both are shown on their respective pages. |
| Campaign will not send | Confirm you selected a provider, at least one contact list with contacts in it, and a template. Check that the sending address is not suspended and that you have not hit a daily or monthly volume limit. |
| Variables appear as literal text | The variable name does not match exactly. Use {{first_name}} — lowercase, underscores, no spaces inside the braces. |
| Emails land in spam | Usually missing domain authentication or list quality. Work through Deliverability best practices in order. |
| Opens look implausibly low or high | Open tracking is approximate. Privacy protection in some mail clients pre-loads the tracking pixel, and others block it entirely. Judge performance by clicks. |
| Import rejected | The file must be .csv, .xlsx or .xls and under 10 MB, and the import must not push you past your contact limit. Split very large files into batches. |
| SES sends succeed but no open/click data | Set a Configuration Set on the Amazon SES provider. Without it, SES does not report events back to the platform. |
Getting help
If this guide did not answer your question, here is where to go next.
- Check Delivery Logs first — for anything about a specific message, the per-message status in the log is the fastest answer.
- Ask your organization admin — plan limits, feature availability and role changes are set at the organization level.
- Contact support — for suspended domains or addresses, plan changes, or anything you cannot resolve from the dashboard. Include your organization name, the domain or campaign involved, and what you have already tried.