Migrate from Marketo to Mautic

A planning guide for moving from Marketo Engage to self-hosted Mautic: what moves cleanly, what needs rebuilding, and how to run both platforms in parallel before cutover.

On this page

Migrate from Marketo to Mautic: what the move involves

Moving from Marketo to Mautic is a rebuild of data, campaigns and the CRM sync, not a file copy. If your renewal, a licensing change, a data residency requirement or lock-in is driving the decision, plan for four workstreams: extracting history, importing contacts, rebuilding smart campaigns, scoring, forms and landing pages, and replacing the Salesforce sync. Each one has its own owner and its own failure modes, and none of them is complete when the files land on a server.

Most teams run this as an internal marketing operations project with an engineering or implementation partner handling the server, database, cron jobs and integrations. Marketing ops owns the list of what must be rebuilt and signs off on scoring and campaign logic. Engineering owns hosting, the mautic:import runs and the Salesforce plugin configuration. Mautic itself is free software under GPL-3.0, so there is no license fee to replace. What you pay for is the hosting, the email sending service, the people who run upgrades and the one-time migration effort. Ask any partner for a written scope that lists each of those items separately, along with who is responsible for sending domain warm-up and deliverability.

Before committing, confirm three things in your own environment: how much history you need to keep and in what form, which Marketo smart campaigns and program members depend on Salesforce sync fields, and whose name goes on the sending domains. Check the Mautic release calendar against your upgrade plan, because the supported PHP and database versions differ by release. Then run a small pilot with a representative segment, a few campaigns and one Salesforce object before you schedule the full cutover. A pilot exposes most mapping and deliverability problems while the old system is still sending.

Which Marketo capabilities map to Mautic and where the gaps are

This table maps the main Marketo Engage capabilities to their Mautic equivalents and labels each as clean, needs rework or gap. Read the labels as planning signals, not guarantees, and confirm feature parity against the exact Mautic version you plan to run before you commit to a design.

Marketo capabilityMautic equivalentMigration statusWhat to confirm
Leads and person recordsContacts with custom fields and tagsCleanMap every Marketo field to a Mautic field type and confirm how date, multi-select and picklist values import
Activity historyContact timeline from imported activity dataNeeds reworkMautic does not replay Marketo activity as native history, so decide whether to import it as custom data or archive the Bulk Extract files
Smart campaignsCampaign builder with decisions, conditions and actionsNeeds reworkSmart campaign flows must be rebuilt by hand, and trigger logic may not match one for one, so test each flow with sample contacts
Smart listsSegmentsCleanConfirm that segment filters cover your Marketo list criteria and that segment updates run on schedule through cron
Lead scoringPoint-based scoring through campaigns and contact pointsNeeds reworkScoring models are rebuilt rather than exported, so document current score thresholds before rebuilding them
Program members and program statusCampaign membership and tagsNeeds reworkProgram structure has no direct equivalent, so agree a tagging and campaign naming convention first
Forms and landing pagesForms and landing pages in the Mautic builderNeeds reworkRecreate templates, progressive profiling and hidden fields, then confirm form submissions write to the intended fields
Salesforce syncSalesforce plugin configured in MauticGapSync direction, field mapping and campaign membership differ from Marketo's continuous sync, so confirm behavior with a sandbox before cutover
Reporting and attributionDashboards and standard reportsGapRevenue attribution and multi-touch models usually need a warehouse or BI layer, so confirm which reports sales depends on
Email sendingMautic email through your own mail serviceGapMarketo's sending infrastructure and deliverability tooling are replaced by your own mail service and sending domains, so plan domain warm-up

Which data can be extracted from Marketo and how it lands in Mautic

Marketo's Bulk Lead Extract REST API is the route for moving lead and person records out of Marketo Engage. It returns large sets of records as CSV, TSV or SSV files, which suit ETL, warehousing and archival work. Each job accepts a date range filter of 31 days or fewer, so a full history is pulled as a series of windowed jobs rather than one export. Plan the windows before you start, record which ones have completed, and confirm with Adobe's current developer documentation how the daily quota and file retention apply to your subscription. Activities and program members are covered by separate bulk extract endpoints, which you should check against your own org's API limits before scheduling the run.

