Marketo Source

Marketo is a leader in marketing automation. Using our Marketo source, we will load your campaigns, emails, leads and other collections into your data warehouse.

This will allow you to write SQL to analyze your analyze your email marketing campaigns ROI, or join your email data to other data sources like web and mobile events, Salesforce, and Zendesk to tie nurture emails to re-activation rates in your app.

This is an Object Cloud Source which can export data from its third party tool and import it directly into your Segment warehouse.

NOTE: Marketo is currently in beta and this doc was last updated on April 30, 2018. This means that there may still be some bugs for us to iron out and we’re excited to hear your thoughts. If you have any feedback to help us improve the Source and its documentation, and please let us know!

Getting Started

Permissions

You will need Admin permissions to your Marketo account.

Add a new Marketo source

  1. From your workspace’s sources page, click add source.
  2. Choose Marketo.
  3. Give the source a nickname and a schema name. The nickname will be used to designate the source in the Segment interface, and the schema name is the namespace you’ll be querying against in your warehouse. Both can be whatever you like, but we recommend sticking to something that reflects the source itself, like Marketo for nickname and marketo or marketo_prod for the schema name.
  4. Configure your Marketo source with the required settings (see section below for details)

Configure your Marketo Source

  1. Open Marketo
  2. Go to Admin > Munchkin to find your Munchkin Account ID
  3. Go to Admin > LaunchPoint a. If you don’t already have a REST service setup, follow these steps. b. Then, copy the “Client ID” and “Client Secret” parameters. c. Paste the “Client ID” and “Client Secret” into the Segment Marketo source settings.

You’re done! Data should start flowing into your Warehouse in the next few hours.

Components

Sync

The Marketo source is built with a sync component, which means we’ll make requests to their API on your behalf on a 3 hour interval to pull the latest data into Segment. In the initial sync, we’ll grab all the Marketo objects (and their corresponding properties) according to the Collections Table below. The objects will be written into a separate schema, corresponding to the source instance’s schema name you designated upon creation (ie. my_source.charges).

Our sync component uses an upsert API, so the data in your warehouse loaded via sync will reflect the latest state of the corresponding resource in Marketo. For example, if first_name goes from Jess to Jessica between syncs, on its next sync that field will be Jessica.

The source syncs and warehouse syncs are independent processes. Source runs pull your data into the Segment Hub, and warehouse runs flush that data to your warehouse. Sources will sync with Segment every 3 hours. Depending on your Warehouses plan, we will push the Source data to your warehouse on the interval associated with your billing plan.

Collections

Collections are the groupings of resources we pull from your source. In your warehouse, each collection gets its own table.

CollectionTypeDescription
leadsobjectAll available leads.
campaignsobjectAll available campaigns.
emailobjectAll available emails.
landing_pagesobjectAll available landing pages.
listsobjectA set of static list records.
lead_activitiesobjectActivities performed by leads.
lead_activity_attributesobjectAttributes found for each individual Lead Activity.
lead_activity_typesobjectAvailable lead activity types, along with associated metadata of each type.
lead_activity_type_attributesobjectAttributes found for each individual Lead Activity Type.
programsobjectAll available programs.
segmentationobjectAccessible segmentations (subgroups based on a Smart List rule).
segmentsobjectSegments inside a given segmentation.

Collection Properties

Leads

Property NameDescription
idLead id
emailLead email
first_nameLead First Name
last_nameLead Last Name
created_atDate Lead created
updated_atDate Lead last updated
deleted_atDate Lead deleted
custom_lead_fields* Added during set up flow

Campaigns

Property NameDescription
idCampaign id
nameCampaign name
activeWhether the Campaign is active. Only applicable to trigger campaigns
typeType of the Campaign ([‘batch’, ‘trigger’])
workspace_nameName of the parent workspace if applicable
created_atDate Campaign created
updated_atDate Campaign last updated

Email

Property NameDescription
idEmail id
nameEmail name
statusStatus filter for draft or approved versions
urlURL of the Email in the Marketo UI
descriptionDescription of the Email
operationalWhether the email is operational
templateId of the parent template
text_onlySetting to include text-only version of email when sent
web_viewWhether ‘View as Webpage’ function is enabled for the email
workspaceName of the workspace
versionVersion/Revision of the Email
subjectSubject Line of the Email
from_nameFrom-name of the Email
from_emailFrom-address of the Email
reply_emailReply-To address of the Email
folder_typeFolder type of the Email
folder_valueFolder value of the Email
folder_nameFolder name of the Email
created_atDate Email created
updated_atDate Email last updated

Landing Pages

