# Amazon SES vs Klaviyo

Source: https://wraps.dev/versus/amazon-ses-vs-klaviyo

Klaviyo sells attributed revenue to an ecommerce marketing team. SES sells delivery to a program. Comparing their prices is comparing a salary to a utility bill, and most teams that run this comparison end up using both.

People arrive at this comparison holding a Klaviyo invoice and a memory that SES costs almost nothing, and the arithmetic looks irresistible. It is also mostly wrong, because the two products are not selling the same thing. Klaviyo's product is attributed revenue: it knows what a customer bought, segments on it, and tells a marketing team which campaign paid for itself. SES delivers bytes. You can build a campaign tool on SES; what you cannot cheaply build is the data model and the attribution that made the invoice feel worth paying in the first place.

## At a glance

|   | Amazon SES | Klaviyo |
| --- | --- | --- |
| What it is | Raw sending infrastructure from AWS | Ecommerce marketing automation |
| Published pricing | $0.10 per 1,000 emails on à la carte. New accounts are defaulted to the Essentials plan at $0.16 per 1,000; Pro is $105/mo + $0.22 per 1,000 and Enterprise $500/mo + $0.23 per 1,000. Plans are per-account, per-Region. | $30/mo at 1,000 profiles, $100 at 5,000, $150 at 10,000, $720 at 50,000, and $1,380 at 100,000 — an effective $0.014–0.030 per profile per month. |
| Best for | Teams already on AWS with an engineer willing to own the plumbing. | Ecommerce, especially Shopify, where per-campaign revenue attribution is the metric. |
| Watch out for | Production access is an application AWS can refuse, and new accounts start sandboxed to verified addresses. No dashboard, no templates, and nothing stores your events until you build it. | Bills all active profiles since February 2025 and auto-upgrades without ever auto-downgrading. Volume is capped at ten times your profile count and sends halt past it. |

Prices are each vendor's published list prices, verified August 2026. Check the vendor's own page before you sign anything.

## Where they actually differ

### What each one actually knows about a customer

Amazon SES

Nothing. SES has no concept of a person, a profile, an order or a purchase. It has verified identities and destination addresses, and if you want to send to everyone who bought a specific product and has not returned in ninety days, that query runs in your database and the result is a list you feed to a send loop. The sending is trivial; the segmentation is a system you already have or a system you are about to write.

Klaviyo

A profile per customer, populated by an ecommerce integration, carrying orders, browsing behaviour, lifetime value and campaign history. Segments are built against that in a UI by someone who cannot write SQL, and they update themselves. This data model is the product. The email sending attached to it is comparatively ordinary and is not why anyone chooses Klaviyo.

### Revenue attribution, which is the actual purchase

Amazon SES

SES reports deliveries, bounces, complaints, opens and clicks if you configure event publishing. It has no idea whether any of that produced a sale, because it has no idea what a sale is. Connecting mail to revenue means joining your event stream to your orders table and building the report, which is an ordinary data engineering task and is nobody's favourite quarter.

Klaviyo

Attributed revenue per campaign and per flow, out of the box, against a configurable attribution window. This is the number a marketing team defends its budget with, and it is the reason the invoice survives review. Whether the attribution is generous is a fair argument to have; that it exists as a first-class report, produced without a data team, is not really arguable.

### How the bill is calculated, and the trap inside it

Amazon SES

Per message sent. A dormant customer costs nothing until you mail them. A list of a million people you never contact is free. That property is unusual in this comparison and it is the strongest financial argument on the SES side, particularly for a business with a long tail of one-time buyers who will never open anything again.

Klaviyo

Per active profile, billed on everyone in the account rather than only the people you mail, and the definition of active broadened in February 2025. The plan auto-upgrades as profiles accumulate and never auto-downgrades, so a list that grew during a promotion keeps charging after the promotion ends until somebody manually suppresses or deletes profiles. List hygiene is a billing activity here, not just a deliverability one.

### The ceiling nobody reads until it stops them

Amazon SES

SES has a sending rate and a daily quota, both of which start conservative and both of which AWS raises on request while your bounce and complaint rates stay healthy. The ceiling moves when you ask. A large seasonal push is planned a week ahead as a quota increase, not as a plan change, and the cost of the push is exactly proportional to its size.

Klaviyo

