MarqIQ
Browse all help topics
How to17 min read

Connect Adobe Journey Optimizer

Last updated 8 October 2026Available onFree TrialProBusinessEnterpriseAdobe Journey Optimizer needs Pro or above, and a Free Trial counts as Pro here. It uses one of your plan’s connected-tool slots. Pro includes two tools besides Google Tag Manager and allows one tool per category, so a Pro workspace cannot hold Journey Optimizer and a second marketing-automation tool at the same time. You also pick one Experience Platform audience: MarqIQ syncs its members and nobody else.

You create an OAuth Server-to-Server credential in an Adobe Developer Console project, then paste its client id and client secret into MarqIQ along with your organisation id and sandbox name. MarqIQ mints its own Adobe token from that pair and replaces it five minutes before each expiry, so nothing needs renewing by hand. Experience Platform has no call that lists every profile, so you then choose one audience and MarqIQ exports its members — if you want profiles from Adobe Campaign Standard instead, connect Adobe Campaign.

Before you start

Plan required

Journey Optimizer is a Pro tool, and a Free Trial ranks level with Pro. On a lower plan the connect request comes back as "Adobe Journey Optimizer is part of the Pro plan — this workspace is on Starter", naming your own plan. Pro allows one tool per category, so if Marketo, Pardot (MCAE), Mailchimp, Salesforce Marketing Cloud or Adobe Campaign is already connected on Pro, disconnect it or move to Business. Pro also stops at two tools in total besides Google Tag Manager.

Permissions required

You need somebody who can open your organisation’s Adobe Developer Console, create a project, add the Adobe Experience Platform API to it and generate an OAuth Server-to-Server credential. That credential’s technical account needs a product profile carrying Profile, Segmentation, Catalog and Data Access permissions — AEP Default All-Access is the profile that covers all four. Schema Registry access is needed as well, but only for the field group; the connection itself does not use it.

  • Your Organization ID — the IMS org, which ends in @AdobeOrg. This is the one field the connect route refuses to go on without.
  • Your Client ID — the OAuth Server-to-Server credential’s client id, which the Console also labels API Key. MarqIQ sends it as Experience Platform’s x-api-key header.
  • Your Client Secret — the same credential’s secret. It begins p8e- and it is what makes the connection last.
  • Your Sandbox Name — the sandbox the audience lives in. Leave it as prod for the production sandbox.
  • The Developer Console is at developer.adobe.com/console and Adobe’s own authentication reference is at developer.adobe.com/journey-optimizer-apis/references/authentication

One audience, chosen by you

Real-Time Customer Profile answers one identity at a time and has no "list every profile" call. The documented way to read profiles in bulk is to evaluate an audience, export its members to a dataset and read that dataset’s files — which is what MarqIQ does. Until you pick an audience on the connection page, every sync stops with "Pick the audience to sync on the Adobe Journey Optimizer page first — Experience Platform exports profiles by audience, never all at once."

Create the credential in Adobe

  1. Open the Adobe Developer Console at developer.adobe.com/console

  2. Create a project.

  3. Add the Adobe Experience Platform API to that project.

    Without it Adobe may still issue a token, and Experience Platform then refuses every call. MarqIQ reports that as "Experience Platform rejected the token (403) — check the project has the Experience Platform API and a product profile with Profile, Segmentation, Catalog and Data Access access."

  4. Choose OAuth Server-to-Server credentials.

    The blue panel on the connect page offers JWT as well. MarqIQ asks Adobe IMS for a token with the client-credentials grant, and only an OAuth Server-to-Server credential answers that grant, so choose it.

  5. Assign a product profile carrying Profile, Segmentation, Catalog and Data Access permissions.

    AEP Default All-Access covers all four. MarqIQ reads audiences and merge policies through Segmentation, creates and reads its export dataset through Catalog, and downloads the exported files through Data Access — so a profile missing any one of them connects and then fails mid-sync.

  6. Copy the Client ID from that credential.

  7. Copy the Client Secret from that credential.

    It begins p8e- and Adobe reveals it when it is generated. Keep it: this is what lets MarqIQ carry on syncing without anyone visiting the page.

  8. Copy your Organization ID — the value ending @AdobeOrg.

  9. Note which sandbox holds the audience you want.

    The production sandbox is called prod. A development sandbox has its own name, and audiences do not cross between them.