Property NameDescription
idLanding Page id
nameLanding Page name
statusStatus filter for draft or approved versions
workspaceName of the workspace
urlURL of the Landing Page in the Marketo UI
computed_url-
mobile_enabledWhether the page has mobile viewing enabled
robotsRobots directives to apply to the pages meta tags
keywords-
titleTitle element of the Landing Page
templateId of the template used
custom_head_htmlAny custom HTML to embed in the tag of the page
descriptionDescription of the asset
facebook_og_tagsAny Facebook OpenGraph meta tags to apply to the page
form_prefillBoolean to toggle whether forms embedded in the page will prefill
folder_typeFolder type of the Landing Page
folder_valueFolder value of the Landing Page
folder_nameFolder name of the Landing Page
created_atDate Landing Page created
updated_atDate Landing Page last updated

Lists

Property NameDescription
idList id
nameList name
descriptionDescription of the list
program_nameProgram name
workspace_nameName of the workspace
created_atDate List created
updated_atDate List last updated

Lead Activities

Property NameDescription
idLead Activity id
activity_idLegacy Id of the activity (Deprecated)
lead_idId of the lead associated to the activity
campaign_idId of the associated Campaign, if applicable
primary_attribute_value_idId of the primary attribute
primary_attribute_valueValue of the primary attribute
activity_type_idId of the activity type
activity_dateDatetime of the activity type

Lead Activity Attributes

Property NameDescription
idCombination of Lead Activity id, Lead Activity Type id and Lead Activity Attribute name
activity_idId of the lead activity associated to the attribute
activity_type_idId of the lead activity type associated to the attribute
activity_type_attribute_idCombination of the attributes associated activity type id and attribute name
namename of the Attribute
valuevalue of the Attribute

Lead Activity Types

Property NameDescription
idLead Activity Type id
nameLead Activity Type name
descriptionLead Activity Type description
primary_attribute_nameValue of the primary attribute
primary_attribute_data_typeType of the primary attribute

Lead Activity Type Attributes

Property NameDescription
idCombination of Lead Activity Type id and attribute name
activity_type_idId of the lead activity type associated to the attribute
nameName of the Attribute
data_typeData Type of the Attribute

Programs

Property NameDescription
idProgram id
nameProgram name
descriptionProgram description
urlURL of the Program in the Marketo UI
typeProgram type ([‘program’, ‘event’, ‘webinar’, ‘nurture’])
channelProgram channel
statusProgram status ([‘locked’, ‘unlocked’, ‘on’, ‘off’])
workspaceName of the workspace
sfdc_idSFDC id of the program if linked to an SFDC campaign
sfdc_nameName of the linked SFDC campaign if applicable
folder_valueFolder value
folder_nameFolder name
folder_typeFolder type
created_atDate Program created
updated_atDate Program last updated

Segmentations

Property NameDescription
idSegmentation id
nameSegmentation name
urlURL of the Segmentation in the Marketo UI
descriptionDescription of the asset
statusStatus filter for draft or approved versions
workspaceName of the workspace
folder_valueFolder value
folder_nameFolder name
folder_typeFolder type
created_atDate Segmentation created
updated_atDate Segmentation last updated

Segments

Property NameDescription
idSegment id
nameSegment name
segmentation_idId of the related Segmentation
descriptionDescription of the asset
urlUrl of the asset in the Marketo UI
created_atDate Segment created
updated_atDate Segment last updated

Adding Destinations

Currently, Warehouses are the only supported destination for object-cloud sources

FAQs

How many API calls will the Segment source use?

The Marketo API has different limits for the number of objects returned by different endpoints, but usually 100-300 objects per call.

At setup time, you have the option to specify a cap to the API calls that our source can consume. If no cap is specified, we will by default consume as many API calls that are available to sync the entire source.

We also use the Lead Activities bulk API to reduce the number of requests needed to sync the data; this however, also has a limit of 500MB worth of files downloaded per day.

If your source requires more than 10k calls or over 500MB from the bulk API to sync, we will continue the sync the following day when a new batch of API calls are available.

If you have other applications that use the Marketo API, this can interfere with their ability to make requests.

What Marketo API are you using?

We’re primarily using the REST API, but also use the Lead Activity Bulk API to reduce the number of requests needed to sync.

Can I get other collections not default synced by the source?

Yes! Please contact us to request additional collections.

Can I get other columns not default synced by the source?

Yes! For leads and activities, we’ve introduced a custom fields setting where you can enter comma-separated (no spaces, etc.) custom fields to sync by their REST API name.

By default, we only sync the following fields on the leads collection:

  • id
  • email
  • firstName
  • lastName
  • createdAt
  • updatedAt

You can find a full list of standard fields and their REST API names here. If there are other fields you’re interested in, contact us and we’ll get you setup.


If you have any questions, or see anywhere we can improve our documentation, please let us know!