Featured image for blog post on how to use use the Marketo Flow Action with Workato

Using Marketo Flow Step Service with Workato

The introduction of Self Service Flow Steps in the August 2022 Marketo release caught my attention, but it wasn’t until midway through last year that I delved deep into exploring how I could leverage this feature in conjunction with Workato. As I explored its capabilities, it quickly became evident just how potent this new functionality is. In the following paragraphs, I’ll share my insights, key takeaways, and important considerations if you’re looking to integrate these Self Service Flow Steps with Workato.

Key Points to Keep in Mind:

  • Similar to Webhooks: Self Service Flow Steps operate similarly to webhooks as you can seamlessly integrate them into the flow steps of a smart campaign. One crucial distinction, however, is that they don’t necessitate a trigger campaign, allowing for convenient batch processing.
  • Return Values and Field Updates: These steps empower you to both return values to the lead and update lead fields within the same flow step in Marketo, enhancing flexibility and efficiency.
  • Custom Fields for Routing: You have the option to incorporate additional fields into the flow step, facilitating smoother routing processes.
  • Contextual Insights: Gain valuable context by extracting information such as the program, smart campaign, trigger, and instance, providing a comprehensive view of the workflow.
  • Clunky to Update: Making updates to the configuration of the service are not as seamless as they should be (more on this below).

Creating the Workato Recipe

You start by creating a recipe with a trigger, select the Marketo app and choose New Self Service Flow Step in Marketo (Real-time). You will be given a Swagger Endpoint URL and you need to create your own API Key. Both of these pieces of information will be used when we go to Marketo.

Screenshot of the Workato recipe canvas with arrows pointing to the Swagger endpoint URL, API Key, Flow step inputs, For each step, adn routing logic

Flow Step Inputs

As previously discussed, defining inputs for flow steps is a pivotal aspect, providing users in Marketo with a means to incorporate additional information alongside lead data. In my usage, I’ve employed four fields for this purpose, but it’s important to note that your specific scenario might necessitate a different configuration:

  • Workato Flow: I use this value for routing in Workato. I can put values like ‘XZY Salesforce’ or ‘2nd Marketo’ and then use those values with If steps in Workato. This allows me to have one Marketo intake recipe that can route to different recipes and functions.
  • Action: This works hand in hand with the Workato Flow input as it tells me what we should do with this data. I use values like ‘upsert lead’, ‘normalize data’, ‘enrich lead’ so that when the data hits Workato, I know what to do with it and if I should write anything back to Marketo.
  • Destination Program ID: I use this field (along with Destination Program Status below) because we have many Marketo instances so when we send a lead from one instance to another, we can pass along the program id and status of the receiving instance.
  • Destination Program Status: See above

Incoming lead attributes

This is the section that specifies which lead fields you want to retrieve from Marketo. 

There are two vital aspects to keep in mind when working with this service:

  • Service Modification Limitation: Once the service is established in Marketo, it’s essential to note that adding more fields requires the deletion of the previous service. While you can introduce additional fields within Workato, these changes won’t reflect in Marketo. Alternatively, if you prefer not to delete and create a new service, consider adding a second Marketo step. This step can look up the fields based on the lead’s email address, offering a workaround to expand your field set without recreating the entire service.
  • Phone Number Mapping Challenges: Be cautious with phone numbers, as Marketo utilizes a ‘Phone’ field type that can pose mapping challenges in Workato. To address this, you can incorporate a second step to retrieve the phone number value from the lead, ensuring a seamless integration despite potential mapping issues.

Outgoing lead attributes

These are the fields that you want to write back to Marketo. They may be similar to the incoming lead attributes but they don’t need to be. If you use this with an enrichment tool, you may have many more outgoing lead attributes, than incoming.

Context Options

This feature offers remarkable flexibility in routing, comprehension of incoming data, and troubleshooting potential issues. The ability to discern the programs and smart campaigns responsible for sending leads to Workato is a game-changer. It not only facilitates efficient handling of incoming data but also serves as a valuable tool for troubleshooting, potentially saving hours of frustration when dealing with unexpected results.


  • Program ID
  • Program Name
  • Program Description
  • Program Type
  • Status
  • Workspace Name
  • Channel Name
  • Created At
  • Updated At

Program Member

  • Program Status
  • Program ID
  • Membership Date
  • Success


  • Smart Campaign ID
  • Smart Campaign Name
  • Description
  • Folder ID
  • Status
  • Type
  • Communications Limit Enabled
  • Smart List ID
  • Flow ID
  • Program Parent ID
  • Workspace Name
  • Workspace ID


  • Activity Type ID
  • Activity Type Name
  • Primary Attribute Value
  • Primary Attribute Value ID
  • Attributes


  • Munchkin
  • Prefix
  • CRM Sync Status

Workato Recipe Actions

Once you have all of your fields setup, you can start creating the flow in Workato. Since this can be used with either trigger OR batch campaigns, I always add a repeat action step to get each and choose Lead data for the input list. This will work whether you are getting one lead from a trigger or 10,000 from a batch campaign. 

I always create a boolean variable called ‘Routed’ and set the value to false. If the Workato Flow value matches one of the routing criteria, I will set it to true. I do this so that if at the end of the recipe the value is still false, I can send myself (or others) an alert that it wasn’t routed.

My final step is creating if statements for all of the expected inputs to the Workato Flow value and calling other services and functions based on what was requested.

Creating a Service Provider in Marketo

You need to start the Workato recipe before going to this step. Also, the name of the Workato recipe when it’s created will be the name of the Flow Action step. I name the recipe something friendly like ‘Send to Workato’ and after I have established the connection, I will change the name in Workato to match our regular naming convention.

Screenshot of the Service Provider section in Marketo admin with an arrow pointing to the service provider name
  1. In the Admin section in Marketo, you will find Service Providers under Integration. 
  2. Select it and click ‘Add a New Service’
  3. Paste in the Swagger URL from the Workato recipe (above) and click next
  4. Type in the API Key you created in the Workato recipe
  5. Approve the field mappings for incoming fields
  6. Approve the field mappings for outgoing fields
  7. Save

Using Flow Step in a Smart Campaign

Go to the flow tab of a smart campaign and all the way at the bottom of the right hand side, you should find the flow action you just created. Drag it into the flow and add the values (including tokenized values) for the input fields you created and let Workato do the rest.

Similar Posts