Volume is capped at roughly ten times your profile count, and sending halts when you cross it. For most ecommerce patterns this is generous and invisible. For a business that mails a small, extremely engaged list frequently — a membership, a daily deal, a back-in-stock heavy catalogue — it is a hard stop that can only be lifted by paying for more profiles than you have customers, which is a strange shape to discover mid-campaign.

### Flows, and what building them yourself would mean

Amazon SES

There is no automation in SES whatsoever. An abandoned-cart sequence on SES is a state machine you write: an event source, a scheduler, a suppression check at send time, an exit condition when the order completes, and a way for a marketer to change the copy without a deploy. None of it is difficult and all of it is real, and the version that exists after one sprint is the version that mails people who already bought.

Klaviyo

Flows are the half of Klaviyo that quietly earns the money — abandoned cart, browse abandonment, post-purchase, winback — built in a visual editor, with the exit conditions and timing handled. A marketing team changes them without engineering involvement. This is the capability most likely to be underestimated by someone modelling a migration from the sending cost alone.

### Who operates it day to day

Amazon SES

An engineer, always. Every change to what is sent, to whom and when is a code change, a deploy and a review. That is genuinely the right arrangement for transactional mail, where you want exactly that level of control. It is the wrong arrangement for promotional mail, where the person with the ideas is not the person with commit access and the round trip kills the tempo.

Klaviyo

A marketer, entirely. Campaigns, segments, flows, subject lines, send times and reports are all theirs, and engineering's involvement ends once the integration is connected. For a business where marketing moves faster than the release cycle, this independence is the product benefit even more than the features are.

### Deliverability, and who is responsible for it

Amazon SES

You are, alone. Your reputation, your bounce rate, your complaint rate, your DMARC reports, your warming schedule. The isolation is real and cuts both ways: no neighbour can hurt you and nobody will notice your problem for you. Ecommerce list practices — purchased lists, aggressive popup capture, resurrecting three-year-old customers — are exactly the practices that damage a reputation, and on SES the damage is entirely yours.

Klaviyo

Klaviyo's shared infrastructure, with a deliverability function that monitors it and a commercial interest in keeping the pool clean. Being on a pool with other ecommerce senders during the same seasonal peaks is a mixed blessing, and Klaviyo actively polices sending practices for that reason. For a merchant with no in-house expertise this is a real service, and it is invisible until you leave.

### The arrangement most teams actually land on

Amazon SES

SES for transactional — order confirmations, shipping notices, password resets, receipts — where the volume is high, the content is generated by code, the placement requirement is strict and the marketing features are irrelevant. This traffic is often the majority of messages and a small minority of the marketing bill, which makes it the cheapest thing to move and the least disruptive.

Klaviyo

Klaviyo for campaigns and flows, where the segmentation and the attribution are the whole point. Splitting this way keeps each workload on the tool shaped for it and reduces the profile count Klaviyo bills for, since transactional-only recipients no longer need to be profiles. Use separate subdomains so the reputations stay independent, and accept that you now reconcile two views of who unsubscribed.

## Pros and cons, side by side

### Amazon SES

Strengths

-   A shopper who bought once in 2021 and will never open anything again is free to keep, because the meter counts messages rather than people.
-   The sending rate and daily quota rise on request while your bounce and complaint numbers stay healthy, so a seasonal push is a ticket rather than a plan change.
-   Delivery events can be published to your own storage on your own retention schedule, which is what makes joining mail to orders a query rather than a vendor report.
-   Reputation sits inside an AWS account you keep, so replacing whatever composes the messages above it never restarts the warm-up.

Trade-offs

-   There is no concept of a person, an order or a purchase, so every segment that Klaviyo evaluates continuously becomes a query somebody has to write and schedule.
-   Nothing in SES knows what a sale is, so attributed revenue — the number that defends a marketing budget — has to be reconstructed by joining an event stream to an orders table.
-   Abandoned cart, browse abandonment and winback are not features that are weaker here; they are absent, and the state machine behind each one is a real project.
-   A new identity starts cold and the ecommerce list practices that inflate a store's list are exactly the ones that damage an isolated reputation fastest.

### Klaviyo

Strengths

