Product documentation

Everything you need to onboard and launch

A complete, self-service guide for organizations. Sign up, connect a sending provider, verify your own domain, build your audience, and launch tracked campaigns — no support ticket required.

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

Organization owners and admins doing first-time setup, and team members who need to run day-to-day campaigns. Sections are ordered the way you will actually work through them.

Quick start

The shortest path from a new account to a sent campaign. Each step links to the section with the full detail.

  1. 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. 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. 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. 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. 5

    Create a template

    Write your HTML or generate a draft with AI, and drop in personalization variables. See Templates & AI.
  6. 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. 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

Steps 3 is optional. With just SMTP credentials from a mailbox you already own you can send your first campaign immediately — a custom domain improves deliverability and branding, but it is not a prerequisite.

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. 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. 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. 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

The same email address can belong to more than one organization. Each membership is a separate account record with its own role, so joining a second organization does not affect the first.

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)

FieldWhat to enter
SMTP HostThe server hostname, e.g. smtp.gmail.com or smtp.office365.com.
PortUsually 587 with TLS, or 465 with SSL.
UsernameNormally the full mailbox address.
PasswordAn app password, not your everyday account password (see below).
Use TLS / Use SSLEnable TLS for port 587, SSL for port 465. Do not enable both.

Gmail and Outlook need an app password

Both providers block plain account passwords over SMTP. Turn on two-factor authentication in your Google or Microsoft account, generate a dedicated app password, and paste that here. If you get an authentication error on save, this is almost always the cause.

Amazon SES

FieldWhat to enter
Access Key IDIAM access key with SES send permissions.
Secret Access KeyThe matching secret for that key.
Session TokenOnly needed if you use temporary STS credentials. Leave blank otherwise.
RegionThe SES region your identities live in, e.g. us-east-1.
Configuration SetOptional. Set this to receive open, click, bounce and complaint events back from SES.

Leaving the SES sandbox

A brand-new SES account is sandboxed: you can only send to addresses you have verified, with a low daily cap. Request production access in the AWS console before running a real campaign.

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

SMTP passwords, AWS keys and API keys are encrypted before they are stored and are never returned in full through the API or shown again in the dashboard. To change a secret, re-enter it.

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 modeWhat it meansWhen to choose it
Platform-managedThe 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-ownedThe 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:

TypeName / HostPurpose
CNAME<token>._domainkey.yourcompany.comDKIM signing — required. Three of these are issued. Verification cannot complete until all three resolve.
MXmail.yourcompany.comRoutes bounce and complaint notifications for your custom MAIL FROM domain.
TXTmail.yourcompany.comSPF record authorizing the sending infrastructure for your MAIL FROM domain.
TXT_dmarc.yourcompany.comDMARC policy. Recommended — starts in monitoring mode so nothing is rejected.
MXyourcompany.comOnly for platform-managed domains. Required if you want to receive replies in the built-in Inbox.

Watch out for auto-appended domains

Many DNS panels automatically append your domain to the Name field. If your provider does this, enter only the part before your domain — pasting the full host would create ...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

Adding the inbound 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:

StatusMeaningWhat to do
PENDING_DNSThe domain is registered but the records have not been detected yet.Publish the records, then press Verify Now.
PENDING_VERIFICATIONRecords found; verification is in progress.Wait and re-check. No action needed.
VERIFIEDThe domain is ready to send from.Create sender emails on it.
FAILEDVerification could not complete. The error is shown on the row.Re-check every record for typos, proxying and auto-appended domains.
SUSPENDEDSending was halted, usually for reputation or abuse reasons.Read the suspension reason and contact support.
DISABLEDThe domain was turned off for your organization.Contact your organization admin or support.

Keep the records in place

Verification is not a one-time gate. If the DKIM records are later removed or edited, the domain can drop out of verified status and sending from it will stop.

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. 1

    Pick a verified domain

    Only domains in VERIFIED status can have sender addresses created on them.
  2. 2

    Choose the local part

    The part before the @ — for example hello, news or support, giving you [email protected].
  3. 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

Avoid 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, .xlsx or .xls file 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

Remove duplicates, strip trailing spaces from addresses, and drop anything you are not certain opted in. A list full of stale or purchased addresses generates bounces and complaints that damage the sending reputation of your whole domain.

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

Your plan sets a maximum number of contacts. If an import would exceed it, the import is rejected — remove contacts you no longer mail, or move to a larger plan.

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

FieldWhat it does
Template NameInternal label used to find it in the campaign wizard.
CategoryGroups templates by purpose — newsletter, promotional, transactional, verification, and so on.
Email SubjectDefault subject line. A campaign can override it.
Preview TextThe short snippet shown after the subject in most inboxes. Leaving it empty wastes prime real estate.
DescriptionInternal note about when to use this template. Not sent to recipients.
TagsFree-form labels for organizing your template library.
Email ContentThe 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

Send yourself a test before adding a template to a real campaign. Check it in at least one desktop client and one mobile client — HTML email rendering varies far more than web rendering does.

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

VariableResolves toExample
{{email}}The contact's email address[email protected]
{{first_name}}First nameJohn
{{last_name}}Last nameDoe
{{full_name}}First and last name combinedJohn Doe
{{phone}}Phone number+1234567890

Campaign and organization

VariableResolves toExample
{{campaign_name}}Name of the sending campaignSummer Sale 2025
{{campaign_subject}}The subject line usedDon't miss our summer deals!
{{from_name}}Sender's display nameACME Corp
{{from_email}}Sender's email address[email protected]
{{organization_name}}Your organization nameACME Corporation

System