Connect it in MarqIQ

  1. Open Connected Tools in MarqIQ.

    The page is headed Integrations.

  2. Click Add more.

    That screen lists every tool in the catalogue. A workspace that has already added Journey Optimizer to its shortlist finds the card on Connected Tools under Marketing Automation instead.

  3. Choose Adobe Journey Optimizer.

  4. Paste the secret into Client Secret (lasting connection).

  5. Paste the org id into Organization ID.

  6. Paste the client id into Client ID.

    MarqIQ mints a token only when both the client id and the secret are filled in. One without the other is treated as neither.

  7. Type the sandbox into Sandbox Name.

    Left blank, MarqIQ uses prod.

  8. Click Connect AJO.

    MarqIQ asks Adobe IMS for a token, then calls Experience Platform’s merge-policies endpoint to prove the token reaches your sandbox. It reads the sandbox’s title back and names the connection Adobe Journey Optimizer — <sandbox>, which is what the green card shows along with the org id.

    If the tool is already connected the button reads Update credentials instead.

  9. Choose an audience under Audience to sync.

    The list is every audience in that sandbox, newest change first. MarqIQ reads up to twenty pages of a hundred, so 2,000 audiences is the ceiling on that list.

  10. Click Sync now.

    Connecting starts the sync on its own when an audience is already chosen. The first run on a new connection has no audience yet, so you start it from this button after picking one.

The temporary alternative

If the client secret is out of reach, paste a token into Access Token (instead of a secret; 24h) and leave the secret empty. MarqIQ answers "Connected with a temporary access token: it expires within 24 hours. Reconnect with the client secret for a lasting connection." and every sync log then carries "Connected with an access token only: Adobe tokens expire within 24 hours and syncs will stop until the integration is reconnected with the client secret." Nothing in MarqIQ can renew that token: when it dies, scheduled syncs stop until someone reconnects.

What a sync does, stage by stage

Adobe’s jobs take minutes, so one sync run advances a stage and hands the rest to the next run. The Record sync box under Audience to sync names the stage it is on.

StageWhat the runner saysWhat is happening
segmentJobExperience Platform is evaluating the audience — usually a few minutes…MarqIQ created a segment job for your chosen audience and is polling it every five seconds.
exportJobExperience Platform is exporting the audience’s profiles…The audience evaluated. MarqIQ read your default merge policy and started an export job into its dataset.
filesReading the exported profiles…The export finished. MarqIQ is downloading the batch’s file parts and writing profiles 500 at a time.
doneExport read.Every part was read. The next run starts a fresh export.

Note

A job older than six hours is abandoned rather than polled for ever, and so is an export left over from a different audience. Either way the log says "A previous export was abandoned (audience changed or job too old); starting a fresh one."

What comes across

  • The members of the one audience you chose. Nobody outside it, and no journeys, messages or offers.
  • Email, taken from personalEmail.address, then workEmail.address, then the email identity — the first of those that has a value.
  • First name and last name from person.name, company from workAddress.organization or the first entry under organizations, and job title from person.jobTitle or workAddress.jobTitle.
  • Email status as the lifecycle stage, and person.status as the lead status.
  • Created and last-modified dates from the record’s own _repo.createDate and _repo.modifyDate.
  • The whole XDM record, flattened with dots exactly as your schema names it — so `homeAddress.country` and `_yourtenant.marqiq_utm.utm_source` are the field names you group a report on. MarqIQ follows the nesting six levels down and stops there.
  • Identities, folded to `identity.<namespace>`. MarqIQ keys each record on the first it finds of email, crmid, customerid, ecid or aaid, and falls back to any other identity the profile carries.

What is dropped on the way in

