Moving from Oracle Eloqua to Iterable isn’t a typical marketing automation migration. There are enough similarities between the two platforms that the move can look straightforward at first. Both manage customer data. Both build audiences. Both orchestrate campaigns. Both personalize content. Both send email. Both connect to the rest of your marketing technology stack. Look a little closer, though, and the differences start to matter a lot more.

Eloqua grew up as a B2B marketing automation platform. Most mature Eloqua environments are built around contacts, accounts, lead management, CRM sync, forms, landing pages, Campaign Canvas, Program Canvas, Custom Data Objects, lead scoring, and email. Over years of use, Eloqua often ends up responsible for far more than sending marketing messages. It becomes part campaign engine, part integration layer, part data processing platform, and part lead management system.

Iterable starts from a different place. Its architecture centers on users and the things those users do. User profiles, custom events, purchases, behavioral data, segmentation, campaigns, and Journeys work together to decide how and when someone should be engaged. Email is an important part of that model, but so are SMS, RCS, mobile push, in-app messages, web push, WhatsApp, and embedded experiences.

That creates both an opportunity and a challenge. The challenge is that some of what your team has spent years doing in Eloqua won’t translate neatly into Iterable. The opportunity is that it may not need to.

An Eloqua-to-Iterable migration is a chance to decide what your future marketing architecture should look like: which jobs belong in Iterable, which should move somewhere else, and which customer experiences you can finally build that were hard to pull off in Eloqua. So, where do you start?

What’s Similar Between Eloqua and Iterable?

Let’s start with some good news. Your Eloqua marketers aren’t walking into a completely unfamiliar world. The basic jobs they do today still exist in Iterable.

You still need audiences. You still need campaigns. You still need customer data, personalization, testing, reporting, consent management, integrations, templates, and automation. What changes is how those jobs get done.

What You Do in Eloqua

How You May Approach It in Iterable

What to Think About

Maintain contact records and fields User profiles and profile fields Decide which profile data Iterable actually needs
Sync with Salesforce Native Salesforce integration (Integrations Hub) Data comes in on a schedule. Plan the write-back separately
Build segments and shared filters Segmentation, dynamic and static lists Add event and Catalog criteria to your audiences
Build Campaign Canvas programs Journeys Redesign around entry signals, behaviors, goals, and exits
Personalize email content Handlebars, profile and event data, Catalogs, data feeds Rethink where personalization data lives
Manage Email Groups Message channels, message types, subscription lists Redesign the preference model instead of copying it
Track campaign engagement System events, Campaign Analytics, Snowflake data sharing Decide what engagement data has to flow downstream
Trigger external processes Journey webhooks and APIs Reassess which system should own each process
Import and export marketing data APIs, Smart Ingest, and Integrations Hub Build data movement around the future architecture
Run A/B tests Iterable Experiments Test more than subject lines

That familiarity matters. Your marketers don’t need to relearn the fundamentals of digital marketing. They need to learn a new way of applying them.

Take an Eloqua nurture campaign. A prospect might enter a Campaign Canvas because they were added to a segment. The campaign sends an email, waits several days, checks whether the person clicked, sends another email, waits again, checks a field or activity, and eventually routes the prospect somewhere else.

You could rebuild something very similar as an Iterable Journey, but that shouldn’t automatically be the goal. The better question is whether the Journey can react to what the customer actually does between those messages. Did they come back to the website? Request pricing? Register for an event? Start a trial? Buy something? Update their preferences? Hit a lifecycle milestone? That’s where the migration starts getting interesting.

What Will Be New in Iterable?

For most Eloqua teams, the biggest change won’t be a particular Iterable feature. It’ll be how the team thinks about customer engagement. Eloqua programs usually begin with an audience: who qualifies for this campaign? Iterable gives you more reason to begin with a signal: what just happened, and what should we do about it?

