Customer.io cost vs self-hosted Dittofeed

Customer.io bills by profiles and email volume, while self-hosted Dittofeed has no license fee but shifts cost to servers, email and SMS providers, migration and the engineers who run it. This page shows how to model both sides with your own numbers.

On this page

Does self-hosting Customer.io's replacement cost less?

Dittofeed is MIT licensed and describes itself as free forever, so the license line on your Customer.io invoice disappears. What replaces it is not zero. You take on the servers and database that run Dittofeed, the email and SMS provider fees that Dittofeed does not absorb (it integrates with providers such as SendGrid and Amazon SES rather than sending mail itself), the one-time cost of migrating profiles, segments, journeys and templates, and the engineering time to operate, upgrade and back up the platform. Customer.io charges by profiles and email volume. Dittofeed states that self-hosting avoids volume-based pricing, so the variable part of your bill moves from the vendor's meter to your own infrastructure and provider contracts, where it grows with the data you choose to run. The net result depends on three inputs you have to supply: how many profiles you hold and how many of them are reachable on each channel, how many messages and events you send per month, and how many engineers already know how to run Postgres, container platforms and a message pipeline. A low-volume team with spare platform capacity may come out ahead. A team with few internal skills may find that engineering time outweighs the license saving. No honest price comparison is possible without your own figures. Pull last year's Customer.io invoices, your provider usage reports and a realistic count of the engineer hours your platform team spends on messaging, then ask Customer.io and your provider for the numbers that apply to you. Before you commit, ask for a written quote from DeployOpen based on your scope, and confirm the open items with Dittofeed directly. Its GitHub releases are pre-release tags, with v0.24.0-alpha.21 published on October 4, 2026, so check how the project treats upgrades and support for production use before you set a support budget. Treat the migration and the first months of parallel running as a one-time cost, and treat hosting, provider fees and on-call coverage as recurring costs in your model.

Which cost components appear on each side

This table sets each cost component on the Customer.io side against the self-hosted Dittofeed side, with its timing and main driver. Use it to see which costs stay with a vendor and which move to your own budget. The main takeaway is that Dittofeed removes the license and volume-based subscription, but it adds recurring hosting, provider and engineering costs that you must budget for.

Cost componentCustomer.ioDittofeed (self-hosted)One-time or recurring
Platform license or subscriptionPlan fee set by profiles and email volumeNo license fee. Dittofeed is MIT licensed and describes itself as free foreverRecurring on Customer.io, driven by profile count and volume
HIPAA supportTied to the Premium plan. Confirm current terms in writingDepends on your own controls and on terms from each provider you useRecurring plan cost on Customer.io. One-time evidence work on Dittofeed
Email sending (SendGrid or Amazon SES)Confirm whether sending volume is included in your planPaid directly to SendGrid or Amazon SES, which Dittofeed connects toRecurring, driven by message volume
SMS and WhatsApp provider feesConfirm whether these channels are billed separatelyPaid directly to your SMS or WhatsApp providerChannel setup is one-time. Messages are recurring, driven by volume
Servers and databasesNone. Hosting is part of the subscriptionCompute and database for your VPC or cloud account, sized by users and eventsRecurring, driven by user count and event throughput
Implementation and data inputInternal effort to set up event tracking and rebuild templatesDeployment, identity setup, data input through Segment, reverse ETL or the API, and templates in HTML or MJMLOne-time. A fixed-scope services quote applies if you hire a partner
Migration of people, journeys and templatesExport covers people and attributes as CSV. Confirm what else you can exportRebuild segments and journeys, then run both systems until messages matchOne-time on both sides. Journeys and templates usually need manual rebuilding
Upgrades, patching and supportIncluded in the subscription. Confirm the support tier you needYour team or a retainer covers upgrades. Releases are pre-release alpha tags, such as v0.24.0-alpha.21 published on October 4, 2026Recurring. Driven by release frequency and how much testing you run
Internal engineering timeLower. Mostly campaign configuration and operationsEngineers to run, monitor, back up, secure and maintain the stackRecurring. Driven by staffing model and how much you self-manage

What moves the comparison most

Customer.io bills on profiles and message volume, while self-hosted Dittofeed carries no license fee and its costs follow infrastructure, provider fees and the people who run it. The factors below decide which side grows faster as your program expands, so size each one against your own numbers before you request a quote.

Profile count and growth