-   The profile carries orders, browsing and lifetime value straight from the store integration, so a segment like bought twice and lapsed is a UI action rather than a data project.
-   Revenue attributed per campaign and per flow exists as a first-class report, produced without a data team, which is why the invoice survives review.
-   Flows do the majority of the per-message work in most stores, and they run continuously without anybody remembering to schedule them.
-   Sending practices are policed by a vendor with a commercial stake in the pool staying clean, which is a real service for a merchant with no in-house expertise.

Trade-offs

-   The meter counts active profiles across the account rather than the people you actually mail, and the plan ratchets upward across thresholds while never stepping back down.
-   Monthly volume is capped near ten times the profile count, so a small devoted list mailed frequently can only buy headroom by paying for profiles it does not have.
-   The attribution series that justified the spend is computed inside the platform's data model, so it leaves as a table of numbers rather than as something another tool can reproduce.
-   Everything valuable depends on the store integration continuing to sync, which makes the platform harder to leave than the monthly figure suggests.

## Pick in thirty seconds

### Choose Amazon SES if

-   The mail in question is transactional — receipts, shipping, resets — where code generates the content and no marketer needs to touch it.
-   A long tail of dormant customers is inflating a profile-based bill for people you have no intention of emailing.
-   You need to mail a small, highly engaged list far more often than a profile-count multiplier would allow.
-   Your team already has the customer data model and the reporting, so what you need from a vendor is delivery rather than a database.

### Choose Klaviyo if

-   A marketing team needs to segment on purchase behaviour and see attributed revenue without asking a data team for anything.
-   Abandoned-cart, browse-abandonment and post-purchase flows are the mechanism, and rebuilding them is a quarter you do not have.
-   The person who writes the emails does not have commit access and should not need it.
-   Nobody in-house owns deliverability, and a vendor whose commercial interest is a clean sending pool is worth paying for.

## What actually moves when you switch

In roughly the order you would do it. The expensive parts of an email migration are never the send call.

1.  Split the traffic before you cost the move, because only one half of it can travel. Order confirmations, shipping notices and receipts are high volume, code-generated and indifferent to segmentation, and they move to SES in a sprint. Campaigns and flows are a customer data model with attribution attached, and moving those is a quarter of engineering that usually ends back where it started.
2.  Suppress rather than delete while the profile count is still the billing meter. Klaviyo bills on active profiles and the plan steps up without stepping back down, so the first useful action is not a migration at all — it is suppressing shoppers who have not engaged in a year and seeing what the invoice does. Teams that skip this step frequently discover the platform was never the expensive part.
3.  Export the three suppression states separately and understand that only two of them have anywhere to land. Klaviyo distinguishes people who unsubscribed, people you suppressed by hand and addresses that bounced or were judged invalid. SES keeps bounces and complaints and has no representation of an unsubscribe, so that third group becomes a table you own and check at send time or it becomes a compliance incident.
4.  Snapshot the attributed revenue series before the account closes. The per-campaign and per-flow revenue numbers are computed inside Klaviyo's own model against a configurable attribution window, and what exports is the output rather than the mechanism. If anyone reports that series to a board quarterly, the last export you take is the last comparable figure you will ever have, because the replacement report will draw its own window differently.
5.  Decide where the store event stream lands. The integration is bidirectional — orders, browse events, back-in-stock interest all flow in and campaign engagement flows back — and nothing in SES consumes any of it. Either that stream terminates in your own warehouse from the day of the cut, or the segmentation you were relying on quietly stops being computable a week later with nobody noticing.
6.  Replace the hosted signup forms and popups, which are doing more than they appear to. They capture the address, write the profile, timestamp the consent and start the welcome flow in one action. On the other side that is a form on your site, a row in your database, a consent record you can produce on request and a trigger you wrote. Leaving them live on a cancelled account is how you collect addresses into nothing.
7.  Set up DKIM on your own domain and run both senders in parallel through a full campaign cycle. Klaviyo signs through domains it manages via records you delegate; SES signs with keys on identities in your account. Because the two do not share reputation, a sudden cutover arrives at the mailbox provider as a brand new sender behind a familiar domain, which is the exact pattern that gets throttled during a peak week.
8.  File for SES production access early and answer it with the work above. The sandbox application asks how addresses were collected and what happens to a bounce, which are precisely the questions the suppression export and the form replacement have just forced you to answer properly. Doing it in that order turns an unpredictable gate into a short one.

## Questions to ask before you sign

