12 minutes
h1

In this post, we’ll clarify how Adobe Marketo Engage, Munchkin tracking, and MktoForms2 work together by breaking down the different IDs, what they mean, and when each one is created or used.

Modern customer journeys rarely live on a single system. On the web, Adobe Web SDK (Alloy) and Adobe Marketo Engage Munchkin often run side by side, each issuing its own identifiers and tracking logic. How (or whether) these two are deployed together directly impacts which IDs flow into Adobe Experience Platform (AEP), how resilient your identity graph is, and ultimately how well Customer Journey Analytics (CJA) can bring the data together and surface a more complete journey — from browsing, to lead generation, to closed deal.

In this post, we’ll compare the two most common deployment patterns:

For each scenario, we’ll map all relevant identifiers, show how they land in XDM, and unpack how the data are stitched together in CJA for reporting.

Marketo vs Munchkin

Adobe Marketo Engage is the marketing automation system that manages leads, emails, programs, and campaigns, while Munchkin is the web tracking component of Marketo and consists of a website tracking script in the browser that sends visitor activity back into Marketo and the backend processing. There are more details in the Marketo Engage Lead Tracking API documentation, but we’ll hit the key points here.

IDs and when/how they’re set

ID/Object
Set by
Set when
Identifies
Marketo Lead ID
Marketo server
When a lead/person record is created or updated (e.g., form submit, API).
A known person in Marketo database.
Munchkin token
munchkin.js
When the Munchkin script loads on a page.
A device/browser from Marketo’s perspective.
MktoForms2
forms2.min.js
When the Marketo Forms script loads on a page.
Nothing by itself — it’s an API surface, not an identifier.

Option A: Web SDK without Marketo scripts

When you run Adobe Web SDK (Alloy) without Marketo Munchkin on your site, you’re effectively creating two separate identity islands: one in AEP/CJA, and one in Marketo Engage.

What happens when there are no Marketo cookies and no Marketo web activity?

Without the Marketo Munchkin script on the page, the _mkto_trk cookie is never set. That means there is no Marketo Munchkin cookie available in the browser, and no web activity is logged to the Lead based on page views or clicks by Marketo.

When WebSDK isn’t on the page and when a Marketo Engage form is submitted, the submission is sent to Marketo, which then creates or updates a Person (Lead) record using fields such as email and any other mapped form inputs. By default:

As a result, Adobe Experience Platform (AEP) (which holds ECID-based profiles and web events) and Marketo Engage (which holds person records with email, Lead ID, etc.) remain logically separate unless you deliberately create a linking mechanism.

Link to the documentation:

On bridging identities (ECID ↔ Marketo person)

Marketo Engage’s Munchkin web tracking script opportunistically sends ECID information along with Munchkin web tracking events. If the Munchkin JavaScript sees any WebSDK cookies visible in the session, it will pass those along with the Munchkin web tracking events. If you have configured your Marketo instance with your Adobe IMS Org ID, then the back-end processing will also associate an ECID that contains your Org ID with the same lead in the Munchkin web event. If you haven’t set up the association or if the Org IDs don’t match, then the ECIDs are discarded. Because Munchkin JavaScript reads the Web SDK cookie when it is visible in the session, Web SDK and Munchkin do not need to run on the exact same page at the same time.

One possible (but not out‑of‑the‑box) approach is:

IMPORTANT
However, this design needs careful privacy review for passing either ECID or any ID in hidden form field. ECID is a primary anonymous web persistent identifier and silently capturing it at the moment of form submission can effectively link a visitor’s prior browsing behavior to their identifiable profile. Depending on your use case, this may have implications under laws such as GDPR and CCPA/CPRA. Coordinate with your legal and privacy teams before implementing and ensure your privacy and cookie notices clearly disclose that browsing behavior may be linked to personal data when forms are submitted.

The core problem in Scenario A —

Without a deliberate bridge (hidden field on form submit), these two systems cannot be joined in CJA and every report that requires connecting web behavior to a known lead will fail.

Option B: Web SDK with Marketo scripts

Depending on whether you do or do not pass the Munchkin ID into AEP.

1. With Munchkin ID passed to AEP

When the page loads, Munchkin sets the _mkto_trk cookie with a Munchkin ID, Web SDK sets or reads the ECID and optionally adds the Munchkin ID into identityMap, both IDs are sent together to AEP and treated as identities on the same profile, a form fill then links the Munchkin ID to a Lead via email in Marketo, and finally the Marketo Source Connector sends Lead ID, ECIDs, and lead attributes into AEP to enrich that stitched profile. One thing to highlight is that AEP can receive multiple Munchkin ID (Marketo subscription), but Marketo will only do one Adobe Org ID. Check with the data architectures for identity Merging and business requirements.

2. If no Munchkin ID is passed to AEP

When the page loads, Munchkin still sets the _mkto_trk cookie in the browser and Web SDK sets or reads the ECID, but if the Munchkin ID is not added to identityMap then only ECID is sent to AEP, so identity stitching in AEP relies on shared people-level IDs like email coming from Marketo via the Source Connector rather than on the Munchkin cookie itself.

Decision guide for which scenario should you be in

If you care about connecting web behavior to Marketo leads and CRM opportunities, you need Scenario B.

Why ensuring a common identity between Marketo and Web SDK matters in AEP and CJA

A common identity, like ECID, captured per device/browser cookie in Marketo and WebSDK ensures all lead activities, campaign engagement, and web interactions are linked to the same profiles and identity graphs that will be the foundation for audience activation via Real-Time Customer Data Platform (RTCDP) and audience measurement and insights via CJA.

In CJA, a common Person ID needs to be defined in Connection and serves as the ID CJA uses to stitch data from different data sources. This Person ID also defines your “People” in CJA and is the basis for all People-based metrics in CJA.

After following our deployment recommendations above, to bring Marketo and WebSDK data together in CJA, depending on the reporting requirements and the ID coverage, you may consider using ECID or a consistent person identifier like Email or Marketo Lead ID as the Person ID, along with enabling identity stitching.

As a result of ensuring a common identity across the two data source systems, we can now analyze in CJA each Marketo lead’s engagement across web, email, and offline campaigns (if available via Marketo) to answer questions including, but not limited to: How does my web content influence lead engagement? How do different Marketo campaigns drive web engagement? How are the Marketing Qualified Leads (MQLs) engaging with different web assets, like whitepapers and demo videos, and who are the ones we should re-engage?