Custom events capture important customer actions and can drive segmentation, personalization, Journey entry, decisioning, and conversion measurement. Instead of storing every interaction as a field or CDO record that some other process evaluates later, an event can become an immediate part of the customer’s experience.

Say someone requests a product demo. A demo_requested event can carry what was requested, where the request came from, the customer’s area of interest, and other useful context. That event can drop the customer into a Journey right away, and the Journey can use profile and behavioral data to decide what happens next. That approach makes several Iterable capabilities especially important during a migration.

Behavioral Data Becomes a Bigger Part of Your Architecture

In a mature Eloqua instance, it’s common to find dozens or hundreds of contact fields used as flags, like these:

  • Downloaded_Whitepaper = Yes
  • Attended_Webinar = Yes
  • Product_Interest = Product_A

Those fields usually exist because some campaign needed a value it could check later. Iterable gives you another option. Many of those behaviors can be events, with properties that carry the context around the action. So your migration should include a real discussion about what belongs on the user profile and what should be captured as behavior.

Journeys Can Become More Responsive

Iterable Journeys can use custom events as entry sources and make decisions based on what happens next. That opens the door to experiences that change as customer behavior changes, so a nurture doesn’t have to stay a fixed run of five emails over 30 days.

Someone who requests a demo can leave the educational track right away. A webinar attendee can move into a related follow-up. A new customer can exit acquisition messaging and start onboarding. The migration should focus less on reproducing Eloqua campaign diagrams and more on finding the signals that should change the customer experience.

Cross-Channel Becomes a Real Design Decision

Plenty of Eloqua environments stay heavily email-focused even when other channels exist elsewhere in the stack. Iterable changes that conversation. Email, SMS, RCS, mobile push, in-app, web push, WhatsApp, and Embedded Messaging can all be part of one coordinated Journey. Embedded Messaging can even place personalized content directly inside your website or app, based on real-time eligibility.

That means channel strategy belongs in the migration plan, not in a “phase two” conversation you’ll get to later. Ask where customers actually interact with you and which channels make sense at each point in the lifecycle.

Personalization Can Pull From More Places

Eloqua marketers are used to field merges, dynamic content, CDO data, and other forms of personalization. Iterable brings a different toolkit. Handlebars applies logic inside templates. Profile and event data shape content. Catalogs hold shared business data like products, locations, events, offers, or accounts, and you can now segment on Catalog data directly. Data feeds pull current values from outside services at send time, and Journey Live Data can fetch fresh data in the middle of a Journey to route someone or personalize the next message without storing it on the profile.

That changes the data design conversation. Instead of asking, “How do we get all of this into the contact record?” you can ask, “Where should this data live, and when does Iterable actually need it?”

Experimentation and Decisioning Can Become Part of Normal Campaign Design

Iterable Experiments support testing across sender details, subject lines, preheaders, send times, message content, and conversion outcomes. Iterable’s Nova Intelligence adds Send Time Decisioning, Channel Decisioning, and Frequency Decisioning, along with Predictive Audiences and Brand Affinity, depending on your plan and use case. (If you knew these as Send Time Optimization or Predictive Goals, Iterable renamed them in October 2026.) For teams coming from a rules-heavy Eloqua environment, that’s a chance to build learning and optimization into the operating model instead of relying only on fixed campaign logic.

What Might Be Missing?

This is where Eloqua expertise really matters. The mistake would be judging Iterable only by whether it has an equivalent button for everything you use in Eloqua. Some things shouldn’t have a direct equivalent.

Your CDO Architecture Will Need to Change

Custom Data Objects can get deeply embedded in an Eloqua implementation. Teams use them for event registrations, product ownership, opportunities, subscriptions, transactions, preferences, account relationships, service history, campaign responses, and dozens of other things. No single Iterable feature should replace all of those uses.

Some CDO records should become events. Some information belongs on user profiles. Some shared reference data may belong in a Catalog. Some data should stay in a CRM, CDP, data warehouse, commerce platform, or another source system. And some old CDOs should simply go away.