Six branches of an XDM profile are left out of the flattened record: segmentMembership (it is the audience you asked for, not a fact about the person), consents, timeSeriesEvents, extSourceSystemAudit, the raw identityMap, which is folded into the identity fields above instead, and _repo, whose two dates are kept as the created and last-modified dates. A profile with no identity at all cannot be keyed, so it is skipped and the log counts how many: "3 profile(s) in a file had no identity and were skipped."

Take care

Owners never arrive. Experience Platform has no owner on a profile, so MarqIQ stores none, and anything that groups by owner is empty for this tool by nature rather than by omission.

Note

Every run is a full export. Profile has no changed-since listing, so there is no incremental mode to fall back on — the writes are upserts, which makes repeating the export safe rather than wrong. There is no deleted-profiles feed either, so the log ends with "Experience Platform has no deleted-profiles feed; profiles that left the audience stay here until the next export replaces them."

What MarqIQ writes into your sandbox

Three things, all of them additions. MarqIQ never edits a profile, a journey, a message, an audience, a merge policy or a schema you already have.

  • A dataset named MarqIQ profile export, created on the first sync and reused after that. It carries the Profile union schema and holds parquet files. MarqIQ finds it by name before making a second one.
  • A segment job and an export job on each run. That is how the profiles get out; nothing else is altered by them.
  • An XDM field group titled MarqIQ UTM Tracking, when you click Create field group. It holds MarqIQ’s tracking fields under `_<yourTenantId>.marqiq_utm.<field>` and extends the XDM Individual Profile context.
  1. Click Create field group under UTM Field Group.

    MarqIQ reads your tenant id from the schema registry first, because a literal container name is rejected by Adobe. It then creates the field group and saves a mapping for every tracking field.

  2. Add MarqIQ UTM Tracking to your XDM Individual Profile schema yourself.

    MarqIQ creates the field group and stops there. It does not attach it to your schema, and until you do, no profile carries those fields.

Seventeen fields in one group

The field group MarqIQ builds carries all seventeen fields it tracks: nine under Most Recent UTM Fields and eight under First Touch UTM Fields. They are listed on the same screen, below the orange card.

Tip

Where a field already exists in your schema under a different path, click Map XDM path on that row and type the path — for example `_yourtenant.utm_source`. The mapping is stored in MarqIQ; your Adobe schema is untouched by it. Map XDM path only appears once the field group exists, so create the field group first.

What connecting Journey Optimizer unlocks

  • Overview, Source truth and Audience health. These three run on the profiles themselves and need nothing else.
  • Lead scoring and Funnel, when the exported profiles carry a score field or a stage ladder. Where they do not, the card says MarqIQ has not verified how that works in this tool and will not guess at the setup, rather than judging your data.
  • Form fills, once MarqIQ’s own tracking script has captured fills on your website. MarqIQ does not read Journey Optimizer’s own forms.
  • Field Mapping, so MarqIQ’s tracking fields line up with paths in your XDM schema.
  • An Audit Report over your profiles. It measures completeness on email, first name, last name, mobile, company and country, read from personalEmail.address, person.name.firstName, person.name.lastName, mobilePhone.number, workAddress.organization and homeAddress.country.
  • Journey Optimizer as a source in reports and in the pivot, described there as "Audience profiles exported from Experience Platform".

And what it does not

  • Field discipline. It judges every value a field has held over time, and the card reads "This tool does not expose a record’s change history, so there is nothing to hold a field to."
  • Email. MarqIQ reads per-send results from HubSpot, Mailchimp, Salesforce Marketing Cloud and Marketo only, and the card reads "This tool does not send marketing email, so there are no send results to read." Sends you make from Journey Optimizer are not counted here.
  • Automations. The card reads "MarqIQ cannot read this tool’s automations yet." Your journeys are not read.
  • Forecast accuracy. Journey Optimizer syncs profiles and no deals, so there is nothing to forecast and the card says MarqIQ has not verified how a forecast on deals works in this tool.
  • Source Tracking Implementation and Add Fields to Forms. MarqIQ writes hidden fields onto live forms for HubSpot and Marketo only.
  • Template Studio. It authors for HubSpot, Marketo, Pardot (MCAE) and Salesforce Marketing Cloud.

If it did not work