On the Mautic side, the simplest path for a modest file is the CSV import in the user interface, which maps columns to contact fields automatically. Review the mapping before confirming, because Marketo custom field names rarely match Mautic field aliases. For large files, Mautic recommends background imports with the mautic:import console command run by cron. By default it processes 100 rows per batch, so a file of several hundred thousand rows is a long-running job. Run a small test file first, check duplicate handling and the email identifier, and keep the Marketo export as your reconciliation source.

Smart campaigns, smart lists, assets, forms, landing pages and scoring rules have no bulk export path in the supplied facts. Treat them as a documentation and rebuild task: export each campaign's logic and its member counts from the Marketo interface, record scoring thresholds and form fields, and rebuild them manually in Mautic's campaign and segment builders. Ask your Adobe account team and your Mautic implementation partner to confirm what, if anything, can be exported in structured form before you commit to a manual inventory.

Migration sequence from inventory to decommission

This sequence moves a Marketo Engage instance to self-hosted Mautic in controlled stages, so each change is tested and reversible before Marketo is switched off. Each step ends with a named artifact that the next step depends on.

  1. Inventory fields, lists, programs, campaigns and integrations

    The marketing operations lead, with a Marketo administrator and the Salesforce administrator, lists every custom field, static and smart list, program, smart campaign, form, landing page, scoring model, sync rule and sending domain in use. Mark which items are live, which are dormant and which feed reports or other systems. The output is a written inventory with an owner and a disposition (rebuild, retire or keep as an export) for each item. The step is done when the Salesforce and reporting owners have signed off that nothing feeding their dashboards is missing.

  2. Build the field map and contact model

    Map each Marketo lead field to a Mautic contact field, noting type differences, picklist values, date formats and fields that Mautic does not carry natively. Decide which Marketo person and lead attributes become Mautic custom fields and which become tags or segments. Confirm the Mautic data model in a test instance before any data moves. The output is a versioned field map that the team reviews line by line. The step is done when every Marketo field in the inventory has a target or an explicit retirement decision.

  3. Extract history and run a pilot import

    The data engineer runs Marketo's Bulk Lead Extract in date windows of 31 days or fewer, as Adobe's developer documentation requires, and stays within the daily quota described in the export guidance. Extracted files are stored in an encrypted location with a checksum and a retention record. Next, load a small, representative set of contacts into a test Mautic instance using the CSV import, then run the mautic:import console command with cron for larger files. The output is a pilot import log showing rejected rows, duplicate handling and field values compared against the source. The step is done when a sample of records matches Marketo field by field.

  4. Pilot rebuild of one campaign

    Choose one representative smart campaign, such as a nurture track with a score threshold and a sales notification. Rebuild it in Mautic with the same entry criteria, wait steps, branches and goals, then run it against the pilot contacts in a test environment. Confirm that cron jobs for segment updates, campaign updates and campaign triggers run on the staggered schedule Mautic documents. The output is a rebuilt-campaign checklist that records each node, its expected result and the test outcome. The step is done when the marketing team confirms the results match the Marketo behavior for the same contacts.

  5. Run the parallel period with warmed domains

    Start sending from new or sub-domains in Mautic at low volume while Marketo continues as the production system of record. Warm each sending domain gradually, monitor bounce, complaint and inbox placement metrics, and keep a rollback path to Marketo for each campaign. Confirm that the messenger consumer and broadcast commands run reliably so queued email is delivered. The output is a warm-up log per domain and a parallel-run report comparing both systems. The step is done when deliverability is stable and the team has agreed a threshold for moving volume.

  6. Cut over contacts, forms and the Salesforce sync

    On an agreed date, freeze Marketo changes, run a final incremental extract, load the delta into Mautic, and repoint forms and landing pages to Mautic hosting. Switch the Salesforce integration from Marketo to Mautic's Salesforce plugin, verify field mapping and campaign membership against the sync page, and confirm that sales users see the expected lead and activity data. The output is a cutover runbook with timed steps, named owners, rollback criteria and a post-cutover checklist. The step is done when a sample of new form submissions flows through to Salesforce as expected.

  7. Decommission Marketo after retention checks

    Keep Marketo in read-only mode for the period your records, legal and audit requirements set. Confirm that exported archives are complete, readable and stored under your retention policy, and that no active integrations still write to Marketo. Then cancel the subscription in line with your contract terms, revoke API credentials and remove sending domain records from Marketo. Ask your Adobe account team to confirm the data deletion process and what is retained. The output is a decommission record with archive locations, credential revocation evidence and the contract end confirmation. The step is done when the record is signed off by the data protection owner.