So “map CDOs to Iterable” is the wrong task. Figure out what each CDO is doing, then decide the best home for it.

B2B Lead Management Needs an Owner

Eloqua often plays a big role in lead scoring, qualification, CRM campaign integration, lead routing, account-based processes, and the handoff to sales. Iterable is a customer engagement platform. It can take part in B2B journeys, and its native Salesforce integration now brings Contacts, Leads, Accounts, Opportunities, and custom objects into Iterable on a schedule. Today that sync runs one way, into Iterable. Iterable has announced that engagement data will flow back to Salesforce, and more features will arrive with future integration updates.

Either way, you still need to decide where each B2B operational job lives. Maybe Salesforce owns lead status and routing. Maybe a CDP or warehouse calculates qualification and propensity scores. Maybe an outside scoring model writes a score to the profile, and Iterable uses it for segmentation and Journey decisions. What matters is that each of these jobs has an owner before Eloqua is turned off.

Program Canvas May Be Hiding More Than Marketing Programs

This one is worth digging into. Program Canvas often handles operational work marketers barely notice anymore: normalization, routing, CRM updates, data cleansing, scheduled exports, CDO processing, field updates, and integration workflows.

Those processes shouldn’t automatically become Iterable Journeys. Some will become API integrations. Others will move to middleware, CRM automation, your cloud data platform, or somewhere else. That’s why the migration inventory has to uncover processes, and assets are only half the picture.

Forms and Landing Pages Need a New Strategy

If you’ve relied heavily on Eloqua-hosted forms and landing pages, treat this as its own workstream. Don’t assume those assets simply move into Iterable. Decide what your web experience should be going forward.

That might mean your CMS for landing pages, your website or app for forms, or a dedicated form or conversion tool. Submissions can then update Iterable profiles, create events, or trigger Journeys through the right integration. For some teams, taking forms and landing pages out of the marketing automation platform actually simplifies the architecture.

Historical Data Needs a Home

Eloqua may hold years of contact activity, campaign membership, form submissions, email engagement, and CDO history. That doesn’t mean all of it belongs in Iterable.

History you need for analytics can live in a warehouse or archive. Data you need for future engagement can be turned into useful profile attributes, audience indicators, or recent behavioral events. Migration is a good time to separate the data you have from the data Iterable needs.

The Eloqua-to-Iterable Migration Playbook

With those differences in mind, the migration plan itself should look different from a traditional platform conversion. These 12 steps move you from understanding what Eloqua does today to running an Iterable program that keeps improving after go-live.

Don’t start with an asset export. Start by understanding what Eloqua is doing for the business.

Inventory Campaign Canvases, Program Canvases, CDOs, forms, landing pages, emails, segments, shared filters, Email Groups, scoring models, imports, exports, AppCloud apps, CRM integrations, APIs, reports, and anything outside Eloqua that depends on it. Then write down why each one exists.

Which are business-critical? Which support a sales process? Which move or transform data? Which are just marketing campaigns? What breaks downstream if they stop? An asset count tells you how much exists. An operational map tells you what matters.

Before you decide where an Eloqua asset goes, decide which system does what once Eloqua is gone. Spell out the jobs of Iterable, your CRM, CMS, CDP, data warehouse, commerce platform, mobile apps, integration layer, and analytics tools.

For every major process, name a system of record and a system of action. The system of record owns the truth. The system of action does something with it. They’re often different platforms, and mixing them up is where migrations quietly go wrong.

Salesforce is a good example. Iterable’s native Salesforce integration makes Salesforce easier to use as the source, but it doesn’t decide who owns lead status. Write the architecture down before campaign work starts. It’s far cheaper to argue about ownership on a diagram than in production, and it keeps Iterable from becoming the default home for every job Eloqua happened to do.