"Organization ID is required"

Why: The Organization ID box is empty. It is the one field checked before any call to Adobe is made.

Fix: Paste the IMS org id — the value ending @AdobeOrg — into Organization ID and click Connect AJO again.

"Enter the client id and secret (lasting connection) — or, for a temporary connection, an access token."

Why: Neither route was filled in: no client id and secret pair, and no access token either. Filling in one of the two credential boxes and not the other reads the same way.

Fix: Fill in both Client ID and Client Secret (lasting connection). Use Access Token (instead of a secret; 24h) only when the secret is out of reach.

"Adobe IMS refused to issue a token — check the client id, secret and scopes in the Developer Console."

Why: Adobe would not mint a token from that pair. A mistyped secret does this, and so does a credential that does not hold every scope MarqIQ asks for: openid, AdobeID, read_organizations, additional_info.projectedProductContext and session. There is no box on the connect page to change that list.

Fix: Generate the OAuth Server-to-Server credential again in the Developer Console, leave its scopes as Adobe set them, and paste the new client id and secret into MarqIQ.

"Invalid or expired Access Token."

Why: Experience Platform answered 401. Where you connected with a pasted token rather than the secret, this is what an expired token looks like — Adobe’s tokens live about a day.

Fix: Paste the Developer Console client id and secret into the form and click Update credentials. MarqIQ then mints its own tokens and replaces each one five minutes before it expires.

"Forbidden — ensure your technical account has AEP / AJO product profiles assigned."

Why: Experience Platform answered 403. Adobe issued a token, and the technical account behind it is not entitled to the sandbox you named.

Fix: In the Developer Console, assign the credential a product profile carrying Profile, Segmentation, Catalog and Data Access permissions — AEP Default All-Access covers all four — then connect again. Check the sandbox name too: a credential entitled to prod cannot read a development sandbox.

"Adobe Experience Platform returned 429." or another number

Why: Adobe answered the merge-policies check with something other than 401 or 403, so MarqIQ quotes the status rather than guessing at a reason. A rate limit or an Adobe outage reads this way.

Fix: Wait a few minutes and click Connect AJO again. If the same number comes back every time, check Adobe’s status page for your region before changing anything in the form.

"Adobe Journey Optimizer is part of the Pro plan — this workspace is on Starter."

Why: Journey Optimizer is a Pro tool, and the connect route enforces that rather than leaving it to whether the button was drawn.

Fix: Move to Pro or above. A Free Trial counts as Pro, so a trial workspace is not refused for this reason.

"Pro allows 1 tool from this category, and Marketo is already connected. Business and above allow more than one from the same category."

Why: Journey Optimizer sits in Marketing Automation, and Pro allows one tool per category. The message names whichever tool of yours is holding the place.

Fix: Disconnect the tool the message names, or move to Business. A separate message — "Pro includes 2 tools besides Google Tag Manager, and this workspace has connected 2" — means you have run out of slots overall rather than in this category.

"This workspace is read-only. Renew the subscription to connect tools."

Why: The subscription has lapsed. A read-only workspace can be looked at and cannot connect anything.

Fix: Renew the subscription from Billing, then connect again. Nothing already synced is lost while a workspace is read-only.

The sync ends immediately with "Pick the audience to sync on the Adobe Journey Optimizer page first — Experience Platform exports profiles by audience, never all at once."

Why: No audience is saved on the connection, and Experience Platform exports profiles by audience only.

Fix: Choose an audience under Audience to sync on the Adobe Journey Optimizer page, then click Sync now.

The audience list is empty, or shows "Could not list audiences"

Why: Either the sandbox holds no audiences, or the credential cannot reach Segmentation in it.

Fix: Check the Sandbox Name on the connection matches the sandbox your audiences live in. Then check the credential’s product profile includes Segmentation. Click the refresh button beside the list to try again.

Choosing an audience answers "Pick an audience"

Why: The id that reached MarqIQ is not one it recognises as an audience id. An empty choice in the dropdown does this.

Fix: Click the refresh button beside the list, then pick a named audience from it rather than the "Choose an audience" placeholder.

