# Customer.io vs Wraps - Contact-Based Pricing vs Unlimited Contacts

Source: https://wraps.dev/compare/customer-io-vs-wraps

Customer.io is a marketing automation platform. You rent it, you pay per contact, and they host everything. Wraps puts the same surface on Amazon SES in your own AWS account: one command sets it all up, then one control plane runs it day to day.

Both send lifecycle email from workflows, broadcasts, segments, and templates. The difference is who operates the sending infrastructure, and what it costs when your list grows.

## Everything Amazon SES needs, including operations

Most teams rent a platform like Customer.io because they do not want to deal with SES. That is the part we made easy.

We set everything up

One command deploys the whole SES surface into your AWS account: domain identities and DKIM, EventBridge, SQS with a dead letter queue, Lambda, DynamoDB, and the IAM roles that tie them together. Every resource is namespaced `wraps-email-`, so it coexists with SES you already run and changes nothing you already have.

Wraps reaches your account by assuming a role with an external ID, in one-hour sessions. No AWS access keys are stored anywhere.

The control plane runs it

Amazon can place an account under review once its bounce rate passes 5% and pause sending at 10%, and 0.1% and 0.5% for complaints. The AWS console will not draw your rates against those lines. Wraps does, swept hourly, with owners and admins notified when one is crossed.

Same surface for the rest of the daily job: suppression you can browse and clear, DKIM, SPF, DMARC, and blacklist audits from the CLI, and a per-message event log. Bounces and complaints are suppressed on the way in, wired on at deploy.

## At a Glance

|  | Customer.io | Wraps |
| --- | --- | --- |
| Setup | Sign up, connect a domain, build in their UI. | One command deploys the whole SES surface into your AWS account, non-destructively. |
| Running it day to day | They operate the sending platform. You operate campaigns inside it. | One control plane: bounce and complaint rates swept hourly, suppression, deliverability audits, a per-message event log. |
| Pricing model | Per contact (profile). High-watermark billing. | Flat monthly fee by tier. Unlimited contacts on every tier. |
| Starting price | $100/mo for 5,000 profiles | Free ($0/mo) + AWS SES at $0.10/1K à la carte |
| Infrastructure | Managed SaaS (GCP). They host everything. | SES, DynamoDB, Lambda, and EventBridge in your AWS account. |
| Where the data sits | Customer.io hosts your data. Bulk export requires Premium. | Delivery events in your DynamoDB, retention you set. Contacts, templates, and workflow state in Wraps, exportable anytime. |
| If you leave | Workflows, templates, and data are proprietary. | Standard AWS SES underneath. The sending infrastructure stays. |
| Dedicated IPs | Premium only ($1,000/mo min). | Your SES account (shared default, dedicated available) |

## Sound Familiar?

The objection that comes up most is the pricing model, not the product. Feedback from Customer.io users on Trustpilot and independent reviews.

> “Every five years Customer.io almost doubles their prices with no grandfathering, regardless of whether it works for the business.”

— Trustpilot reviewer, 10-year customer

> “There's nothing Customer.io does that competitors don't do cheaper... I was able to reduce costs by over 3x by moving out.”

— Trustpilot reviewer

> “The pricing model doesn't make sense for growing companies... you pay for all the contacts in your account, regardless of if they're active or not.”

— Encharge pricing analysis

## The Architectural Difference

Customer.io

Your contacts, events, templates, and message history live on Customer.io's infrastructure (GCP). Emails send from their shared or dedicated IP pools. You access everything through their web UI and API.

-   Bulk data export requires Premium tier ($1,000/mo)
-   No self-hosted or BYOC option available
-   Workflows and templates cannot be exported

Wraps

Wraps deploys SES, DynamoDB, Lambda, and EventBridge directly to your AWS account. You own the sending infrastructure and the sending reputation. Wraps is the control plane; your AWS is the data plane.

-   Sending and per-event delivery history stay in your AWS account, at a retention you set in your own deploy config
-   Contacts, templates, broadcasts, workflow state, and a row per message live in Wraps' Postgres, exportable anytime
-   If you stop using Wraps, the infrastructure keeps running
-   Open source, AGPL-3.0, and self-hostable if you want the control plane too

## Pricing at Real Volumes

Customer.io prices by contacts (profiles), not email volume. The table below assumes ~10 emails per contact per month. Customer.io uses high-watermark billing: you pay for the peak contact count during the month, even if you delete contacts later.