Identity affects almost everything that follows. Iterable projects identify people by userId, by email, or by both. New projects are typically hybrid (both identifiers, each kept unique) or userID-based, and email-based projects now have limited availability. The choice shapes how the project and its API calls work for the long haul, so make it first. Then define how users get created, how records match, what happens when someone changes their email address, and which ID travels between your CRM, warehouse, and Iterable.

Look hard at the situations Eloqua may have handled differently: duplicate contacts, shared inboxes, anonymous visitors, a Lead that later converts to a Contact, and people who show up across several sites and apps. Iterable’s Salesforce integration can merge profiles when a Lead converts, and Unknown User Activation can attach anonymous activity once someone is identified. Both only work if the identity rules are set first.

Test those cases in a sandbox. Identity problems are cheap there and painful at scale.

Now look at the data itself. For every important Eloqua field, CDO, activity, and integration, ask what Iterable needs to know, and why.

  • Is it true about the person right now? Put it on the user profile.
  • Is it something they did? Make it an event.
  • Does the event need context? Define event properties.
  • Is it shared across many people, like products, offers, locations, or accounts? That’s a Catalog. Salesforce Accounts, for example, can sync straight into one.
  • Does it change too often to store? Use a data feed or Journey Live Data.
  • Does another platform already own it and keep it current? Consider leaving it there and syncing only what a Journey uses.

Set naming, typing, ownership, and event standards before integrations start creating fields. Iterable’s schema grows fast once data starts flowing.

Don’t start by asking your developers to “send everything to Iterable.” Start with your customer journeys. Find the behaviors that should trigger, change, personalize, or measure an experience. For a B2B team, those might include:

  • content_downloaded
  • webinar_registered
  • webinar_attended
  • demo_requested
  • trial_started
  • pricing_viewed
  • meeting_scheduled
  • opportunity_created

A consumer brand’s list will look completely different. Define each event, its properties, its source, its owner, its expected volume, and the use cases that depend on it. Some will come from your site and apps. Some, like opportunity updates, can now come straight from Salesforce through Iterable’s native integration. Done this way, event tracking becomes a marketing capability you designed, not a stream of app data nobody owns.

Give CDOs their own exercise. For each one, document what it represents, how records get created, how they relate to people or accounts, which campaigns use it, how long the data matters, and what depends on it downstream.

Then pick the future approach. Some CDOs become events. Some become profile data. Some become Catalog data. Some stay outside Iterable. Some get split across several of these. If a CDO was only mirroring Salesforce data, the native integration may now replace the custom sync that fed it.

This is where your Iterable design will look least like Eloqua. That’s fine.

Before rebuilding campaigns, settle the jobs that may disappear when Eloqua does:

  • Where will lead scoring run?
  • Who creates MQLs?
  • How will Salesforce campaign responses be handled?
  • Where will account data live?
  • What replaces Program Canvas data processes?
  • What replaces AppCloud apps?
  • Where will forms and landing pages live?
  • How will operational data get exported?
  • How will sales see marketing engagement?

Iterable’s Salesforce integration closes part of this gap by bringing CRM records in. Engagement flowing back to Salesforce has been announced, so check what’s live when you plan. Until the integration covers it, campaign responses and sales alerts need their own path through middleware or the API.

Treat all of these as architecture decisions with owners and deadlines. Don’t leave them buried inside campaign work.

Only now should you start rebuilding campaigns. Group your Eloqua programs by use case instead of moving them one at a time. You may find that 20 Eloqua Campaign Canvases are variations of the same lifecycle program, and that a handful of flexible Iterable Journeys can replace them.

For each use case, define the entry signal, audience, goal, customer context, channels, decision points, exits, suppression rules, re-entry rules, and how you’ll measure it. Then build the new Journey from those requirements, not from the old Canvas.

Don’t migrate hundreds of email templates before you decide what your Iterable content system should look like. Identify reusable layouts, snippets, personalization patterns, Handlebars logic, Catalog needs, data feeds, Journey Live Data calls, localization, brand standards, and testing requirements.

The same exercise should clear out old content. If you have 147 Eloqua email templates and marketers actively use 12, you need 12 good Iterable templates, not 147 migrated ones.

