Back to Email Marketing Automation
User Guide

EC: Email Marketing Automation — User Guide

Setup, everyday sending, and troubleshooting. About 15 minutes to read; roughly 20 minutes from install to your first campaign.

Welcome to EC: Email Marketing Automation. This guide walks you through setup, everyday sending, and troubleshooting. Total reading time: about 15 minutes. Total setup time from install to your first campaign: about 20 minutes.


What EC: Email Marketing Automation does

EC: Email Marketing Automation is a Shopify-native email marketing app for merchants who want to send marketing campaigns and automated customer emails through their own email provider account — Amazon SES, SendGrid, Mailgun, Postmark, or any SMTP server — instead of paying a separate email marketing platform.

The problem it solves: most email apps lock you into their sending infrastructure and charge per subscriber. EC: Email Marketing Automation keeps you in control — you bring the deliverability, sender reputation, and sending limits you already have, and the app handles the campaigns, automations, list management, and tracking on top.

Why send through your own email provider account

Using your own provider account (SES / SendGrid / Mailgun / Postmark / SMTP) instead of a bundled sending service gives merchants concrete advantages:

  • Lower cost at scale — you pay your provider's raw sending rate (often a few cents per thousand emails) with no per-subscriber markup. A large list that would cost hundreds per month on a bundled platform can cost a fraction.
  • You own your sender reputation — the sending domain and IP are yours. Your good reputation isn't shared with, or dragged down by, other merchants on a shared platform IP.
  • Better, predictable deliverability — inbox placement rides on your own authenticated domain (SPF / DKIM / DMARC) and warmed IP, not a pool you don't control.
  • Use the limits you already have — if your SES or SendGrid account is already approved for high volume, you send at that rate immediately — no re-approval, no artificial app-imposed caps.
  • Own your data — your subscriber list and sending run on infrastructure you control; nothing is locked inside a vendor you'd later have to export from.
  • No lock-in — switch or add providers anytime. Connect several and the app fails over automatically if one is throttled or down.
  • Keep provider-native features — dedicated IPs, subusers, regional (EU / US) sending, and your provider's own analytics stay available.

Core features — what it helps a merchant do

  • Bring your own email provider — connect SES / SendGrid / Mailgun / Postmark / SMTP; your account, your sending costs, your reputation. Add several and the app automatically fails over if one is throttled or down.
  • Build campaigns visually — a drag-and-drop editor with reusable blocks, merge tags ({{first_name}}, etc.), Shopify product blocks, live preview, and one-click test sends.
  • Automate lifecycle emails — welcome series, abandoned cart, birthday, post-purchase, and win-back flows triggered by real Shopify customer and order events.
  • Target with segments — filter subscribers by purchase history, tags, country, lifetime value, or any custom field; the matched count updates live.
  • Draft with AI (bring your own key) — generate subject lines, preheaders, and full email bodies using your own OpenAI / Anthropic / Gemini key.
  • Measure results — per-campaign open, click, bounce, and unsubscribe rates, plus revenue attributed to each campaign (7-day last-touch).
  • Stay compliant — one-click unsubscribe, a global suppression list honored across every provider, CAN-SPAM footer, and GDPR data-request / redaction handling. Subscriber data is encrypted at rest and removed on uninstall.
  • Work in 15 languages — the merchant admin is fully localized, including right-to-left Arabic.

How merchants are billed

Free to install. Pick a plan (Free / Starter / Growth / Scale) by subscriber count. Every plan also includes a usage charge of $1 per 10,000 emails sent, billed by Shopify and capped at $500/month. Paid plans include a 7-day free trial.


Contents

  1. Quick start (5 steps)
  2. Connecting an email provider
  3. Managing subscribers
  4. Creating a campaign
  5. Building an automation
  6. Segmentation
  7. AI content assistant
  8. Analytics and attribution
  9. Billing and plans
  10. Language and localization
  11. FAQ
  12. Troubleshooting
  13. Support

1. Quick start (5 steps)

After you install the app from the Shopify App Store. Steps marked [Required] are the minimum to send your first email; [Optional] steps can wait.

Step 1 — Choose a plan. [Required] On first open, the app shows a welcome screen; click through to Shopify's plan selection page. Pick Free, Starter, Growth, or Scale based on your subscriber count and approve. You can't use the app until a plan is active (Free works). You return to the dashboard.