Put these to a sales rep, or find the answer in the documentation before anyone quotes you a number.

1.  How much of our profile count is shoppers we have no intention of contacting again, and what happens to the invoice if we suppress them this week?
2.  Which specific flows are earning their keep, and has anyone measured them against campaigns per message rather than in total?
3.  If the attributed revenue report stopped existing tomorrow, who would notice and what would they use instead?
4.  Is our monthly volume anywhere near ten times our profile count, and do we know what happens the day it crosses?
5.  Who would own segmentation once it becomes a query, and are they the same person who currently builds audiences?
6.  What is the transactional share of our total messages, and what would moving only that do to both the bill and the profile count?
7.  Are we within eight weeks of our busiest season, and is that a period in which anybody should be warming a new sender?

## Common questions

### Can I actually replace Klaviyo with SES?

Only if you replace the parts of Klaviyo you use with something, and for most merchants that means building a segmentation engine, a flow engine and an attribution report on top of SES. The sending is the easy tenth. Teams that try this usually finish the sending in a week, produce a campaign tool in a quarter that the marketing team refuses to use, and end up back on a marketing platform with a year of work behind them.

### Why did my Klaviyo bill go up when I did not send more?

Because it is charged on active profiles rather than on sends, and the definition of active broadened in February 2025. Profiles accumulate from signups, from checkout, from integrations, and the plan auto-upgrades as the count crosses each threshold while never auto-downgrading when it falls. Suppressing or deleting profiles you will never mail is a billing action here, and it is the first thing to do before concluding the product is too expensive.

### What is the ten-times sending limit?

Klaviyo caps monthly email volume at roughly ten times the number of profiles your plan covers, and sending stops once you cross it. Most ecommerce patterns never approach it. The businesses that do are the ones mailing a small, devoted list frequently — memberships, daily deals, back-in-stock alerts — and their only route past the cap is paying for more profiles than they have customers, which is worth discovering before a peak season rather than during one.

### Can I send transactional email through Klaviyo?

There is a transactional path, and it is not what the product is optimised for. Order confirmations and shipping notices are frequently routed through a platform or an ecommerce host instead, and password resets almost always live elsewhere. The more common split is transactional on a cheap reliable sender and campaigns on Klaviyo, which also lowers the profile count you are billed for because transactional-only recipients no longer need to be profiles.

### If I move transactional email to SES, will my marketing deliverability change?

It can, and you should plan for it deliberately. Transactional mail has high engagement and contributes positively to a domain's reputation, so removing it from one sender and adding it to another shifts the signal both ways. Use separate subdomains so the two reputations are genuinely independent, warm the new SES identity gradually, and do not make this change in the four weeks before your busiest season.

### Does my attributed revenue history come with me?

The numbers export; the method does not. Attribution is computed inside the platform against a window you configured, joining campaign engagement to orders it learned about through the store integration, and no other system will reproduce that arithmetic from a spreadsheet of totals. Take a final export covering as long a period as the account will give you, and expect the first report you build afterwards to disagree with it — not because either is wrong, but because you will have chosen a different window and a different definition of a touch.

### What happens to my signup forms if I leave?

They stop, and they were doing four jobs rather than one. A hosted form captures the address, creates the profile, records when consent was given and triggers the welcome sequence. Move the capture to your own site before the account closes, write the consent timestamp somewhere you could produce it if asked, and have the welcome sequence working on the new sender first. Teams that cancel before this is done keep collecting addresses through embedded forms that write into an account nobody is paying for.

### How do I rebuild abandoned cart on SES?

As a state machine, and the honest inventory is longer than it sounds. You need the cart event, a delay that survives a deploy, per-shopper state so a restart does not send twice, an exit condition that fires the moment the order completes, a suppression check immediately before sending, and alerting for the week the job silently stops. The first version runs in about a week. The version that does not email people who already bought is a great deal further out, and that failure is visible to customers.

### Is it worth moving only order confirmations?

Frequently yes, and it is the move most merchants should evaluate before any other. Confirmations and shipping notices are often the majority of messages and a minority of the value the platform provides, so shifting them cuts the sending cost and can cut the profile count as well, because recipients who only ever received transactional mail no longer need to exist as profiles. Do it on a separate subdomain, warm it gradually, and keep the marketing programme exactly where it is while you measure the result.