What Mautic needs to run after the import

Before you point your team at Mautic, confirm the hosting target. The Mautic 7.0 requirements call for PHP 8.2, 8.3, 8.4 or 8.5, MySQL 5.7 or higher with InnoDB, or MariaDB 10.2 or higher, and a web server of Apache, Nginx or IIS. From Mautic 5.0 onward, npm is also required on the server. The project says Mautic should not run on shared hosting and recommends a VPS or dedicated server, so budget for that instance before the import starts. Check the full list on the Mautic requirements page against the exact version you choose, since the requirements change between releases. Choose the version first, because it sets your support window. Mautic publishes monthly patch releases, minor releases every three months and major releases every two years. Mautic 7.2 (Absolunto) has active and security support until 30 September 2026, and Mautic 7.3 is planned as the long-term support release with security support through 31 December 2027. Mautic 6.0 (Tabit) receives security support until 30 September 2026, Mautic 5.2 (Capella) until 30 June 2026, and Mautic 4.4 has paid Extended Long Term Support through 31 December 2026. Confirm these dates against the Mautic releases page before you sign off, and plan your upgrade path if your go-live falls near one of them. Plan the cron jobs and the messenger consumer now, not after launch. Mautic relies on cron for segment updates, campaign updates and campaign triggers, and the documentation says these jobs should be staggered. A separate broadcasts command sends segment emails, and a messenger consumer must run when emails are queued. Assign an owner for these processes, add monitoring that alerts when a job stops, and test that a migrated smart campaign actually fires after the import. A silent cron failure can look like a working system until a nurture stream stalls.

What usually goes wrong and how to prevent it

Most Marketo to Mautic migrations fail in predictable places: data extraction limits, identity matching, the Salesforce link, background jobs, sending reputation and the pages that capture leads. Each card below names one risk and the check that prevents it, so the team can test those points before cutover rather than after.

Extracts that exceed limits

Marketo's Bulk Lead Extract filters by date range of 31 days or fewer per job, so a multi-year lead history must be split into many jobs. Teams that plan one export per object often discover missing windows only when counts fail to reconcile. Build a date-window schedule, record the row count of each file, and reconcile those totals against Marketo reports before you delete anything. Confirm the daily quota for your subscription with Adobe, since a single bulk run can stall the remaining work for the day.

Duplicate contacts and lost history

Marketo and Mautic identify people differently, so the same person can arrive twice if email addresses change case, carry typos or were merged in Marketo. Activity history is also at risk because Mautic imports contacts through its own mapping, and activities do not map one to one with Marketo activity types. Choose a unique key, deduplicate the extract before import, and keep the original Marketo lead ID as a custom field so that support questions can be traced back to the source record.

Broken Salesforce mapping

Marketo's continuous sync with Salesforce writes fields, lead status and campaign membership in both directions, while Mautic's Salesforce plugin is configured separately and syncs its own set of fields. Unmapped picklists, renamed fields or missing campaign membership can quietly stop lead routing on the sales side. Export the current Marketo field-to-Salesforce mapping, rebuild it field by field in Mautic, and run a test sync against a sandbox before enabling production writes.