"No merge policy found in this sandbox — create one under Profiles → Merge policies."

Why: An export job needs a merge policy, and this sandbox has none. MarqIQ takes the default policy, or the first one, and found neither.

Fix: Create a merge policy in Experience Platform under Profiles → Merge policies, then click Sync now.

"Experience Platform rejected the token (403) — check the project has the Experience Platform API and a product profile with Profile, Segmentation, Catalog and Data Access access."

Why: The connection reached Experience Platform at connect time — that check is one merge-policies call — and a later stage needs Catalog or Data Access, which the product profile does not grant. The same sentence appears with 401 when the token itself is refused.

Fix: Widen the credential’s product profile to cover Profile, Segmentation, Catalog and Data Access, then click Sync now. The message names those four for that reason.

"Could not read your Experience Platform tenant id (schema registry /stats). Check the connection has Schema Registry access."

Why: Creating the field group needs your own tenant container, and MarqIQ reads that id from the schema registry. A credential without Schema Registry access connects and syncs, and stops here.

Fix: Grant the credential Schema Registry access in the Developer Console, then click Create field group again.

Creating the field group answers with a message from Adobe, or "Failed to create field group"

Why: The schema registry refused the field group and MarqIQ shows Adobe’s own words. A field group already titled MarqIQ UTM Tracking in your tenant is the usual reason.

Fix: Open the AEP Schema Editor at experience.adobe.com/#/data-collection/schemaeditor and look for a field group of that title. If one is there, add it to your XDM Individual Profile schema instead of creating a second.

"Creating fields in Adobe Journey Optimizer is a paid feature — upgrade to create them, or map an existing field."

Why: Making fields inside your own tool is a paid feature, and this workspace has no paid subscription. The button shows Paid feature · Upgrade in place of Create field group.

Fix: Upgrade. Mapping is the other half of that message, and Map XDM path only appears once the field group exists, so on a free plan upgrading is the way through.

"Audience evaluation failed" or "Profile export failed"

Why: Adobe’s own job failed or was cancelled. MarqIQ quotes Adobe’s first error message after the colon when there is one.

Fix: Open the audience in Experience Platform and check it evaluates there. Then click Sync now — MarqIQ starts a fresh segment job rather than resuming the failed one.

"Adobe connection is incomplete — reconnect the integration." or "Adobe connection has no credentials that can mint a token — reconnect with the Developer Console client id and secret."

Why: The stored connection is missing its org id, or it has neither a client secret nor a live access token. A connection made with a pasted token that has since expired reads this way.

Fix: Fill in Organization ID, Client ID and Client Secret (lasting connection) again, then click Update credentials.

"Invalid Adobe credentials"

Why: The stored credentials could not be decrypted, so the sync stopped before reaching Adobe. This is a fault on our side, not a wrong secret.

Fix: Paste the client id and secret into the form and click Update credentials, which writes them again. Tell support if it comes back.

The sync keeps reporting a stage and never finishes

Why: Adobe’s segment and export jobs take minutes, and one run of the sync advances one stage before handing over. That is the design, not a stall.

Fix: Leave it. The next run, manual or scheduled, picks the stage up. A job that is genuinely stuck is abandoned after six hours and a fresh export starts on its own.

"Lost the sync lease mid-walk — stopping so two runs cannot write the same state."

Why: Another run took the lease while this one was reading files. MarqIQ stops rather than let two runs write the same export state.

Fix: Nothing. The run that holds the lease carries on. Click Sync now once it reports finished if you want the next stage straight away.

"Another sync is already running for this workspace — it will finish on its own."

Why: The scheduled run holds this workspace. Only one sync per tool runs at a time, by design.

Fix: Nothing. Your profiles are being refreshed right now, which is why the message is shown in green rather than red.

A profile you removed from the audience in Adobe is still in MarqIQ

Why: Experience Platform publishes no deleted-profiles feed, and MarqIQ does not infer a deletion from a record’s absence.

Fix: Wait for the next export, which replaces what is there. The sync log says this in as many words when a run completes.

Next steps

Related articles

Was this article helpful?