Customer.io prices its plans by the number of profiles you store, so every new customer record raises the subscription even when messages stay flat. Dittofeed is free to self-host and avoids volume-based pricing, so profile growth shows up instead as database storage, compute and segment evaluation load on your own servers. Ask your team for the current profile count and its growth rate over the last year, then model both curves before choosing a path.

Email and SMS message volume

Message volume affects two bills at once: Customer.io's plan tier and the fees your email and SMS providers charge Dittofeed for sending. Dittofeed integrates with providers such as SendGrid and Amazon SES rather than sending email itself, so a self-hosted program still pays per message to the provider, and that cost is the one most teams underestimate. Confirm your monthly send counts by channel and each provider's current rate card.

Number of channels in use

Dittofeed supports email, mobile push, SMS, WhatsApp and Slack, and each channel you add needs its own provider account, credentials, templates and delivery monitoring. Customer.io also charges differently by channel, so list which channels you use today and which you plan to add within the next contract term. Each extra channel adds integration work at setup and ongoing support work after go-live.

Journeys and segments

Complex automated journeys and large segment logic increase compute and database load on a self-hosted Dittofeed deployment, and they also increase the testing and migration effort. Rebuilding journeys is usually a one-time cost, while the ongoing cost depends on how often your team edits them. Count active journeys, segments and templates, and identify which ones depend on Customer.io-specific features that must be rebuilt rather than copied.

Availability and data residency

If you require HIPAA coverage or a fixed data region, check which Customer.io plan provides it and what it costs to keep it, because the hosted price for that tier can change the comparison sharply. Self-hosting keeps sensitive personal data inside your own VPC, but it also moves uptime, backups and regional controls onto your team. Ask Customer.io in writing which plan and region terms apply, and map your own availability targets to a self-hosted operating model.

Existing container and hosting skills

Dittofeed documents Docker Compose and Render deployments and ships Helm charts in its repository, so the fastest path depends on what your team already runs. A team with Kubernetes operations experience can absorb the platform into existing clusters, while a team without that skill will pay for training or outside support. Inventory who on staff can operate databases, upgrades and monitoring, because that labor is the largest recurring cost in a self-hosted setup.

How to build the cost model with your own numbers

This sequence turns your current Customer.io bill and sending habits into a side-by-side cost model for self-hosted Dittofeed, with each component priced by its owner. The output is a set of scenarios you can take to finance and to implementation partners for written quotes.

  1. Export your current profile and volume data

    Pull your own figures from the Customer.io account: the number of people profiles you are billed for, and monthly send volumes for email, push and SMS over the last several billing periods. Ask the account owner to confirm which profiles the invoice counts, since the billing definition is the one you will compare against. Done when you have a dated table of profiles and sends per channel, with the source of each number recorded next to it.

  2. List every channel and integration in use

    Walk through each campaign and journey with the marketing and product owners and record the channels it uses: email, mobile push, SMS, WhatsApp or Slack. Also note which data sources feed Customer.io today, such as Segment, reverse ETL or direct API calls, because each one carries its own engineering cost after migration. Done when every active journey maps to a channel list and a data source, and the list is signed off by the team that owns each journey.

  3. Price the provider fees you already pay

    Dittofeed sends through your email and SMS providers rather than sending messages itself, so those fees stay in the model. Collect the current contracts or invoices from SendGrid, Amazon SES and your SMS vendor, and note the unit price, any monthly minimum, and the volume tiers that apply to your sends. Ask each provider to confirm whether a change of sending account or IP warm-up would affect rates. Done when each provider's cost is expressed per message or per month for the volumes in step one.

  4. Estimate hosting in your own VPC

    Dittofeed documents Docker Compose and Render deployments, and Helm charts are in its repository, so the hosting cost depends on which path your platform team will use. List the compute, PostgreSQL database, storage, backup, monitoring and network components in your own cloud account, and price each one from your provider's current rate card. Ask your infrastructure team to confirm the sizing for your expected event volume, because it is not set by the license. Done when you have a monthly hosting estimate for production and a separate one for staging, each itemized by component.

  5. Add migration and parallel-run effort

    Migration covers exporting people and attributes, repointing event tracking, rebuilding segments and journeys, connecting the email and SMS providers, and running both platforms until messages match. Plan these as one-time costs and ask a delivery partner or your own team to estimate each task in writing. Parallel running adds cost because you pay for Customer.io and the new stack for the same period. Done when every migration task has an owner, an estimate source, and a parallel-run period agreed with the business.

  6. Assign internal engineering allocation

    Dittofeed is an open-source project whose recent GitHub releases are pre-release tags, so someone in your organization must own upgrades, incidents, template changes and vendor-neutral support. Estimate the share of named engineers' time for build, run and change work, and record it as a recurring cost at your internal loaded rate. Include security patching and backup testing, which you carry directly when you self-host. Done when each role has a time allocation in hours or percent per month and a named owner.

  7. Model three scenarios and request written quotes

    Build a low, expected and high scenario by varying profile count, send volume and the engineering allocation, keeping the one-time and recurring costs separate. Ask at least two implementation firms for a written fixed-scope quote that matches your component list, and ask Customer.io to confirm its current plan terms for your profile count and any HIPAA requirement. Use the scenarios to test where the break-even point falls for your organization. Done when the model shows total cost over a fixed period for each scenario, every line cites its source, and the quotes are attached.