Cron jobs that fail silently

Mautic runs segment updates, campaign updates and campaign triggers through cron, and the project recommends staggering those jobs. A missing or stalled cron entry does not show an error on the public site, so campaigns simply stop advancing contacts. Document every scheduled command, set up alerts on job runtime and last-success time, and confirm that the broadcasts command and the messenger consumer run after cutover.

Cold sending domains

Marketo sends from domains with an established reputation, and a new Mautic server sending from the same domain or a fresh one can trigger filtering at major mailbox providers. Volume that jumps too fast after cutover is a common cause of lost inbox placement. Plan a gradual warm-up schedule with your deliverability team, authenticate sending domains with SPF, DKIM and DMARC before the first send, and start with engaged segments. Ask your mail provider how it handles bounces and complaints from the new sender.

Forms that break tracking

Forms and landing pages built in Marketo carry tracking scripts, hidden fields and progressive profiling logic that do not transfer automatically. A rebuilt form that omits a field, or a landing page without the tracking code, sends leads into Mautic without source, campaign or consent data. Rebuild each form with a checklist of fields and hidden attributes, test submissions end to end, and confirm that attribution reports receive the expected values before the old pages are retired.

How the migration differs by starting point

A single-brand team with a small database has the shortest path. There is one set of sending domains, one set of forms and one scoring model to rebuild, so the work runs mostly in sequence. The main risk is underestimating the campaign rebuild, not the data volume. Mautic should not be installed on shared hosting, so plan for a VPS or dedicated server from the start.

  • Extraction in one pass: Run Bulk Extract for leads and activities across the full history in windows of 31 days or fewer, and plan the job order around the daily quota.
  • Import through the interface: Small CSV files can go through the Mautic import screen with automatic column mapping, while larger files move to the background import process described in the Mautic import documentation.
  • Campaign rebuild on the critical path: Smart campaigns have no bulk export, so each one is rebuilt by hand in Mautic from its documented logic.
  • One domain to warm: A single sending domain is warmed once, with its authentication records confirmed with whoever manages your DNS.
  • Scheduled jobs in place early: Segment updates, campaign updates and triggers depend on cron, so set those schedules before testing campaigns.

Before starting, confirm the database size, the number of active campaigns and whether your current sending service allows the domain to move.

What drives the cost and duration of this migration

The cost of moving from Marketo Engage to Mautic splits into two kinds of spending: one-time migration work and recurring upkeep. The one-time work is the larger unknown. It includes internal marketing operations time to inventory programs, smart campaigns, scoring rules, forms and landing pages, plus engineering time to stand up the Mautic hosting, build the import and export pipeline, and rebuild the Salesforce integration. Most of that effort scales with how many campaigns you run, how many years of activity history you keep, and how many fields and objects your Salesforce sync touches. Your own marketing operations staff are usually the largest internal cost, and you should estimate their hours against a written inventory rather than against memory. Recurring costs fall into hosting and database, an email sending service, the Salesforce integration, and the upgrade work that comes with each Mautic release line.

Marketo's subscription price should not be used as a stand-in for the migration budget, and no Marketo price is quoted here. Instead, ask your Marketo account team for the contract terms, the export allowances and data retention you are entitled to, and whether any fees apply to exporting. Then ask every implementation partner, including DeployOpen, for a written quote that separates the following: hours for the lead, activity and program member extraction (which runs within the daily export quota and the 31-day window per job); hours for importing contacts into Mautic; campaign and scoring rebuilds, counted per campaign; form and landing page work; the Salesforce sync design and testing; and a cutover and domain warm-up plan. Ask for the assumptions behind each line, including data volume, campaign count and integration depth, because a quote that does not state them cannot be compared.