Map Eloqua Email Groups and consent processes to the choices customers actually made, not to the org history that produced them. Then design your Iterable message channels, message types, subscription handling, and preference center around those choices. Every channel is marked marketing or transactional, and each message type has its own opt-in or opt-out policy.

Set broader governance at the same time. Frequency Management caps volume by channel and message type. Quiet Hours holds or skips sends in each person’s local time. Journey rules, suppression logic, and transactional exceptions belong in the same framework.

Plan for how opens get measured, too. Iterable’s consent-based open tracking adds the tracking pixel only for people who agreed to it, so open rates won’t line up with your Eloqua history. This is your chance to move from campaign-level suppression rules to a customer-level communication policy.

You can’t warm up new IPs and launch a full slate of new campaigns at the same time. So plan for a period when both platforms run.

Best practice is a concurrency period. Eloqua keeps running your current programs while Iterable gets ready to take them over.

The reason is deliverability. New dedicated IPs in Iterable need a gradual warm-up, and Iterable’s own guidance is four to eight weeks of steadily rising volume. Configure sending domains and authentication early, warm up with your most engaged audiences, and let Eloqua carry the rest.

How long the overlap lasts depends on how many Eloqua campaigns you run and how complex they are. A few newsletters move quickly. Dozens of nurtures tied to scoring and the CRM take longer.

During that window, decide which platform owns each campaign and dataset, how unsubscribes and consent changes sync between them, and how you keep anyone from landing in the same program on both. Move campaign families over in groups, on a plan, not all at once.

Your first production Iterable Journeys should prove more than whether an email can be sent. Use them to check identity, events, personalization, integrations, consent, deliverability, analytics, and support.

Then start improving them. Run Experiments. Try Send Time, Channel, and Frequency Decisioning where the use case and your data support them. Predictive Audiences and Brand Affinity can help you find who’s likely to convert or churn. Add channels where they improve the experience, and use behavioral data to cut messages people don’t need and speed up the ones who show real intent.

Iterable’s Nova agents can now take on some routine work too, like reviewing messages before launch, running experiments, writing Handlebars logic, and explaining performance changes. Decide where they help and who approves what they produce. Availability depends on your plan. The goal is an operation that keeps improving after Eloqua is gone.

One Final Test: Would You Build It This Way Today?

One question is worth asking all the way through an Eloqua-to-Iterable migration: “If we were designing this process today, with no Eloqua environment, would we build it this way?” If the answer is no, the migration is your chance to change it.

You don’t need every old field. You don’t need every CDO. You don’t need every campaign or every Program Canvas. And you certainly don’t need to recreate 15 years of accumulated martech decisions just because they exist.

Keep the business requirements that still matter. Keep the customer data that has value. Keep the processes that genuinely work. Then design the rest for Iterable. That’s the difference between moving from Eloqua to Iterable and migrating well.

Relationship One’s Marketing Geeks know both sides of that move. We know the Eloqua environments teams have spent years building, including the Campaign Canvases, CDOs, integrations, CRM processes, AppCloud apps, and the occasional surprisingly important Program Canvas hiding behind the scenes. We also help teams design and implement Iterable around the way they want to engage customers next.

Our Eloqua-to-Iterable Migration Playbook lays out all 12 steps, with the checklists, comparison tables, and scorecard we use with clients. If you’re weighing the move, mapping the gaps, or ready to start, let’s talk. We’ll help you figure out what should move, what should change, what belongs somewhere else, and what you can finally leave behind.

Share This

By |Published On: October 14th, 2026|Categories: MarTech & Innovations|

About the Author: Relationship One

At Relationship One, we empower organizations to modernize their marketing through strategy, technology and data. With a core staff of experienced marketing consultants, integration specialists, data analysts and development gurus, we have a well-respected track record for delivering solutions that meet our customers’ unique business needs.
Recent Posts
Content Categories