Marketo
Adobe Marketo Engage is a B2B marketing automation platform for lead nurturing, scoring, account-based marketing, and revenue attribution.
This integration is currently in alpha. Configuration and behaviour may change.
Prerequisites
Complete these steps in Marketo before configuring Signal.
Access your Marketo instance
Log in to Marketo at your instance URL (e.g. https://app-ab12.marketo.com). The first segment (ab12 in this example) is your Munchkin ID prefix.
Find your Munchkin ID (Account ID)
Navigate to Admin > Munchkin. Your Munchkin Account ID is shown at the top (format: 123-ABC-456). Copy it — this also determines your REST API base URL: https://{munchkin_id}.mktorest.com.
Create a Custom Service for REST API
Navigate to Admin > LaunchPoint > New Service. Configure:
- Service: Custom.
- Display name: e.g. “Datafly Signal”.
- Description: optional.
- API Only User: create a new one (e.g.
datafly_signal@your-org). Assign the API Access role and any required object permissions. - Save.
Copy the Client ID and Client Secret
After saving, click View Details on the new service. Copy:
- Client ID (UUID-like)
- Client Secret (UUID-like)
Marketo uses these for OAuth 2.0 client-credentials flow. Signal handles token acquisition and refresh automatically.
Configuration
| Field | Type | Required | Description |
|---|---|---|---|
munchkin_id | string | Yes | Your Marketo Munchkin Account ID (e.g. 123-ABC-456). Determines the REST endpoint. |
client_id | string | Yes | OAuth Client ID from the Custom LaunchPoint service. |
client_secret | secret | Yes | OAuth Client Secret. |
Signal Setup
Quick Setup
- Navigate to Integrations in the sidebar.
- Open the Integration Library tab.
- Find Marketo under the Marketing Automation category.
- Click Install, and fill in the required fields with the credentials gathered above.
- Click Install Integration.
API Setup
curl -X POST http://localhost:8084/v1/admin/integration-catalog/marketo/install \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Marketo",
"variant": "default",
"config": {
"munchkin_id": "123-ABC-456",
"client_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"client_secret": "xxxxxxxxxxxxxxxxxxxx"
},
"delivery_mode": "server_side"
}'Event Mapping
| Datafly Event | Marketo Concept | Notes |
|---|---|---|
page | Custom activity | Sent via Marketo’s Custom Activities API. |
Product Viewed | Custom activity | Forwarded with product context. |
Order Completed | Custom activity with revenue | Mapped to a custom activity carrying revenue, currency, order_id. |
identify | Lead update | Email and traits update the Marketo lead via POST /rest/v1/leads.json. |
Custom activity types must be pre-defined in Marketo’s Admin > Marketo Custom Activities. Signal includes the activityTypeId numeric identifier on each call.
Identity
| Field | Source | Notes |
|---|---|---|
email | traits.email | Marketo’s primary lead key (lookupField: email). |
leadId | (assigned by Marketo) | Internal Marketo ID; resolved from the email match. |
firstName | traits.first_name | Maps to Marketo’s First Name lead field. |
lastName | traits.last_name | Maps to Marketo’s Last Name lead field. |
company | traits.company | Maps to the Company lead field. |
Call datafly.identify() with B2B-relevant traits:
datafly.identify("user-123", {
email: "jane@acme.com",
first_name: "Jane",
last_name: "Doe",
company: "Acme Co"
});Consent
Marketo events should be sent under the marketing consent category. Marketo has its own opt-in lead fields (unsubscribed, marketingSuspended) — Signal forwards CMP consent state so workflows can update these fields when needed.
Verify it’s working
- Trigger a test event from your website.
- In Marketo, navigate to Database > Search Leads and look up the test lead by email.
- Open the lead’s Activity Log to verify Signal-delivered custom activities appear.
- In Signal, check Live Events to confirm delivery with a
200response status.
Troubleshooting
| Symptom | Possible Cause | Resolution |
|---|---|---|
401 Unauthorized / token errors | Invalid client credentials or insufficient API permissions | Verify Client ID and Secret in Admin > LaunchPoint > your service. Ensure the API user has the API Access role. |
1003 Empty access token parameter | Wrong Munchkin ID format | Munchkin ID is 123-ABC-456 — not the URL prefix. Check Admin > Munchkin. |
| Custom activity error 1006 | Activity type not registered | Pre-create the custom activity type in Admin > Marketo Custom Activities and use its numeric ID. |
| Lead not created | Missing email | Marketo’s default lookup field is email; ensure every identify event carries one. |
| API call limit reached | Daily quota exceeded | Marketo enforces a daily API call quota per subscription. Reduce event volume or batch identifies. |
Visit Marketo REST API documentation for full reference and Custom Activity details.
See also
- Pardot — Salesforce B2B marketing alternative
- HubSpot — CRM alternative
- Salesforce CDP — enterprise CDP