Where provider fees and infrastructure stay on your bill

Moving to Dittofeed does not remove the sending bill. Dittofeed integrates with email service providers such as SendGrid and Amazon SES rather than sending email itself, so the per-message charges that Customer.io currently bundles into its plan become invoices you pay directly to your provider. Confirm the provider's pricing tiers, sending limits and any dedicated IP or SMS sender fees with your account team before you model the switch, and keep those lines in the total cost of ownership from day one. The provider invoice is the cost most often forgotten in a comparison.

Infrastructure is the second recurring line. Dittofeed runs as a set of services backed by a database, and the Docker Compose and Render deployments, along with the Helm charts in the repository, describe what you host. Each of these is a compute, storage and backup cost that grows with the deployment: more environments for staging and production, higher event throughput, longer retention and redundancy for recovery. Ask your cloud or data center team to price the servers, managed or self-run databases, load balancing, monitoring and backups for your target architecture, and to state which of these are one-time setup and which recur monthly.

Dittofeed states that self-hosting avoids volume-based pricing, which is the core of the cost argument. That is a statement about the pricing model, not a guarantee of a lower total. Your infrastructure and provider costs still rise with message volume, and the saving depends on your profile count, send volume and how much engineering time the hosting requires. Build two scenarios from your own numbers, one at current volume and one at the volume you expect in two years, and compare each against a Customer.io quote for the same profiles and sends. Both must include the provider fees, not only the platform line.

Costs teams forget on each side

The Customer.io subscription is only one line in the comparison. Migration overlap, data export work and add-ons sit on the commercial side, while operations, testing and deliverability sit on the self-hosted side. Price both columns with the same list before comparing totals.

Contract overlap during migration

Customer.io is usually billed on an annual or monthly term, so the old contract keeps running while Dittofeed is built and tested. Running both platforms in parallel means paying for profiles and sends twice until messages match. Ask Customer.io for the notice period and any early termination terms in writing before you set a cutover date.

Data export effort

Customer.io exports people and attributes as CSV, filtered by segment, but journeys and templates do not come with the export. Someone must rebuild those in Dittofeed, and the time for that work depends on how many journeys and templates the account holds. Estimate it from an inventory of active campaigns before budgeting.

Paid add-ons and feature tiers

Some Customer.io capabilities, such as HIPAA support on the Premium plan, sit in higher tiers and can change the base price. Check which features your current workflows depend on and whether they are included in the plan you would renew. Compare those against what your Dittofeed setup needs on its side.

On-call coverage

A self-hosted messaging stack needs someone to respond when sends stop, queues back up or the database fails at night. Hosted Customer.io moves that responsibility to the vendor, so this cost is new to your team. Decide who carries the pager, and whether a retainer or in-house rota covers it.

Backups and restore testing

Dittofeed's data sits in your own databases, so backups become your job. A backup that has never been restored is not evidence of recovery, so budget engineering time for scheduled restore tests into a separate environment. Confirm the database backup tooling and retention you will use.

Upgrades across pre-release tags

Dittofeed's recent GitHub releases are pre-release tags, so upgrades can include breaking changes. Each upgrade needs a staging rollout, a check of journeys and templates, and a rollback plan. Read the release notes for each tag you adopt and schedule the time for this work every release cycle.

Testing campaigns in CI

Dittofeed provides a testing SDK for checking campaigns in CI and keeps email templates in git, which moves testing work onto your engineers. Writing and maintaining those tests is a recurring cost, and it replaces some manual review that a hosted editor would handle. Ask who will own the test suite and what it covers.

Deliverability and bounce handling