The fastest way to reduce both cost and duration is to fix the scope before work starts. Inventory active campaigns, retire the ones nobody has run in a year, and decide which custom fields and activity types must carry history. Confirm which environment will send email and whose infrastructure hosts Mautic, since a managed sending service and a self-hosted server carry different recurring fees and different deliverability work. Plan for upgrades from the start: check the Mautic releases page for the current support windows, and budget time each cycle to test campaigns, cron jobs and integrations on the new release. Finally, record every decision in a scope document, because the one-time work is where overruns usually appear.

Which factors raise or lower effort and how to keep each under control

This table lists the factors that most change the effort of moving from Marketo Engage to self-hosted Mautic, why each one matters, and how to keep it manageable. Read each row against your own instance, since the largest drivers are usually history depth, campaign count and the Salesforce mapping. Confirm the figures for your own portal before you size the work.

DriverWhy it mattersHow to reduce it
Data volume and history depthBulk Lead Extract filters are limited to 31 days or fewer per job, so years of activity history means many extract jobs and a daily quota to plan around.Decide which activity history must move, export the rest to an archive, and confirm your current daily quota with Adobe before scheduling jobs.
Number of smart campaignsSmart campaigns have no bulk export, so each one must be rebuilt by hand in Mautic, and effort grows with every flow, trigger and branch.Inventory active campaigns, retire unused ones, and rebuild the most valuable nurture paths first rather than cloning everything.
Scoring modelsMarketo scoring rules, decay and thresholds rarely map one to one to Mautic points and triggers, so scores can shift after migration.Document each scoring rule and its threshold, then run old and new scores side by side on a sample of contacts before cutover.
Custom objectsCustom objects need their own export, a target structure in Mautic and a decision on whether they become fields, segments or are dropped.List every custom object and the reports that use it, then map each to a Mautic field or custom table before extracting data.
Salesforce field and membership mappingMarketo's continuous sync and Mautic's Salesforce plugin use different fields, directions and campaign membership logic, so mismatches reach sales teams quickly.Map each synced field and campaign membership in writing, agree sync direction with sales operations, and test on a Salesforce sandbox.
Number of sending domainsEach sending domain needs its own authentication setup and a warm-up period, and mail sent from a new domain can be filtered if volume rises too fast.Consolidate domains where possible, prepare authentication records early, and plan a staged volume increase with your mail provider's guidance.
Forms and landing pagesForms, progressive profiling and landing pages are rebuilt in Mautic, and embedded or external pages must be re-pointed to new URLs.Audit forms and pages by traffic, rebuild the high-traffic ones first, and set redirects from old URLs before switching DNS.
Internal skillsRunning Mautic requires server, PHP, database and cron administration in addition to marketing operations, and gaps here lengthen every other task.Name an owner for hosting and cron jobs, train marketing operations staff on Mautic, and ask an implementation partner for a written handover plan.

Questions buyers ask before moving from Marketo to Mautic

Is Mautic free, and what does it cost to run?

Mautic is free to download and self-host, licensed under the GNU General Public License version 3 or any later version, so there is no license fee for the software itself. The project's own site offers a free self-hosted download alongside separately promoted managed hosting. The recurring costs are the ones you carry yourself: a VPS or dedicated server (the project says Mautic should not run on shared hosting), a MySQL or MariaDB database, an email sending service, staff time for upgrades and cron jobs, and any partner support you buy. Ask any quote to split these components so you can compare them with your Marketo subscription line by line.

How long does a Marketo to Mautic migration take?

The duration depends on the size of your database, how many smart campaigns and forms you must rebuild, how many integrations you run, and how many people must approve the new flows. Bulk Extract is limited to 31-day windows per job, so a long history means many jobs, and the 500 MB daily quota can spread extraction across several days. No supplied source gives a standard timeline, so ask for a duration in the written scope after an inventory of campaigns, forms, landing pages, scoring rules and the Salesforce sync. Fixed-scope engagements from DeployOpen are agreed in writing before work starts.

Can our internal team migrate from Marketo to Mautic alone?

