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:

  1. Service: Custom.
  2. Display name: e.g. “Datafly Signal”.
  3. Description: optional.
  4. API Only User: create a new one (e.g. datafly_signal@your-org). Assign the API Access role and any required object permissions.
  5. 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

FieldTypeRequiredDescription
munchkin_idstringYesYour Marketo Munchkin Account ID (e.g. 123-ABC-456). Determines the REST endpoint.
client_idstringYesOAuth Client ID from the Custom LaunchPoint service.
client_secretsecretYesOAuth Client Secret.

Signal Setup

Quick Setup

  1. Navigate to Integrations in the sidebar.
  2. Open the Integration Library tab.
  3. Find Marketo under the Marketing Automation category.
  4. Click Install, and fill in the required fields with the credentials gathered above.
  5. 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 EventMarketo ConceptNotes
pageCustom activitySent via Marketo’s Custom Activities API.
Product ViewedCustom activityForwarded with product context.
Order CompletedCustom activity with revenueMapped to a custom activity carrying revenue, currency, order_id.
identifyLead updateEmail 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

FieldSourceNotes
emailtraits.emailMarketo’s primary lead key (lookupField: email).
leadId(assigned by Marketo)Internal Marketo ID; resolved from the email match.
firstNametraits.first_nameMaps to Marketo’s First Name lead field.
lastNametraits.last_nameMaps to Marketo’s Last Name lead field.
companytraits.companyMaps 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"
});

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

  1. Trigger a test event from your website.
  2. In Marketo, navigate to Database > Search Leads and look up the test lead by email.
  3. Open the lead’s Activity Log to verify Signal-delivered custom activities appear.
  4. In Signal, check Live Events to confirm delivery with a 200 response status.

Troubleshooting

SymptomPossible CauseResolution
401 Unauthorized / token errorsInvalid client credentials or insufficient API permissionsVerify Client ID and Secret in Admin > LaunchPoint > your service. Ensure the API user has the API Access role.
1003 Empty access token parameterWrong Munchkin ID formatMunchkin ID is 123-ABC-456 — not the URL prefix. Check Admin > Munchkin.
Custom activity error 1006Activity type not registeredPre-create the custom activity type in Admin > Marketo Custom Activities and use its numeric ID.
Lead not createdMissing emailMarketo’s default lookup field is email; ensure every identify event carries one.
API call limit reachedDaily quota exceededMarketo 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