Connect Marketo
You create an API-Only user and a LaunchPoint Custom Service in Marketo, then paste three values into MarqIQ: Client ID, Client Secret and Munchkin ID. MarqIQ never stores a Marketo token — each job asks your instance for a short-lived one and throws it away — so nothing expires on a schedule and there is nothing to renew. Marketo and HubSpot are the only two tools where MarqIQ writes hidden fields onto your live forms and builds the source-tracking campaign for you.
Before you start
Permissions required
You need a Marketo admin. Two things are created in Marketo and both sit behind admin rights: an API-Only user whose role carries the permissions below, and a LaunchPoint Custom Service bound to that user. The role decides what MarqIQ can do; the LaunchPoint service only carries the credentials.
LaunchPoint alone is not enough
A Custom Service bound to a user whose role has no API permissions gives you credentials that sign in perfectly and read nothing. MarqIQ only checks that Marketo issues a token when you connect, so that instance connects cleanly and then returns nothing. Run diagnostics is what proves the role.
Plan required
Connecting needs Starter or above. Create field needs an active paid subscription. A free trial is not one, and the button answers "Creating fields in Marketo is a paid feature — upgrade to create them, or map an existing field." The first-touch backfill and the form and campaign writes need Pro or above. Template Studio needs Pro or above, and creating an email or landing page in Marketo from it is on Enterprise and Partner, or on a 7-day feature trial.
- A Client ID and a Client Secret, both from Admin → Integration → LaunchPoint → your MarqIQ service → View Details.
- Your Munchkin ID, from Admin → Integration → Munchkin, shown there as Munchkin Account ID — for example 123-ABC-456.
- Adobe documents the Custom Service at experienceleague.adobe.com/en/docs/marketo-developer/marketo/rest/custom-services and authentication at experienceleague.adobe.com/en/docs/marketo-developer/marketo/rest/authentication
Note
There is no link here that opens your own Marketo admin screens. Those live on your instance’s sign-in host, which MarqIQ never learns — it holds the API address only. Navigate to them from inside Marketo.
Create the API role in Marketo
Marketo grants API permissions through a role, not through the LaunchPoint service. Build the role first.
Sign in to Marketo as an admin.
Go to Admin → Security → Users & Roles → Roles.
Create a new role named MarqIQ.
Tick Read-Only Lead under Access API.
This is the one permission nothing works without: the people themselves, every field your instance defines, and the field catalogue the analyses label their columns from.
Tick Read-Only Activity as well.
Optional only in the sense that the connection survives without it. No Marketo sync ever finishes without it. It is Marketo’s activity log, and five things sit behind it — keeping the synced copy fresh after the first full walk, noticing people removed in Marketo, who last wrote a field and why, email results per person, and form fills.
The removals lane runs on every sync. When Marketo refuses it the whole run stops before anything is committed, so the walk restarts from the same place for ever.
Tick the optional permissions for the parts of MarqIQ you want.
- Read-Only Assets — your forms, smart campaigns, programs, landing pages, emails and templates by name. The Forms, Automations, Email and landing-page analyses read from here, and so does Template Studio’s destination picker.
- Read-Write Lead — writing values back onto people: the one-click first-touch backfill, applying a change set you approved, and on Enterprise and Partner, or on a 7-day feature trial, writing standardised or enriched values. Not read-only.
- Read-Write Schema Custom Field — the Create field button on the Marketo page, and the Schema write row in diagnostics. Not read-only.
- Read-Only Schema Standard Field — a fallback route to your field list, reached only when Marketo’s two describe endpoints both come back empty, plus the Schema read row in diagnostics. Most instances never reach it. Read-Write Schema Standard Field satisfies it too, and grants more than MarqIQ uses.
- Read-Write Assets — everything MarqIQ builds inside Marketo: hidden tracking fields on the forms you pick, the Source Tracking smart campaign and its folder, and Template Studio’s templates, drafts, folders, programs and images. Not read-only.
Open the Users tab.
Invite a new API-Only user.
An API-Only user cannot sign in to the Marketo interface, which is what you want — this account exists for MarqIQ and nothing else.
Give that user the MarqIQ role.
Create the LaunchPoint Custom Service
Go to Admin → Integration → LaunchPoint.
Choose New → New Service.
Name the service MarqIQ.
Choose Custom as the service type.
Pick your API-Only user as the service’s user.
Click View Details beside the saved service.
Copy the client id and the client secret shown in that panel.
Go to Admin → Integration → Munchkin.
Copy the value shown as Munchkin Account ID.
It looks like 123-ABC-456. Copy the ID itself, not a web address.
Connect it in MarqIQ
Open Connected Tools in MarqIQ and click the Marketo card.
The page is headed Integrations, and Marketo sits under the Marketing Automation heading.
Find the REST API Credentials card.
Paste the client id into Client ID.
Paste the client secret into Client Secret.
Paste your Munchkin ID into Munchkin ID.
MarqIQ trims stray spaces and trailing slashes, refuses anything that is not letters, numbers and hyphens, and builds the API address from what is left. Your sign-in host is never used.
Click Connect Marketo.
MarqIQ asks your instance for a token before it saves anything. Nothing is stored unless Marketo issues one, so a wrong secret fails here rather than on the first sync.
If Marketo is already connected the button reads Update credentials instead. Use it to replace a rotated secret without losing your field mappings.
Check the connection name.
MarqIQ names the connection after the text you pasted — "Marketo (123-ABC-456)". Read it once to confirm it is the instance you meant.
Prove the role, before you trust the numbers
Click Run diagnostics on the Connection Diagnostics card.
Expect four green rows.
- OAuth token — "Credentials accepted — token issued."
- Lead read (describe) — "N lead fields visible." Compare N against what Admin → Field Management shows.
- Schema read — "Can read lead field schema."
- Schema write — "API role has schema write permission. Field creation should work." Diagnostics sends an empty list, so no field is made.
Read the closing line narrowly.
Four green rows and "All checks passed — your Marketo connection is fully operational." cover the token, the lead read and the two schema permissions. They do not cover Read-Only Activity, so an all-green card sits quite happily beside a sync that fails on every run.
The proof for the rest is a sync that finishes without an error and reports a person count in the region of what Marketo shows under Database, and analyses that name your real forms, campaigns and emails.
Connecting starts the first sync on its own. The chunk loop runs in your browser, so the status line says "keep this tab open". Close the tab and the run stops where it is; the next run, manual or scheduled, carries on from the saved cursor. Click Sync now to start one by hand.
Note
The very first sync in a new workspace can answer “This workspace’s database was just created, so nothing was synced in this run. Run the sync again — or it starts on its own within the hour.” Click Sync now again, or leave it.
What comes across
- People, with every field your instance defines — not a fixed list. MarqIQ asks Marketo what it has, splits the names into URL-sized groups, merges the answers per person, and saves the result as the field catalogue the analyses label their columns from.
- Everyone, not only the recently active. Marketo has no "list all people" call, so the first sync walks the person-id space in batches of 300 until roughly ten thousand ids in a row come back empty. It runs in slices, and a 48,000-person instance takes a dozen or more of them.
- Person changes since the last sync, from the lead-change feed, watching every discovered field rather than a chosen few.
- People removed in Marketo, so a record deleted there stops counting here — and only the ids Marketo itself names.
- Field-change activity for the people an analysis is judging, 750 days back: the field, the old value, the new value, and what caused it — a form, a named smart campaign, a list import, a person editing the record, the API, or the CRM sync.
- Which person fields Marketo itself marks read-only, so they are dropped from the field-discipline checks and kept out of the list Field Mapping offers you.
- Email activity — sent, delivered, bounced, unsubscribed, opened, clicked — counted as people rather than events, with Marketo’s own Is Bot Activity flag used to keep security-scanner opens and clicks out of your open and click rates.
- Form fills, your approved forms, web-page visits, landing pages, programs, and smart campaigns with their state, type, dates and Marketo’s own "invalid" flag.
- Design Studio and Marketing Activities structure — folders, programs, channels, templates, emails, landing pages and each form’s fields — when you use Template Studio.
What MarqIQ writes back
Everything MarqIQ creates in Marketo, it creates because you pressed something. Nothing is made on a schedule; the scheduled job only reads and syncs.
- Person field values, for the one-click first-touch backfill — where the first-touch field is empty and its most-recent counterpart holds something. At most 2,000 people per run; run it again for the rest.
- Person field values, when you apply a change set you approved: empty fields only, each one re-checked against the live record immediately before the write and skipped if someone got there first. At most 500 changes in one set.
- Person field values, when you write standardised or enriched values back, on Enterprise and Partner or a 7-day feature trial. This one can replace a value. At most 500 people a run, with no approval step and no undo.
- One custom person field, when you press Create field — a 255-character text field named after the standard key, for example utm_source_most_recent. MarqIQ never removes a Marketo field.
- Hidden tracking fields on the forms you pick. The field is added, flipped to hidden, and the form’s draft is then approved.
- One smart campaign, "MarqIQ - Source Tracking (Copy Most Recent to First Touch)", with the full configuration recipe written into its description. Nothing activates it.
- A folder named "MarqIQ" to hold that campaign, because Marketo refuses campaigns created at the workspace root. If Marketo refuses folder creation everywhere, MarqIQ places the campaign in a folder or program you already have rather than failing.
- Template Studio: a template in Design Studio, approved straight afterwards because Marketo only offers approved templates when building an asset; then an email or landing page built from it, left as a DRAFT.
Approving a form makes the change live
When MarqIQ adds fields to a form it approves that form, which publishes the change at once on every page embedding it — along with anything else sitting unapproved in that draft. If the approval fails you are told the fields were left as a draft.
The backfill judges on the last sync
A change set re-reads the live record the moment before it writes. The first-touch backfill does not — it works from the copy taken at the last sync, so a first-touch field filled in Marketo since then is overwritten. Run a sync first if that matters. Undoing a change set puts the previous value back, and because that value was empty MarqIQ sends Marketo’s NULL token, which clears the field. Undo is refused more than 30 days after the apply.
What MarqIQ will not do in Marketo
- It never deletes a person and never deletes a Marketo field.
- From its screens it deletes one thing only, inside Template Studio and on an asset it made itself: the unused modules it strips out of a draft email while building it.
- It never sends an email, never activates a smart campaign, and never publishes an email or landing page. The Source Tracking campaign arrives inactive.
- It cannot link a finding into Marketo. MarqIQ holds the API address and cannot work out your sign-in address, so records are listed in full here instead. A landing page or smart campaign shows a link only when Marketo itself returns one.
What connecting Marketo unlocks
Marketo feeds eight of the nine analyses that report findings: Source truth, Field discipline, Audience health, Lead scoring, Funnel, Form fills, Email and Automations.
- Source Tracking Implementation — the packaged flow that creates the UTM fields, adds them as hidden fields on your forms, and creates the tracking campaign. Marketo and HubSpot are the only two tools that support all three steps.
- Add Fields to Forms — pick existing fields, choose visible or hidden, and place them on as many forms as you like.
- Template Studio — email templates in Marketo’s own markup, on Pro and above. Creating the email or landing page in Marketo from that template is on Enterprise and Partner, or on a 7-day feature trial.
- Audit Report — field completeness, email, form and page activity, and automations, as a shareable report.
- Lead Field Mapping on the Marketo page — MarqIQ scores every Marketo field against each tracking field and shows the top suggestions, badged Best match, Good match or Possible. Use Create field to make a missing one, or Map existing to point at a field you already keep.
Forecast accuracy does not run on Marketo
Marketo’s API does not expose opportunity creation by timeframe, so there are no deals or opportunities here and the Forecast accuracy analysis has nothing to judge. Opportunities live in the CRM Marketo syncs with — connect that CRM to audit deals.
The limits, stated
- Marketo’s own retention sets the ceiling. Records of removed people are pruned after about 14 days, which is why that lane runs on every sync; field-change history is kept about 25 months, so MarqIQ looks back 750 days.
- Reads are capped and every cap is disclosed: the audit reads at most 3,600 activities and 2,000 assets of each type, email results stop at 45,000 activities with subject lines read for 80 emails, and the Automations analysis reads the first 4,000 smart campaigns.
- The two form-writing screens read your form list one page deep — 200 forms, no paging — so a larger instance will not see all of its forms there, even though the Forms analysis pages through 2,000.
- The incremental sync names the fields it wants changes for, and that list is trimmed to fit the request. On an instance with very many fields, an edit to a field past that point produces no change record, and stays invisible until a full re-read reaches that person.
- The first sync walks the id space blind. If MarqIQ holds no Marketo records yet and the first 350,000 ids come back empty it gives up and falls back to the change feed, so an instance whose person ids start above that is never fully backfilled.
- Marketo’s daily API quota is shared with everything else that calls your instance, and a full backfill is thousands of calls.
If it did not work
"Client ID, Client Secret, and Munchkin ID are required"
Why: One of the three boxes is empty. All three are required and MarqIQ checks before it calls Marketo.
Fix: Fill in all three on the REST API Credentials card and click Connect Marketo again.
"Munchkin ID may contain only letters, numbers, and hyphens"
Why: You pasted something that is not a Munchkin ID — usually a full web address, or an ID carrying a dot, a slash or an @. MarqIQ builds the API host from this value, so anything else is refused before a single call is made.
Fix: Go to Admin → Integration → Munchkin in Marketo and copy Munchkin Account ID on its own. It looks like 123-ABC-456.
"Marketo endpoint host could not be resolved"
Why: The Munchkin ID is well formed but names no real instance, so the address MarqIQ built does not exist.
Fix: Check the ID character by character against Admin → Integration → Munchkin, and paste it again.
"Marketo returned HTTP 404. Check your Munchkin ID and credentials."
Why: Your instance answered, but not with a token. A 404 usually means the Munchkin ID belongs to a different instance; a 401 or 403 means the credentials were refused.
Fix: Confirm the Munchkin ID and the LaunchPoint service belong to the same Marketo instance, then paste all three values again.
"Marketo auth failed — verify your Client ID and Client Secret."
Why: Marketo issued no access token. Where Marketo gives a reason of its own, MarqIQ shows that reason instead of this sentence. The commonest cause is a secret that has been rotated, or a LaunchPoint service that has been removed.
Fix: Open Admin → Integration → LaunchPoint → your MarqIQ service → View Details, copy both values again, and click Update credentials.
The connection is refused with an upgrade message naming your plan
Why: Marketo uses one of your plan’s tool slots, and the allowance is checked before your credentials are. A Starter workspace that has connected one tool already reads "Starter includes 1 tool besides Google Tag Manager, and this workspace has connected 1 (Mailchimp). Disconnect one, or move up a plan." Free Trial and Pro include two tools but only one from each category, so there the refusal reads "Pro allows 1 tool from this category, and Mailchimp is already connected. Business and above allow more than one from the same category."
Fix: Disconnect the tool the message names, or move up a plan. Business and above set no per-category limit. Reconnecting something already connected is always allowed, so rotating a secret is never blocked by the allowance.
A write is refused with "… is part of the Pro plan — your workspace is on Starter."
Why: The write is gated on the plan, not on the connection. Creating the Source Tracking campaign, adding fields to forms and the first-touch backfill all need Pro or above. Creating an email or landing page in Marketo is on Enterprise and Partner, or on a 7-day feature trial. The message names the step, the plan it belongs to and the plan you are on.
Fix: Move up a plan, or do that step in Marketo yourself. Reading, syncing and the analyses are untouched by this.
"This workspace is read-only. Renew the subscription to connect tools."
Why: The subscription has expired. An expired workspace can read what it has and connect nothing new.
Fix: Renew the subscription from Billing, then connect Marketo again.
Diagnostics stops at the first row with "Auth failed"
Why: Marketo would not issue a token, so nothing after that row can be tested. Diagnostics stops there on purpose.
Fix: MarqIQ tells you what it wants: "Double-check your Client ID, Client Secret, and Munchkin ID. Re-enter them and click Connect Marketo."
Lead read (describe) is red and the fix names a permission
Why: Marketo answered with error 603, which is access denied. The role behind your API-Only user is missing the lead permission.
Fix: Follow the fix MarqIQ prints: "Your API role is missing Read-Only Lead or Read-Write Lead. Enable it under Admin → Security → Users & Roles → Roles." Then click Run diagnostics again.
Schema read or Schema write is red
Why: The same 603. Schema read wants Read-Only Schema Standard Field or Read-Write Schema Standard Field; schema write wants Read-Write Schema Custom Field.
Fix: Tick the named permission in Admin → Security → Users & Roles → Roles → edit your API role → Access API, then run diagnostics again. Schema write only affects Create field, so a red row here leaves reading and syncing untouched.
All four diagnostic rows are green and every sync still fails
Why: Diagnostics covers the token, the lead read and the two schema permissions. It never tests Read-Only Activity, and no Marketo sync finishes without that one. The sync quotes Marketo’s refusal back — "Deleted leads error: Access denied", "Lead changes error: Access denied", or a paging-token failure. All of them are error 603.
Fix: Tick Read-Only Activity on the role in Marketo and click Sync now. Nothing needs reconnecting — the role is read fresh on every job.
"Could not load Marketo fields"
Why: The Lead Field Mapping card could not reach your schema. MarqIQ reports "Marketo auth failed: …" when the credentials were refused, and "Could not fetch Marketo fields: …" when Marketo answered but not with a field list.
Fix: Run diagnostics first. A red OAuth token row is a credentials problem; a red Lead read (describe) row is a role problem.
Create field fails with "Access denied"
Why: Marketo error 603 again, on the schema-write call.
Fix: MarqIQ prints the whole path: "In Marketo go to Admin → Security → Users & Roles → Roles → edit your API role → enable Read-Write Schema Custom Field under the Access API section, then reconnect."
"The field API name is already in use by another Marketo field."
Why: Marketo error 701. A field with that API name exists already. Error 702 is the same story for the display name.
Fix: Click Map existing instead and pick the field from the dropdown. Mapping records the link in MarqIQ and creates nothing in Marketo.
"Marketo daily API quota reached. Try again tomorrow or reduce API usage."
Why: Marketo error 607. The daily quota is shared with everything else that calls your instance, and a full backfill is thousands of calls.
Fix: Wait for the quota to reset. A shorter wait fixes error 606, "Marketo API rate limit reached" — give it a minute and try again.
"Creating fields in Marketo is a paid feature — upgrade to create them, or map an existing field."
Why: Creating a field inside your own tool is gated on a paid plan, not on Marketo.
Fix: Upgrade, or create the field in Marketo yourself and link it with Map existing.
"Invalid Marketo credentials — please reconnect."
Why: The sync could not read the stored credentials back. This is what a rotated secret looks like from the sync side.
Fix: Paste all three values again on the REST API Credentials card and click Update credentials.
"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 data is being refreshed right now. The message is shown in green rather than red for that reason.
Creating the smart campaign answers that Marketo refused every placement
Why: Marketo will not create a campaign at the workspace root, and it refused each folder MarqIQ tried.
Fix: MarqIQ gives you the quick fix in the message: in Marketo, right-click Marketing Activities → New Campaign Folder → name it "MarqIQ", then click Create Smart Campaign again — it is found automatically.
Next steps
Related articles
Was this article helpful?