Marketo limits webhooks to 20 concurrent connections
You probably didn’t know you can have a max of 20 outstanding webhook connections from your Marketo instance, across all destination URLs.
Additional Call Webhook steps wait for an open slot (they don’t fail outright).
The effective daily/hourly rate limit thus depends on the server roundtrip time — which in turn has a lower limit that depends on the speed o’ light.
That’s it. That’s the post.
OK, almost.
Something you can do about it
That limited degree of parallelism (DOP) means you may consider building a webhook aggregator service that combines multiple independent results into one response sent back to Marketo. That service can bump up the # of tasks running in parallel.
Say you have two lead enrichment services that can run independently (i.e. they update different fields) and each consistently takes ~350ms to run.
If you run them directly from Marketo, they’ll take up 2 calls. And obviously the more ’hooks you try to run, the more likely one of those calls will make another call wait. And you’re wasting execution time — and increasing Change Data Value update latency — no matter what.
Whereas if your aggregator service can make both of those calls in parallel (most any language can do this, although evented/async languages are better at it IMO) then you’ve multiplied the effective DOP and reduced overhead all around.
Here goes an attempt to visualize the difference.
The first image shows the total elapsed time if Marketo executes 2 Call Webhook steps serially (= not in parallel) which, as noted above, will definitely happen under load due to the 20-connection limit. 2 × 350ms = 700ms.
The second image shows the total time if Marketo executes only 1 Call Webhook against a webhook aggregator, and the aggregator in turn performs 2 calls in parallel, then wraps the responses together and returns them to Marketo. Adding in the roundtrip time to the aggregator itself (assuming 100ms for that, as it’s not doing anything else), you can see the total is only 100ms + 350ms = 450ms.
If you try to run lots of leads through multiple webhooks “at once,” the improvement from an aggregator is definitely real. And it only gets better if you have 3 or more webhooks.