mailexodus reads Customer.io over its API and normalizes subscribers, segments, suppressions, campaigns into one portable schema — so you move with a report, not a 40-item checklist.
Customer.io migrations need an explicit boundary around what the API exposes.
→
Teams want a dry-run report before rebuilding subscribers, segments, suppressions, campaigns.
→
Workflow reconstruction depends on campaign action visibility
// transfer boundary
what mailexodus pulls from Customer.io.
can migrate
+
subscribers
+
segments
+
suppressions
+
campaigns
+
templates
+
automations
needs review
?
Workflow reconstruction depends on campaign action visibility
cannot migrate
x
lists
x
tags
x
custom fields
x
sender reputation and domain warmup
x
historical analytics, revenue attribution, and aggregate reporting
x
contacts already mid-flight inside active automations
x
A/B test results and provider-specific experiment history
x
provider-native design blocks, product widgets, coupons, and private assets that are not exposed by API
source adapter
Automated adapter
Customers map to subscribers and attributes. Broadcasts and newsletters map to campaigns. Campaign email actions map to automation emails. Transactional messages map to templates
Workflow reconstruction depends on campaign action visibility
// the playbook
how an agent migrates Customer.io → Sequenzy.
This is exactly what mailexodus hands your agent: authenticate, then for each object type — read it from Customer.io, map it to the portable schema, write it to the destination. mailexodus never writes; your agent does, with this report in hand.
01 · authenticate
In Customer.io, create an App API key with read access to customers, segments, broadcasts, campaigns, newsletters, transactional messages, and suppressions
01subscribersmigrates
readGET /v1/customers (Read subscribers from Customer.io.)
mapCustomers map to subscribers and attributes. Broadcasts and newsletters map to campaigns. Campaign email actions map to automation emails. Transactional messages map to templates mailexodus renders normalized provider data into destination subscribers, lists, segments, campaigns, sequences, and review notes.
writePOST add_subscriber (Write or stage subscribers in Sequenzy.) PATCH update_subscriber (Write or stage subscribers in Sequenzy.)
02segmentsmigrates
readGET /v1/segments (Read segments from Customer.io.)
mapCustomers map to subscribers and attributes. Broadcasts and newsletters map to campaigns. Campaign email actions map to automation emails. Transactional messages map to templates mailexodus renders normalized provider data into destination subscribers, lists, segments, campaigns, sequences, and review notes.
writePOST create_segment (Write or stage segments in Sequenzy.)
03suppressionsmigrates
readGET /v1/esp/suppression/{suppression_type} (Read suppressions from Customer.io.) GET /v1/esp/search_suppression/{email_address} (Read suppressions from Customer.io.)
mapCustomers map to subscribers and attributes. Broadcasts and newsletters map to campaigns. Campaign email actions map to automation emails. Transactional messages map to templates mailexodus renders normalized provider data into destination subscribers, lists, segments, campaigns, sequences, and review notes.
writePATCH update_subscriber.status (Write or stage suppressions in Sequenzy.)
04campaignsmigrates
readGET /v1/campaigns (Read campaigns from Customer.io.) GET /v1/newsletters (Read campaigns from Customer.io.) GET /v1/broadcasts (Read campaigns from Customer.io.)
mapCustomers map to subscribers and attributes. Broadcasts and newsletters map to campaigns. Campaign email actions map to automation emails. Transactional messages map to templates mailexodus renders normalized provider data into destination subscribers, lists, segments, campaigns, sequences, and review notes.
writePOST create_campaign (Write or stage campaigns in Sequenzy.)
05templatesmigrates
readGET /v1/transactional (Read templates from Customer.io.)
mapCustomers map to subscribers and attributes. Broadcasts and newsletters map to campaigns. Campaign email actions map to automation emails. Transactional messages map to templates mailexodus renders normalized provider data into destination subscribers, lists, segments, campaigns, sequences, and review notes.
writePOST create_template (Write or stage templates in Sequenzy.)
06automationsmigrates
readGET /v1/campaigns/{campaign_id}/actions (Read automations from Customer.io.)
mapCustomers map to subscribers and attributes. Broadcasts and newsletters map to campaigns. Campaign email actions map to automation emails. Transactional messages map to templates mailexodus renders normalized provider data into destination subscribers, lists, segments, campaigns, sequences, and review notes.
writePOST create_sequence (Write or stage automations in Sequenzy.) POST insert_sequence_step (Write or stage automations in Sequenzy.)
stays behind
lists
tags
custom fields
sender reputation and domain warmup
historical analytics, revenue attribution, and aggregate reporting
contacts already mid-flight inside active automations
guardrails
Sender reputation is earned at the destination — set up SPF/DKIM/DMARC and a warmup ramp; it does not transfer.
Keep the source platform active until authentication, warmup, and in-flight automations have finished.
Honor suppressions before the first send.
After writing, verify counts per object type against the source before switching live sends.
// run it
guide your agent, or follow it yourself.
Pull the full playbook from the skill prompt, CLI, or MCP server, then work the steps. Start by confirming credentials: In Customer.io, create an App API key with read access to customers, segments, broadcasts, campaigns, newsletters, transactional messages, and suppressions