home/migrations/to Campaigner
// migrate to

move to Campaigner without rebuilding by hand.

mailexodus normalizes your current platform into one portable schema, then checks what Campaigner can actually import. You get a route report before your agent writes anything.

agentUse mailexodus skill: your source → Campaigner playbook
// try it

bring your data into Campaigner.

Pick the platform you're leaving and generate a route playbook. The report shows what maps cleanly into Campaigner's model and what needs review — before you approve writes.

analyzing Klaviyo
source modeAutomated adapter
source exports8
Campaigner imports5
destination gapstags, campaigns, templates, automations
data leaves machineno · dry-run
$npx mailexodus@latest migrate --from klaviyo --to campaigner --dry-run
agentUse mailexodus skill: KlaviyoCampaigner playbook
// fit

when Campaigner is the right move.

Campaigner is a strong fit for teams that want campaigner teams moving contacts, mailing lists, segment metadata, custom fields, and suppression-like contact status into a cleaner operating model. The migration risk is rarely the CSV — it is the automation graph: triggers, delays, branches, template references, and consent state. mailexodus puts a portable schema in the middle so those objects are inspected before they become Campaigner objects.

// inbound

what Campaigner receives.

can import
  • +
    subscribers
  • +
    lists
  • +
    segments
  • +
    custom fields
  • +
    suppressions
needs review
  • ?
    destination mappings still need final operator review
not exposed for import
  • x
    tags
  • x
    campaigns
  • x
    templates
  • x
    automations
destination adapter

Partial automated adapter

Contacts map to subscribers using staticFields.email. MailingList records map to lists. StaticSegment and DynamicSegment records map to segment metadata and membership snapshots where contact memberships include them. Custom fields map to subscriber custom attributes. System/static unsubscribe and bounce fields map to suppression state when present

No documented campaign list/detail endpoint for fetching existing campaigns. No documented template list/detail/body endpoint. Workflow endpoints expose summaries, not full automation steps or email bodies. No first-class tag resource was found in the official API Dry-run the report first, then approve writes when the counts and destination gaps look right.

// before you switch

plan the move to Campaigner.

  1. Authenticate your sending domain in Campaigner (SPF, DKIM, DMARC) and plan a warmup window — sender reputation is earned here, it does not transfer.
  2. Bring consent and suppression state across first, so unsubscribes and bounces are honored from the first send in Campaigner.
  3. QA migrated templates and segments inside Campaigner, and send seed tests before any live campaign.
  4. Keep your current platform active until in-flight automations finish and Campaigner is warmed and trusted.
// migrate it

start with the route playbook.

The agent prompt returns a route report with source exports, destination imports, skipped objects, and manual-review tasks. When it looks right, wire credentials and approve writes from a controlled machine.

inspect

destination coverage

npx mailexodus@latest info campaigner

playbook

agent playbook

Ask mailexodus for a migration_playbook with to=campaigner

agentUse mailexodus skill: your source → Campaigner playbook