Self-Service Flow Steps solve 5 major limitations of webhooks

Level 4 - Champion Level 4 - Champion
Level 4 - Champion

Marketo released Self-Service Flow Steps (SSFS) last summer and I’ve been shocked that more people haven’t been talking about it.  I’ve been working with Marketo over a decade, and for me this is an absolute game changer.  I have spent the past year building dozens of custom flow steps, and I’ve been amazed with the things we’re able to do that were previously impossible. The biggest challenge I’ve had is the lack of information available.  While Adobe has done a great job with the documentation, there doesn’t seem to be many people in the community using this feature, or at least none writing about it.  That is why I want to share my experience. Primarily, what Self Service Flow Steps are, and how they solve 5 major limitations of webhooks. 


First, what are Self-Service Flow Steps?


In Marketo, smart campaigns are where all of the action happens. You are probably familiar with the standard list of flow actions.  And, if you’ve used Marketo for a while you’re probably also aware that this list hasn’t changed much over the years.  Sure, it has most, if not all of the core features you could want as a Marketer, but as Marketers we are always pushing the limits and often times there are advanced or custom features you really wish it had that just aren’t there. 


Fortunately for us this is where Self-Service Flow Steps come in. Self-service flow steps allow us to expand our list of flow actions, adding custom actions beyond the typical pre-defined ones. This means that virtually any action you need – from validating emails and updating e-commerce orders to sending WhatsApp messages or even utilizing AI, can now be incorporated into your smart campaigns.




How are they different from Webhooks?

In my view, Self-Service Flow Steps are not an alternative to webhooks, but rather an evolution.  While they both allow us to connect Marketo to outside services, passing data out, and return data back, these new flow steps solve 5 major limitations webhooks have had since their inception.


1.    Customization

SanfordWhiteman_1-1693248305395.png Webhooks only have one flow action which they all share, “Call Webhook”. At the flow level, you only select which webhook you want to call. This means variability between campaigns using the same webhook must be done via program-level {{my.tokens}}.

For example, if you built a webhook to set registration limits for programs. When called, it would check the set limit and number of people currently registered, then either registers the user, or waitlists them. Those limits can be viewed on the Tokens tab, but on the Flow tab itself they’re not viewable or configurable.



Self-Service Flow Steps in contrast, allow customizable flow step fields which can be set in each smart campaign providing a much-improved user experience.  This alone expands the possibilities well beyond what webhooks are capable of, as each flow step can be highly customized at the flow level.




Notably, these fields also include dynamic dropdowns which get their options from a backend service.  For example, imagine you have a Gym network and you created a Flow Step to activate memberships in your backend system.  You may open and close locations regularly, so you could have the dynamic dropdown that pulls from your backend system and always shows the currently active locations.  

* The dropdown values update once every 24 hours or you can trigger a refresh in the admin area.


2.    Ease of use

SanfordWhiteman_1-1693248305395.png Webhooks require the configuration of URL parameters and manually written JSON, which can be cumbersome.


Self-Service Flow Steps simplify the process by offering packaged solutions where fields can be pre-mapped and offer a graphical interface for making adjustments. This makes the entire setup more straightforward for non-technical users.



3.    Batch operations

SanfordWhiteman_1-1693248305395.png Webhooks can't be called directly from a batch campaign. While you can work around this by having your batch call Request Campaign, their scalability is still limited. For example, while you could use a webhook in a trigger campaign to verify the email addresses of leads as they enter the system, you couldn’t call that same webhook for all the records you already have in your database since the volume would be overwhelming.


Self-Service Flow Steps are supported in batch campaigns.  Allowing for more efficient processing of larger tasks.  The data is sent to the service in batches of up to 1000 records, which gives us many more options for how we can use them and makes it far more efficient from the backend as well.


4.    Reliability

SanfordWhiteman_1-1693248305395.png Webhooks depend on server responsiveness.  They must complete in 30 seconds or less. This limits what we can do with the data.  For example, if you are asking an AI model to generate complex content, the process could easily exceed this limit.

From the Marketo webhooks documentation

  • Webhook execution time is at the mercy of the response time of the service being used and can result in long campaign execution delays.  Even if a service only takes 50ms to execute, that is 1.5 hours when executed 100,000 times.
  • Updates via response mappings will only occur if the web service responds with a 2xx HTTP response code. Other types of codes will not result in updates to the record.
  • Marketo will wait up to 30 seconds for a given service call before terminating the call (a.k.a. timing out).


  Self-Service Flow Steps operate asynchronously. Data is sent to the backend service in batches along with a callback URL, like a return address.  The service can then send back the response whenever it’s ready whether it takes 5 seconds or 5 days.  This  greatly expands what solutions are possible.


5.    Data

SanfordWhiteman_1-1693248305395.png Webhooks can send tokens ({{lead.tokens}}, {{member.tokens}}, {{my.tokens}}, and so on) to the remote service. On the receiving side, webhooks are limited to updating only lead fields, not program member fields or other areas in the database.


Self-Service Flow Steps support both standard and custom context data on the outbound side. This includes lead data, program, smart campaign, program member and subscription context data, offering a broader data scope for operations.  On the inbound side, we are of course able to pass back lead data, that will update lead fields, but we are also able to pass activity data, which will show up in the lead activity log.ssfs-11+12.png


This activity data can also be used for filtering and triggering in smart campaigns giving better targeting options.  For example, if you used SSFS to validate an email, you may receive a lot of data back about the user’s email provider including items which we may want to use to trigger, but not save on the lead record.




Webhooks vs Self Service Flow Steps Overview



Self-Service Flow Steps are not always the best choice

A webhook might still be the go-to choice for some scenarios. These scenarios include:


  • a process with few differences across campaigns
  • a process that’s not called at very high volume
  • a process that doesn’t connect to additional “hops“ (i.e. secondary services/databases) and responds quickly
  • a webhook-compatible service already exists
  • a service expects non-JSON encoding (for example, XML or Form-encoded payloads)


The introduction of Marketo's Self-Service Flow Steps is more than just a feature—it's a breakthrough for smart campaigns. For us it has been an invitation to think bigger, to revisit old challenges, and reimagine what is possible. The new reality is, we can now add to our smart campaign, basically any action we can think of.  Sure, there are some technical hurdles to getting set up but the potential is endless.  I would love to hear people’s opinions on this topic.  Are you using Self-Service Flow Steps? What have you built / what would you build? 



1 Comment