Step 2 — Connect an email provider. [Required] Go to Settings → Providers → Add provider. Pick Amazon SES, SendGrid, Mailgun, Postmark, or SMTP and enter your credentials. The app verifies the connection and requires at least one verified sender identity before it activates — sending is impossible without a connected provider.

Step 3 — Set your sender identity. [Required] Go to Settings → Sender. Enter your From email (must match a verified identity from step 2), a From name, and your physical mailing address (legally required in the email footer). The From email is validated against your provider's verified identities.

Step 4 — Get subscribers into the app. [Required to have recipients] Two options:

  • Automatic: the app auto-syncs your Shopify customers who have marketing consent within 5-10 minutes of install.
  • Manual: Subscribers → Import and upload a CSV (columns: email, first_name, last_name, optional tags).

Step 5 — Send your first campaign. [The goal] Campaigns → Create campaign. Write a subject, drag blocks into the editor, click Send a test to preview in your inbox, then Send now or Schedule.

That's it. Steps 1-3 are the mandatory setup; step 4 gives you recipients; step 5 is your first send. You now have a working email marketing system on your own provider account.


2. Connecting an email provider

The app does not send email for you — it uses your own account with one of these providers:

ProviderWhen to pick itFree tier
Amazon SESHigh volume, technical merchants62,000/month if sent from EC2
SendGridSimple setup, marketing focus100/day forever
MailgunDeveloper-friendly, EU/US regions100/day for 30 days
PostmarkBest deliverability, transactional100/month forever
SMTPAny other provider (Zoho, Fastmail, custom)Depends on your host

Setup steps (universal)

  1. Create an account with the provider and verify your sending domain there (DNS records for SPF, DKIM, DMARC).
  2. In their dashboard, generate an API key with send permission.
  3. In the app: Settings → Providers → Add provider → [pick provider].
  4. Paste the API key (and region for SES/Mailgun).
  5. Click Save. The app fetches your verified domains and displays them under the provider card.

Verifying a From address

For Amazon SES specifically, you must verify each From email address separately, in addition to the domain. Click Refresh identities on the provider card if you added addresses in AWS after connecting.

Fallback across providers (paid plans)

Connect two or more providers. In each provider card, set Priority (0 = highest). If provider #0 fails 3 sends in a row, the app automatically routes the next email through provider #1. Configure once, then forget.


3. Managing subscribers

Where subscribers come from

  • Shopify sync — customers with marketing consent are imported automatically on install (one time), then kept in sync via webhooks (customers/create, customers/update, customers/delete).
  • CSV importSubscribers → Import. Upload a UTF-8 CSV. Duplicate emails are skipped (existing row wins). Suppressed emails are silently dropped.
  • Manual addSubscribers → Add subscriber.
  • Popup / signup forms — sync from your storefront via Web Pixel (auto-installed on paid tiers).

Subscriber status

StatusMeaningCan receive campaigns?
subscribedActively receivingYes
pendingOpted in but not confirmed (double opt-in)No
unsubscribedClicked unsubscribe or received via list-unsubscribeNo — permanent block via suppression
bouncedHard bounced 3+ timesNo
complainedMarked as spamNo

Suppression list

Subscribers → Suppression shows every email address permanently blocked from receiving your campaigns. Rows are added automatically on unsubscribe, hard bounce, or spam complaint. You can manually add or remove entries.

Important: unsubscribes persist across imports. Re-adding an unsubscribed email via CSV won't re-enable sending — it stays on the suppression list. To re-engage, remove them from suppression first.


4. Creating a campaign

Draft

  1. Campaigns → Create campaign.
  2. Enter a name (internal reference — not shown to recipients).
  3. Enter the subject (30-60 characters recommended, includes emoji).
  4. Optional: enter a preheader (40-90 characters — appears in inbox preview after subject).

Design

The drag-and-drop editor supports:

  • Text blocks — with merge tags via the Insert merge tag ▾ dropdown (see merge tags).
  • Image blocks — upload from your computer or paste a URL.
  • Button blocks — customize color, text, target URL.
  • Product blocks — pull live product data from your Shopify catalog (image, price, title, buy button).
  • Divider / spacer — for whitespace.
  • HTML block — raw HTML if you need something custom.

Everything renders as email-safe inline CSS on save.

Merge tags

Personalize your emails without writing code. Insert these tokens and they auto-replace per recipient at send time:

TagExample output
{{first_name}}Alex
{{last_name}}Nguyen
{{email}}[email protected]
{{shop_name}}Your Store
{{shop_address}}123 Main St, City
{{unsubscribe_url}}https://…/u/abc123
{{web_view_url}}https://…/v/abc123
{{custom.<field>}}Any subscriber custom field (e.g. {{custom.city}})

If a tag has no value for a subscriber (e.g. first_name is null), it renders as empty string. The app warns you at send time if merge tags would render blank.

Test send

Click Send a test at the top of the editor and enter your own email. The message arrives within seconds through your configured provider.

Note on test emails: the unsubscribe link in test emails goes to a friendly "no action needed" page. Real campaigns use per-subscriber tokens that actually unsubscribe.

Send or schedule

  • Send now — enqueues sends immediately. Progress shown in Activity → Campaigns.
  • Schedule — pick a date and time (your shop's timezone). The app fires exactly at that moment.
  • Save as draft — no send, keep editing later.

After send

Each campaign gets an analytics page showing delivered / opened / clicked / bounced / unsubscribed counts, plus attributed revenue (see attribution).


5. Building an automation

Automations are multi-step email flows triggered by customer actions.

Available triggers

TriggerFires when
Customer signupNew subscriber joins the list
Abandoned checkoutCart abandoned for N hours (configurable)
Post-purchaseOrder placed
Win-backSubscriber inactive for N days
BirthdaySubscriber's birthday date matches (requires birthday custom field)
ManualFired from the UI for testing

Step types

Automations are a chain of steps:

  • Send email — fires an email with the same editor as campaigns.
  • Wait — pause N hours/days before the next step.
  • Branch — future feature (roadmap).

Creating from a template

  1. Automations → Create automation.
  2. Pick a template (Welcome series, Abandoned cart recovery, Birthday coupon, etc.).
  3. Customize the emails inside each step.
  4. Toggle status to Active — new triggering events start enrolling subscribers immediately.

Enrollment safety

A subscriber is only enrolled once per automation while a previous run is still active. This prevents accidentally spamming a customer with overlapping "welcome" emails if they trigger twice quickly.


6. Segmentation

Segments are saved filters that dynamically match subscribers.

Creating a segment

  1. Subscribers → Segments → New segment.
  2. Name it (e.g. "VIP customers").
  3. Add rules:
    • Filter by tag (e.g. tag contains "vip")
    • Filter by total spend (≥, ≤, ==)
    • Filter by total orders
    • Filter by lifetime value
    • Filter by country
    • Filter by any custom field
    • Filter by last order date, subscribed date, or any time-based field
  4. Combine rules with All (AND) or Any (OR) logic.
  5. Save. Matched count updates live.

Using a segment in a campaign

In Campaigns → Create campaign, pick the segment under Audience. Only matching subscribers receive the campaign.


7. AI content assistant

The app includes an AI-powered writer for subject lines, preheaders, and full email bodies. You bring your own API key — the app never uses its own credits, so you pay only your AI provider directly.

Supported providers

  • OpenAI (GPT-4, GPT-4o, etc.)
  • Anthropic Claude (Claude 3.5 Sonnet, Haiku, etc.)
  • Google Gemini (2.0 Flash, 1.5 Pro, etc.)

Setup

  1. Create an API key with your AI provider of choice.
  2. Settings → AI. Pick the provider and paste your API key.
  3. Save. The key is encrypted at rest with AES-256-GCM.

Daily call limits (per shop)

PlanCalls per day
Free5
Starter50
Growth200
Scale1,000

These are anti-abuse safeguards — they cap runaway loops, not actual merchant use. Each AI feature (subject / preheader / body) counts as one call.

Using AI in the editor

  • Type a brief in the sidebar ("Black Friday 30% off — target VIPs")
  • Click Generate subject lines → 3 candidates appear.
  • Click Generate preheader → 3 candidates.
  • Click Generate email body → full HTML draft populates the editor, ready to edit.

Privacy

Prompts are sent only to your AI provider using your key. The app never proxies them to a third party. Subscriber data (first name, email) is NOT sent to the AI — personalization tokens are rendered AFTER the AI returns content, at actual send time.


8. Analytics and attribution

Per-campaign analytics

For each sent campaign you see:

  • Sent — total recipients
  • Delivered — accepted by inbox provider
  • Open rate — unique opens ÷ delivered
  • Click rate — unique clicks ÷ delivered
  • Bounce rate — hard bounces ÷ sent
  • Unsubscribe rate — unsubs ÷ delivered
  • Attributed revenue — orders placed within 7 days of a delivered send credited to this campaign (last-touch attribution)
  • Attributed orders — count of those orders

30-day rolling analytics

Analytics page shows top campaigns by volume / open rate / click rate / revenue, plus daily send volume chart.

Attribution model

We use last-touch attribution with a 7-day window: when an order is placed, we find the most recent delivered send to that customer's email within 7 days. That send's campaign gets full credit for the revenue.

Attribution is one-way — an order attributed to a campaign is not double-counted elsewhere. If no send happened in the 7-day window, the order isn't attributed to email.


9. Billing and plans

Plans

PlanRecurringSubscribersAutomationsConcurrent campaigns
Free$0/mo1,00011
Starter$4.99/mo20,000UnlimitedUnlimited
Growth$9.99/mo50,000UnlimitedUnlimited
Scale$15.99/moUnlimitedUnlimitedUnlimited

All paid plans include a 7-day free trial. Cancel anytime before the trial ends to avoid charges.

Usage charges

On top of the monthly fee, every plan charges $1 per 10,000 emails sent through the app. Charges are:

  • Reported to Shopify each time your usage crosses a 10,000-email threshold.
  • Capped at $500/month — even if you send 100M emails, Shopify never bills more than $500 in usage charges for one billing period.
  • Billed via Shopify at the end of each 30-day cycle. Test sends and emails during a merchant's trial period aren't metered.

Changing plans

Settings → Plan & billing → Open plan selector. You'll land on Shopify's hosted pricing page — approve the new plan there. The change takes effect immediately. Upgrades are prorated; downgrades take effect at the next billing cycle.

Cancelling

Uninstall the app from your Shopify admin. Your subscription is cancelled automatically. Your data is kept for 48 hours in case you reinstall — after that, all subscriber, campaign, and automation data is deleted per Shopify's shop/redact policy.


10. Language and localization

The merchant admin UI is available in 15 languages. Switch via the language picker in the sidebar or your Shopify admin's language setting — the app follows automatically.

LanguageCodeRTL
Englishen
Germande
Frenchfr
Spanishes
Italianit
Dutchnl
Portuguese (Brazil)pt-BR
Japaneseja
Koreanko
Chinese (Simplified)zh-CN
Chinese (Traditional)zh-TW
Thaith
Arabicar
Indonesianid
Vietnamesevi

The email content itself is authored in whatever language you type — merge tags and templates are language-agnostic.


11. FAQ

Setup

Q: Why doesn't the app send email through Shopify? A: Shopify doesn't provide a transactional email service at the volume marketing requires. You bring your own provider (SES / SendGrid / Mailgun / etc.) so you own the deliverability, IP reputation, and sending limits. The app just orchestrates the queue and content.

Q: Do I need a paid email provider account? A: Most providers have generous free tiers (SendGrid: 100/day, Postmark: 100/month). If you're a small store, free tiers may be enough. High volume shops usually pay their provider $10-$100/month depending on volume.

Q: Can I send email from Gmail / Outlook? A: Yes, via SMTP. Google's daily send limit is 500 (personal) or 2,000 (Workspace). It works but isn't recommended above 100 emails/day — providers throttle or block bulk senders using consumer SMTP.

Q: How long does the initial Shopify customer sync take? A: Under 5 minutes for shops with <10k customers. Up to 30 minutes for 100k+ customers. Progress is shown on the dashboard.

Sending

Q: Why did my campaign land in spam? A: The most common causes:

  • DNS records missing (SPF, DKIM, DMARC not set at your DNS provider)
  • Cold IP / new domain sending too fast (start with 500/day for a week before scaling)
  • Spammy content (all-caps subjects, "FREE!!!", link-heavy body)
  • List quality (old inactive subscribers who report you as spam)

Verify your DNS at mail-tester.com or the DKIM / DMARC checker in your provider's dashboard.

Q: Can I schedule a campaign at a specific time in each subscriber's timezone? A: Not yet — v1 sends everyone at the same UTC moment. Timezone-aware scheduling is on the roadmap.

Q: How fast will my campaign send? A: Send rate is capped by your provider's own limits. SES: ~14/sec by default (up to 200/sec on request). SendGrid: 100/sec. Mailgun: 60/min on free, higher on paid. A 10,000-recipient campaign takes 10-30 minutes on typical settings.

Subscribers

Q: Can I bulk delete subscribers? A: Yes, but delete is irreversible. Filter with a segment, click Actions → Delete matching. Their status changes to "deleted" and suppression rows are kept (they can't be re-added via import).

Q: What happens to unsubscribed subscribers? A: Their status changes to "unsubscribed" and their email is added to the suppression list. They stop receiving campaigns but the row stays so historical analytics remain accurate.

Q: I imported a subscriber but they're not receiving campaigns. Why? A: Check:

  1. Status is "subscribed" (not "pending" — enable/disable double opt-in in Settings → Subscribers).
  2. They aren't on your suppression list.
  3. The campaign's segment includes them (View segment → check membership).

Billing

Q: Am I charged during the trial period? A: No. Shopify does not bill until the trial ends. Cancel anytime during the trial to avoid all charges (recurring + usage).

Q: What counts as an "email sent" for the $1/10k usage charge? A: Every send attempt that leaves the queue for your provider. Delivery failures still count. Test sends and emails from dev stores do NOT count.

Q: Can I set a hard spending cap? A: The usage charge is Shopify-capped at $500/month. If you want a lower cap, downgrade to a smaller subscriber tier — that limits how many subscribers you can reach at all.

Q: I use my own SES account. Do I still pay $1/10k to the app? A: Yes — the $1/10k covers our software (queue infrastructure, delivery tracking, unsubscribe pages, analytics, GDPR compliance). Your SES cost is separate — you pay AWS directly.

AI

Q: Which AI provider gives the best marketing copy? A: In our testing, Claude 3.5 Sonnet has the best voice quality for long-form; GPT-4o is fastest for subject-line brainstorming; Gemini 1.5 Pro is cheapest per token. Try each on the same brief and pick.

Q: Does the app store my prompts / generated content? A: We don't log prompt or response bodies. Only the generation type (subject / preheader / body) and success/failure status are logged for rate-limit tracking. Your AI provider stores per their own policy.

Q: Can I set a monthly AI spend cap? A: Set the cap in your AI provider's own dashboard (OpenAI usage limits, Anthropic organization limits). The app can't cap spending on your behalf since we don't see billing.

Privacy and compliance

Q: Is the app GDPR compliant? A: Yes. All Protected Customer Data (email, name) is encrypted at rest. On customers/redact webhook from Shopify, we delete the subscriber row and cascade all Send / Event history within 30 days. Subscribers can request their data via customers/data_request.

Q: Does the app honor CAN-SPAM? A: Yes. Every email includes an unsubscribe link (both in the footer and in the List-Unsubscribe SMTP header). Your physical mailing address is appended to every campaign. Unsubscribe requests are honored immediately (usually within milliseconds).

Q: What data does the app share with third parties? A: None, except the email content + recipient email you send yourself through your configured provider (SES / SendGrid / etc.). No data is shared with the app's servers beyond what your Shopify app scopes require.


12. Troubleshooting

"No email provider configured" banner won't go away

You need at least one provider with status = active. Go to Settings → Providers and make sure at least one card shows the green "Active" badge. If none, add or re-verify a provider.

Emails not arriving in test inbox

  1. Check spam folder first.
  2. Verify DNS: nslookup <yourdomain> should return your MX. dig TXT _dmarc.<yourdomain> should return your DMARC policy.
  3. Check the provider's dashboard for the specific send — Amazon SES shows delivery status per message. If it says "Bounced" there, fix the underlying issue (invalid recipient, suppression, quota).
  4. Check the app's Activity → Recent sends — look for the Send row and its providerMessageId + status.

Campaign stuck in "sending" for hours

Send takes 10-30 minutes normally. If stuck > 2 hours:

  1. Check your provider's daily send limit — you may be throttled.
  2. Check the app's Activity for any error messages.
  3. Contact support with the campaign ID.

Automation not triggering

  1. Verify status is Active (not Draft or Paused).
  2. Verify the trigger config matches — e.g. abandoned cart needs to be longer than the wait time you set.
  3. Check subscribers are eligible — status must be "subscribed" and not on suppression.
  4. Check Automations → [flow name] → Runs to see if enrollments are happening.

"Plan selector unavailable" warning

The app needs 5-10 seconds after install to fetch your app handle from Shopify. Wait 30 seconds and reload the app.


13. Support

Include your shop domain and campaign / automation ID when reporting issues — it lets us find the exact record in our logs.


Last updated: July 1, 2026. EC: Email Marketing Automation is a Shopify App Store app by Ecomtrackify.