VariableResolves toNotes
{{unsubscribe_url}}A unique one-click unsubscribe link for this recipientRequired for compliance. Include it in every marketing template.
{{view_in_browser_url}}A link to view the email in a browserUseful when images or CSS are blocked.
{{current_date}}The date the email is sentDecember 17, 2025
{{current_year}}The current yearHandy for copyright footers.

Always set fallbacks

If a contact has no first name, {{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

Variables are matched exactly and are case-sensitive, with no spaces inside the braces. {{ 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. 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. 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. 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. 4

    Sending configuration and tracking

    Pick the provider to send through, then set your tracking options and personalization fallbacks (described below).
  5. 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

OptionWhat it doesRecommendation
Track Email OpensEmbeds an invisible pixel so opens are recorded.On. Note that privacy features in some mail clients inflate or suppress open counts.
Track Link ClicksRewrites links so clicks are attributed to the campaign and recipient.On. Clicks are a far more reliable engagement signal than opens.
Include Unsubscribe LinkGuarantees 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

StatusMeaning
DRAFTSaved but not sent. Fully editable.
SCHEDULEDQueued to start automatically at its scheduled time.
SENDINGCurrently being delivered in batches.
SENTDelivery has finished. Analytics keep updating as opens and clicks arrive.
PAUSEDSending was interrupted and can be resumed where it left off.
CANCELLEDStopped 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

If your domain or provider is new, do not send to your entire list on day one. Start with a few hundred of your most engaged contacts and increase volume over a week or two. Mailbox providers judge sudden volume spikes from unknown senders harshly.

Delivery logs and analytics

Dashboard → Delivery Logs is the record of every email your organization has sent, with rates rolled up across the top.

MetricWhat it tells you
Total EmailsHow many messages were dispatched.
Delivered / Delivery RateShare accepted by the receiving mail server. Below roughly 95% suggests list quality problems.
Open RateShare of recipients who opened. Directional only — some clients pre-fetch images, others block the pixel.
Unique OpensDistinct recipients who opened, ignoring repeat opens by the same person.
Click RateShare who clicked a tracked link. The most trustworthy engagement measure.
Bounce RateShare that could not be delivered. Keep this under about 2%.
Complaint RateShare 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

A hard bounce means the address does not exist — remove it, because repeatedly mailing dead addresses signals to mailbox providers that your list is not maintained. Never re-mail someone who filed a complaint.

Where the events come from

Delivery, bounce, complaint, open and click events are reported back by your sending provider. If you send through Amazon SES, set a Configuration Set on the provider — without it SES does not send these events back and your log will show sends but little downstream detail.

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

Receiving works for sender addresses on platform-managed domains that have the inbound 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

If you import an old file that still contains people who unsubscribed, you risk mailing them again. Filter your source data before every import.

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

Corporate firewalls and some VPNs block the persistent connection that powers live updates. The dashboard still works — figures refresh when you reload the page.

Team, roles and permissions

Organizations are multi-user. Every member works inside the same workspace, with what they can do determined by their role.

RoleCan do
OwnerFull control of the organization, including provider credentials, domains, billing-related settings and membership.
AdminManage organization resources and settings — contacts, templates, campaigns, domains, sender addresses and team insights.
MemberDay-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

Only grant owner or admin to people who genuinely need to change provider credentials and domains. A mistake at that level affects every campaign your organization sends.

Plans and limits

Your organization is assigned a package that determines both hard limits and which features are switched on.

Limits

LimitApplies to
ContactsTotal contacts you may store.
Campaigns per monthHow many campaigns you may create in a calendar month.
Emails per day / monthSending volume ceilings.
Emails per minuteThroughput throttle applied while a campaign sends.
Batch sizeHow many messages are dispatched per batch during a send.
API requests per minuteRate limit on API access.
Max domainsSending domains you may register.
Max sender emailsSender addresses across all your domains.

Feature flags

FeatureWhat it unlocks
Custom domainThe ability to register and verify your own sending domains at all.
Organization-owned SESProvisioning domains inside your own AWS SES account instead of the platform-managed one.
Bulk emailLarge-audience campaign sending.
Advanced analyticsThe fuller reporting surface on delivery logs.
A/B testingRunning variant tests on campaigns.
Priority supportFaster support response targets.

Unlimited and per-organization exceptions

A limit shown as unlimited means no cap is enforced for that dimension. Platform administrators can also grant per-organization overrides on top of your package, so your effective limit may be higher than the standard plan — the Domains and Sender Emails pages always show your real current usage and ceiling.

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

If a team member with provider access leaves, rotate the SMTP app password or IAM key in the upstream provider and re-enter it here. Removing their platform account alone does not invalidate credentials they may have copied.

Deliverability best practices

Landing in the inbox is earned. These are the practices that matter most, in rough order of impact.

  1. 1

    Authenticate your domain

    Publish DKIM, SPF and DMARC as described in Custom domains. Unauthenticated mail is increasingly rejected outright by major providers.
  2. 2

    Send only to people who opted in

    Permission is the foundation. Everything else is optimization on top of it.
  3. 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. 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. 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. 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. 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.

SymptomLikely cause and fix
Verification email never arrivedCheck 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 checkFor 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_DNSThe 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 FAILEDRead 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 emailThe 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 sendConfirm 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 textThe variable name does not match exactly. Use {{first_name}} — lowercase, underscores, no spaces inside the braces.
Emails land in spamUsually missing domain authentication or list quality. Work through Deliverability best practices in order.
Opens look implausibly low or highOpen tracking is approximate. Privacy protection in some mail clients pre-loads the tracking pixel, and others block it entirely. Judge performance by clicks.
Import rejectedThe 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 dataSet 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.

Ready to send your first campaign?

Create your organization and work through the quick start — most teams are sending within an afternoon.