Dittofeed integrates with providers such as SendGrid and Amazon SES rather than sending email itself, so provider fees, sending domain setup and bounce, complaint and suppression handling are your responsibility. Confirm how bounces and unsubscribes flow back into Dittofeed, and who monitors sender reputation.

Security hardening

Self-hosting keeps sensitive personal data inside your VPC, but the hardening work moves to you: network controls, secrets handling, access reviews and patching of the underlying hosts. Include a penetration test or configuration review in the plan if your data classification requires it. Ask for a scoped security review before go-live.

What an alpha-stage project means for your budget

Keeping Customer.io means the vendor operates the messaging infrastructure, applies its own platform updates and carries the uptime work. Your budget is mostly a recurring subscription that moves with the number of profiles and email volume, plus any higher tier that includes features you need. Internal effort stays smaller, but it does not disappear, because your team still builds journeys, maintains data pipelines and manages sending domains.

  • Recurring subscription: Cost follows profiles and email volume, so growth in either raises the bill without any change to your architecture.
  • Feature tiers: Requirements such as HIPAA coverage sit on a higher plan, so confirm which tier you need before modeling totals.
  • Low platform labor: Hosting, patching and platform upgrades are the vendor's responsibility, which keeps internal engineering time focused on integrations.
  • Exit cost: Moving later means exporting people and attributes, then rebuilding journeys and templates, and that work grows with the account.

Check the current plan terms and your expected profile count and send volume in writing before comparing totals.

Questions buyers ask before comparing costs

How much effort does a Customer.io to Dittofeed migration take?

The effort depends mainly on how many journeys, segments and templates you run and how clean your customer data is. The work has four parts: exporting people and attributes, repointing event tracking through Segment, reverse ETL or the Dittofeed API, rebuilding segments and journeys, and connecting an email provider such as SendGrid or Amazon SES. Journeys and templates usually have to be rebuilt by hand, so confirm what Customer.io exports for your account before you plan the rebuild. A team with one developer who knows the event pipeline and one marketer who knows the journeys can often do the core work alone, but the first migration usually takes longer than expected. If you want outside help, DeployOpen plans, implements and supports this kind of migration under a fixed-scope written agreement.

What does running Dittofeed need from engineers day to day?

Day-to-day work is smaller than the migration but it does not stop. Engineers need to keep the deployment running, which the project documents through Docker Compose and Render, with Helm charts in its repository for Kubernetes users. Ongoing tasks include:

How long should a parallel run last before switching off Customer.io?

Keep both systems running until the messages from Dittofeed match what Customer.io sends for the same people, and the length of that period depends on what drives your traffic. The main drivers are the number of journeys that wait for a delay or event before the next step, because those people stay in flight during cutover. Other drivers include message volume, how many channels you use, how many event sources feed the system, and whether your email provider needs time to build sending history for a new configuration. Set exit criteria in advance, such as matching send counts for each journey and reviewing bounce and complaint rates, and do not base the cutover on the calendar alone. Ask your implementation partner to write these criteria into the scope before work begins.

Does HIPAA on Customer.io Premium have a self-hosted equivalent I must document?

Customer.io offers HIPAA support on its Premium plan, but self-hosting does not hand you an equivalent certification. Running Dittofeed in your own VPC keeps sensitive personal data inside your environment, yet you become responsible for the controls that the HIPAA Security Rule requires of covered entities and business associates. Those controls include access management, encryption, audit logging, backup and recovery, risk analysis and documented policies. You also need to confirm with each email and SMS provider whether it will sign a business associate agreement and what it will process. Ask Customer.io exactly what its Premium HIPAA terms cover so you can compare scopes. DeployOpen prepares systems, controls and evidence for compliance assessments, but it does not issue audit reports or attestations. Independent auditors and certification bodies do that work.

Can a fixed-scope implementation fee replace hiring internal engineers?

A fixed-scope fee usually covers a defined one-time project, while hiring creates a recurring salary cost, so the two often serve different purposes. Most DeployOpen engagements are fixed-scope, with scope, deliverables and timelines agreed in writing before work starts. That covers the migration, integration and handover. It does not remove the need for an internal owner who decides what to send, to whom and when, and who answers for campaign data and consent. Ongoing support, upgrades and continuous testing are available as retainers, which can replace some in-house effort without replacing a staff role. Compare the fee with the internal hours a migration would consume, plus the salary of any engineer you would need to keep the platform running after go-live.

What should a written quote for a self-hosted messaging migration include?