A capable team can do it alone if it has someone who can administer a PHP application on Symfony, manage a database, and maintain cron and the messenger consumer. Mautic needs cron jobs for segment updates, campaign updates and campaign triggers, which should be staggered, plus a broadcasts command and a messenger consumer when emails are queued. Rebuilding smart campaigns and scoring logic also requires a marketing operations person who knows the current Marketo logic. If those skills are missing, you can hire a partner for a fixed-scope piece, such as the extraction and import, and keep the rebuild in-house.

What does the migration need from marketing and sales operations?

Marketing operations must document every smart campaign, smart list, lead score, program and form, because Marketo's smart campaigns have no bulk export and must be rebuilt by hand in Mautic. Sales operations must confirm what the Marketo to Salesforce sync writes, in which direction, and which fields and campaign memberships sales relies on, because Mautic's Salesforce plugin is configured separately and syncs different things. Both teams should approve a test plan and a cutover date. Ask your partner to list these decisions in the written scope so that neither team discovers a gap after go-live.

Can we extract the full Marketo history?

Bulk Lead Extract retrieves large sets of lead and person records as CSV, TSV or SSV files, with date range filters of 31 days or fewer per job, so long histories require many jobs. Activities and program members are exported through related bulk endpoints, but the 500 MB daily quota and the 7-day file retention limit how much you can move in one pass. Smart campaigns, assets and other configuration do not have a bulk export, so they are rebuilt, not copied. Confirm the exact endpoints, quotas and retention with Adobe's current documentation, and store each extract file in an archive you control before the source data changes.

How do we protect sending reputation during cutover?

Sending reputation belongs to the sending domain and IP, so the safest path is to warm the new sending infrastructure gradually while Marketo keeps sending to the same audiences. Start with engaged contacts, keep suppression lists synchronized, and check authentication records for each sending domain before you increase volume. Mautic does not send mail by itself in a way that replaces your ESP's reputation, so confirm with your email provider how dedicated IPs, bounce handling and complaint feedback loops will work. Plan the cutover with the deliverability owner in the room, and treat warm-up as a dated step in the written scope.

Do we need to keep Salesforce during the switch?

Yes, in most cases you keep Salesforce CRM and move campaign and lead management to Mautic. Salesforce describes Pardot as the legacy name for Salesforce Account Engagement, and Mautic documents its own Salesforce plugin, configured through its knowledge base. Plan a parallel period in which field mappings, lead status rules and campaign membership are checked against the Marketo sync output. Sales should see no change in lead ownership or alerts before the old sync is switched off.

How DeployOpen scopes and runs a Marketo to Mautic migration

DeployOpen plans, implements, integrates, hardens, backs up and documents self-hosted open-source platforms inside your own cloud accounts, data centers or air-gapped networks. For a Marketo to Mautic move, we start with a written scope that names the data, campaigns, forms, integrations and sending domains involved, then build and hand over the environment with the documentation your team needs to run it.

How we scope

  • Inventory of Marketo leads, activities, program members, smart campaigns, forms, landing pages and scoring rules
  • Confirmation of which Salesforce objects, fields and sync directions the Mautic integration must cover
  • Written list of sending domains, mail services and deliverability dependencies that change at cutover

How we build

  • Mautic installed on a VPS or dedicated server in your environment, with cron jobs and the messenger consumer configured
  • Contact imports run through the Mautic import process in controlled batches, with field mapping checked against the source extract
  • Smart campaigns, scoring, forms and landing pages rebuilt from the agreed inventory and tested before go-live

How we hand over

  • Runbook covering cron schedules, upgrade path, backups and the Mautic release calendar your team must follow
  • Record of data mapping, excluded objects and any manual rebuild steps agreed in the written scope
  • Walkthrough sessions with marketing operations and the staff who will own the platform after handover

How we support

  • Fixed-scope delivery with scope, deliverables and timelines agreed in writing before work starts
  • Ongoing support, upgrades and continuous testing available as a retainer after handover
  • Quote follows from the written scope, so ask us to itemize extraction, rebuild, integration and hosting work

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.