| Contacts | Emails/mo | Customer.io | Wraps | You keep |
| --- | --- | --- | --- | --- |
| 1,000 | 10,000 | 
$100/mo

Essentials (5K profiles incl.)

 | 

$1/mo

Free tier + $1 SES

 | 

$99/mo

99% less

 |
| 5,000 | 50,000 | 

$100/mo

Essentials (at profile limit)

 | 

$34/mo

$29 Pro + $5 SES

 | 

$66/mo

66% less

 |
| 10,000 | 100,000 | 

$145/mo

$100 + 5K overage at $0.009/profile

 | 

$39/mo

$29 Pro + $10 SES

 | 

$106/mo

73% less

 |
| 50,000 | 500,000 | 

$505/mo

$100 + 45K overage at $0.009/profile

 | 

$249/mo

$199 Business + $50 SES

 | 

$256/mo

51% less

 |
| 100,000 | 1,000,000 | 

$955/mo

$100 + 95K overage at $0.009/profile

 | 

$299/mo

$199 Business + $100 SES

 | 

$656/mo

69% less

 |

Wraps pricing: Free ($0/mo), Pro ($29/mo), Business ($199/mo) — a flat monthly fee by tier, not by contact or event volume. AWS SES costs $0.10 per 1,000 emails on à la carte (AWS defaults new accounts to $0.16), paid directly to AWS. [Calculate your exact costs](https://wraps.dev/tools/ses-calculator)

## Feature Comparison

| Feature | Customer.io | Wraps |
| --- | --- | --- |
| Sending |
| Transactional email |  |  |
| Broadcast / marketing email |  |  |
| SMS | Premium+ only, pricing not public |  |
| Push notifications |  |  |
| In-app messaging |  |  |
| Templates & DX |
| Code-first templates (React Email) |  |  |
| Template editing | Drag-and-drop editor | AI designer + code editor |
| TypeScript SDK | JS with types bolted on | TypeScript-first |
| CLI tooling |  |  |
| Local development workflow |  |  |
| Automation |
| Visual workflow builder |  |  |
| Workflow node types | Email, SMS, push, in-app, webhook, delay, condition | Email, SMS, delay, condition, wait-for-event, update contact, topic mgmt |
| Workflows-as-code (CLI) |  | TypeScript DSL, Git-versioned |
| AI workflow generation |  |  |
| A/B testing |  |  |
| Segmentation | Behavioral segmentation with a built-in CDP | Nested AND/OR filters on attributes, topics, and events (triggered, not triggered, within N days) |
| Event-driven workflows |  |  |
| Broadcasts and scheduled campaigns |  |  |
| Topics and hosted preference centre |  |  |
| Operations |
| Who owns the sending reputation | Customer.io, on their IP pools | You, on your own SES account |
| Bounce and complaint rates against AWS's review and pause lines | Not applicable | Swept hourly, owners and admins notified |
| CloudWatch alarms in your own AWS account | Not applicable | Production and Enterprise presets, off for Starter. Bounce warns at 2%, complaint at 0.05%, well under AWS's lines. Email or webhook. |
| Suppression list you can browse and clear | Theirs, inside their platform | Your SES account-level list, wired on at deploy |
| DKIM, SPF, DMARC, and blacklist audits | They manage deliverability for you | On demand via the CLI |
| Per-message event log |  |  |
| Inbound email | Not documented |  |
| Infrastructure & Data |
| Unlimited contacts |  |  |
| Dedicated IPs | Premium+ only ($1K/mo min) | Available via SES (all tiers) |
| Sending infra in your cloud account |  |  |
| Self-hosted / BYOC |  |  |
| No vendor lock-in |  |  |
| Integrations & Ecosystem |
| Native integrations (100+) |  |  |
| Data warehouse sync | Premium+ only | Events in your DynamoDB, contacts exportable |
| Webhook support |  |  |
| Send rate ceiling | Their platform's published API rate limits | Your own SES quota, raised by asking AWS |
| Python SDK |  |  |
| MCP server for coding agents | Not documented |  |

## When to Choose Customer.io

Customer.io is a marketing automation platform, not just an email sending service. It is the better choice when:

-   A non-engineer owns email day to day. Customer.io is easier to operate without a developer, and that is worth paying for.
-   You have no AWS account and no appetite for one. Wraps deploys into your AWS; if that is not on the table, this is a different approach.
-   You need multi-channel orchestration across email, SMS, push, and in-app on a single workflow canvas
-   A built-in CDP and its behavioral segmentation are core requirements
-   You want 100+ native integrations with tools like Salesforce, HubSpot, Segment, and ad networks
-   A/B testing on campaigns and workflows is critical to your marketing strategy
-   You need a dedicated CSM, a structured onboarding program, and enterprise support SLAs

Wraps has no A/B testing. If split-testing subject lines and workflow branches is how your team works, that gap is real.

## When to Choose Wraps

Wraps runs the full lifecycle surface on SES in your own AWS account: workflows, broadcasts, segments, templates, topics, and a hosted preference centre. It is the better choice when:

-   You want SES but not the setup. One command deploys the identities, event pipeline, and IAM roles into your AWS account without touching anything already there.
-   You want someone watching the account. Bounce and complaint rates are drawn against the lines AWS reviews and pauses at and swept hourly, with suppression, deliverability audits, and a per-message event log on the same surface.
-   Contact-based pricing is punishing your growth. Large lists with many inactive contacts cost the same as small ones here.
-   Your team is developer-led and prefers code-first templates in React Email over drag-and-drop editors
-   You want workflows you can version-control. There is a visual flow builder, and a TypeScript CLI that defines, validates, and pushes the same workflows from code.
-   You need dedicated sending IPs without moving to a premium tier to get them
-   You want the sending infrastructure to keep running if you leave the platform

## Switching from Customer.io

Migration from Customer.io to Wraps is straightforward on the infrastructure side because Wraps deploys fresh SES infrastructure to your AWS account. No conflicts with your existing setup.

1

Export your contacts

Export profiles from Customer.io via CSV or API, then import them into Wraps. Contacts are unlimited on every tier, so list size does not change the bill.

2

Set up Wraps

Run \`npx @wraps.dev/cli email init\`. It deploys SES, DynamoDB, and the event pipeline to your AWS account, namespaced so nothing existing is touched. DNS verification uses CNAME records, so there is no conflict with Customer.io's subdomain records. If the account is still in the SES sandbox, init says so and links the production access request.

3

Rebuild templates

Migrate from Liquid templates to React Email via the @wraps.dev/email SDK. For developer teams, this is typically an upgrade in DX.

4

Switch sending

Replace Customer.io API calls with the Wraps SDK. Warm up your new SES sending identity over 1-4 weeks by gradually increasing volume.

What you keep: domain reputation, which travels with your domain rather than the provider, plus the contact data and event history you export. What you lose: Customer.io's built-in CDP, push and in-app channels, A/B testing, and their 100+ native integrations. Workflows, broadcasts, segments, templates, and topics all have a home in Wraps.

[

Not sure it comes down to these two?

We also rank 11 Customer.io alternatives, prices included, with Wraps placed where it honestly belongs.

](https://wraps.dev/alternatives/customer-io)

## Also Compare

[

Resend vs Wraps

Same DX, different economics

](https://wraps.dev/compare/resend-vs-wraps)[

Amazon SES vs Wraps

Same infrastructure, better DX

](https://wraps.dev/compare/amazon-ses-vs-wraps)[

SendGrid vs Wraps

Escape the legacy tax

](https://wraps.dev/compare/sendgrid-vs-wraps)[

Postmark vs Wraps

Beyond transactional sending

](https://wraps.dev/compare/postmark-vs-wraps)[

Klaviyo vs Wraps

Up to 5.6x cheaper at scale

](https://wraps.dev/compare/klaviyo-vs-wraps)[

Mailgun vs Wraps

Your infra, AWS pricing, no suspensions

](https://wraps.dev/compare/mailgun-vs-wraps)[

Hand-rolled bounce handling vs Wraps

152 honest lines, and what they don't cover

](https://wraps.dev/compare/ses-bounce-handling-hand-rolled-vs-wraps)

## Everything Amazon SES needs, including operations

One command sets up your AWS account. One control plane runs it. Unlimited contacts on every tier, AWS pricing underneath.

[Get Started Free](https://wraps.dev/docs/quickstart)[Calculate Your Costs](https://wraps.dev/tools/ses-calculator)

Last updated: September 2026. Customer.io pricing and features sourced from [customer.io/pricing](https://customer.io/pricing) and [docs.customer.io](https://docs.customer.io).

See something inaccurate? [Let us know](mailto:support@wraps.dev) and we will fix it.