A useful quote lists the scope in enough detail that two vendors could price the same work. Ask for these items:

Is an alpha-stage open-source release safe to run for production messaging?

Treat it as a release that needs a controlled upgrade process, because the project publishes pre-release tags. The latest release listed in its GitHub releases page is v0.24.0-alpha.21, published on October 4, 2026, so confirm the current tag before you plan. Pin the exact version in your deployment, test each upgrade in a staging environment with copies of your templates and segments, and read the release notes for changes to APIs or configuration. Decide in advance who triages bugs and whether you will carry patches. Dittofeed is MIT licensed and describes itself as free forever, so the cost of an alpha release is operational risk and staff time rather than a license fee. Ask the upstream maintainers what support they offer, and ask DeployOpen what a retainer covers for upgrades, testing and incidents.

When the self-hosted option makes financial sense

The self-hosted option makes financial sense when per-profile pricing becomes the dominant line item. Customer.io bills by profiles and email volume, so the cost rises with every person you message, not only with the number of messages you send. Dittofeed's own project description says self-hosting avoids volume-based pricing, which changes the cost curve: the license is free, and your spend shifts to servers, databases, email and SMS provider fees and the engineers who run the stack. Ask Customer.io for a quote at your projected profile count and at double that count. If the second figure drives a large step up and your internal cost of running Dittofeed grows slowly, the business case holds. Build the comparison with your own volumes, because the break-even point depends on your channel mix and on who already staffs your infrastructure.

The second condition is data control. Dittofeed states that self-hosting keeps sensitive personal data inside the operator's own VPC. If your legal or security team requires that event payloads, attributes and message logs never leave your cloud account, the hosted subscription may not be available to you at any price, and the self-hosted path becomes a compliance decision rather than a cost decision. Confirm with your privacy and security leads which data must stay inside your boundary, and remember that your email and SMS providers still receive message content and recipient addresses. Those providers are separate processors with their own fees, and they belong in the same cost model.

The business case also depends on capacity and risk tolerance. Running Dittofeed means someone owns upgrades, backups, monitoring and on-call response, and the project's releases are still pre-release tags, with v0.24.0-alpha.21 published on October 4, 2026, so you should expect breaking changes and budget time for testing before each upgrade. If you have platform engineers who already operate PostgreSQL, container platforms and CI pipelines, the marginal cost is manageable. If you have a small marketing team without platform engineers, Customer.io usually remains the better choice: its hosted service carries the operational burden, its support model is established, and the cost of a single outage or a stalled migration can exceed years of subscription fees. Ask any implementation partner for a written, fixed scope before committing.

How DeployOpen scopes a fixed-price Dittofeed implementation

DeployOpen is a Chainscore Labs company that plans, implements, hardens and supports self-hosted open-source platforms inside your own cloud accounts or data centers. For a Customer.io exit, we start by writing down what the Dittofeed deployment must cover, then build and hand it over with documentation your team can run.

How we scope

  • Inventory every Customer.io workspace, message channel, segment, journey and template that the new setup must replace.
  • Agree the event sources, whether Segment, reverse ETL or the Dittofeed API, and which email or SMS providers will connect.
  • Record the hosting location, data residency needs and sensitive personal data rules in the written scope before work starts.
  • Set out the deliverables, timelines and acceptance criteria in writing, since most engagements are fixed-scope.

How we build

  • Deploy Dittofeed in your own infrastructure using Docker Compose, Render or the Helm charts in its repository, as your environment requires.
  • Rebuild segments and journeys, and design email templates in HTML, MJML or the low-code editor, under git version control.
  • Connect SendGrid or Amazon SES and test campaigns with the testing SDK in your CI pipeline before any live send.
  • Run security testing on the deployment and its APIs, and harden access, secrets and backups as agreed in the scope.

How we hand over

  • Document the architecture, configuration, data flows, runbooks and the Customer.io-to-Dittofeed message mapping for your team.
  • Walk your engineers through running a parallel period so both systems can be compared until messages match.
  • Provide evidence of configuration and controls that your internal or external auditors can review, without us issuing any audit report.

How we support

  • Ongoing support, upgrades and continuous testing are available as a retainer after handover, based on the written scope.
  • Plan upgrades carefully, since Dittofeed's recent GitHub releases are pre-release tags, so confirm the version your team will run.
  • Ask for a written quote that lists each deliverable, the environments covered and the support terms before you commit.

Sources and further reading

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.