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
- Quick start (5 steps)
- Connecting an email provider
- Managing subscribers
- Creating a campaign
- Building an automation
- Segmentation
- AI content assistant
- Analytics and attribution
- Billing and plans
- Language and localization
- FAQ
- Troubleshooting
- 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:
| Provider | When to pick it | Free tier |
|---|---|---|
| Amazon SES | High volume, technical merchants | 62,000/month if sent from EC2 |
| SendGrid | Simple setup, marketing focus | 100/day forever |
| Mailgun | Developer-friendly, EU/US regions | 100/day for 30 days |
| Postmark | Best deliverability, transactional | 100/month forever |
| SMTP | Any other provider (Zoho, Fastmail, custom) | Depends on your host |
Setup steps (universal)
- Create an account with the provider and verify your sending domain there (DNS records for SPF, DKIM, DMARC).
- In their dashboard, generate an API key with send permission.
- In the app: Settings → Providers → Add provider → [pick provider].
- Paste the API key (and region for SES/Mailgun).
- 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 import — Subscribers → Import. Upload a UTF-8 CSV. Duplicate emails are skipped (existing row wins). Suppressed emails are silently dropped.
- Manual add — Subscribers → Add subscriber.
- Popup / signup forms — sync from your storefront via Web Pixel (auto-installed on paid tiers).
Subscriber status
| Status | Meaning | Can receive campaigns? |
|---|---|---|
subscribed | Actively receiving | Yes |
pending | Opted in but not confirmed (double opt-in) | No |
unsubscribed | Clicked unsubscribe or received via list-unsubscribe | No — permanent block via suppression |
bounced | Hard bounced 3+ times | No |
complained | Marked as spam | No |
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
- Campaigns → Create campaign.
- Enter a name (internal reference — not shown to recipients).
- Enter the subject (30-60 characters recommended, includes emoji).
- 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:
| Tag | Example 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
| Trigger | Fires when |
|---|---|
| Customer signup | New subscriber joins the list |
| Abandoned checkout | Cart abandoned for N hours (configurable) |
| Post-purchase | Order placed |
| Win-back | Subscriber inactive for N days |
| Birthday | Subscriber's birthday date matches (requires birthday custom field) |
| Manual | Fired 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
- Automations → Create automation.
- Pick a template (Welcome series, Abandoned cart recovery, Birthday coupon, etc.).
- Customize the emails inside each step.
- 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
- Subscribers → Segments → New segment.
- Name it (e.g. "VIP customers").
- 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
- Combine rules with All (AND) or Any (OR) logic.
- 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
- Create an API key with your AI provider of choice.
- Settings → AI. Pick the provider and paste your API key.
- Save. The key is encrypted at rest with AES-256-GCM.
Daily call limits (per shop)
| Plan | Calls per day |
|---|---|
| Free | 5 |
| Starter | 50 |
| Growth | 200 |
| Scale | 1,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
| Plan | Recurring | Subscribers | Automations | Concurrent campaigns |
|---|---|---|---|---|
| Free | $0/mo | 1,000 | 1 | 1 |
| Starter | $4.99/mo | 20,000 | Unlimited | Unlimited |
| Growth | $9.99/mo | 50,000 | Unlimited | Unlimited |
| Scale | $15.99/mo | Unlimited | Unlimited | Unlimited |
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.
| Language | Code | RTL |
|---|---|---|
| English | en | — |
| German | de | — |
| French | fr | — |
| Spanish | es | — |
| Italian | it | — |
| Dutch | nl | — |
| Portuguese (Brazil) | pt-BR | — |
| Japanese | ja | — |
| Korean | ko | — |
| Chinese (Simplified) | zh-CN | — |
| Chinese (Traditional) | zh-TW | — |
| Thai | th | — |
| Arabic | ar | ✓ |
| Indonesian | id | — |
| Vietnamese | vi | — |
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:
- Status is "subscribed" (not "pending" — enable/disable double opt-in in Settings → Subscribers).
- They aren't on your suppression list.
- 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
- Check spam folder first.
- Verify DNS:
nslookup <yourdomain>should return your MX.dig TXT _dmarc.<yourdomain>should return your DMARC policy. - 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).
- 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:
- Check your provider's daily send limit — you may be throttled.
- Check the app's Activity for any error messages.
- Contact support with the campaign ID.
Automation not triggering
- Verify status is Active (not Draft or Paused).
- Verify the trigger config matches — e.g. abandoned cart needs to be longer than the wait time you set.
- Check subscribers are eligible — status must be "subscribed" and not on suppression.
- 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
- Documentation: https://ecomtrackify.com/docs/email-marketing-automation
- Support email: [email protected]
- Bug reports / feature requests: [email protected]
- Response time: 8-24 hours weekdays, 48 hours weekends
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.