Broderick Klemetson

How to Integrate Zoom with Marketo

Discussion created by Broderick Klemetson on Mar 30, 2019

I apologize as this should really be a blog post, but I don't have the ability to post to blogs, so here it is. I figured I would share my experience with integrating Zoom with Marketo and using it for the past 2 years. Hopefully this can serve as a resource to anyone else looking to setup this integration in the future.


Note: My method of integration and use is based on our use case, which is using marketo forms and our own landing pages to allow people to register for the webinars, pushing the registrants to zoom, letting zoom handle all confirmation & reminder emails, then have zoom push attendees back to Marketo.


When integrating Zoom with Marketo, the first thing to do is follow the directions here on setting up the integration. At least the first part "Initial setup of Marketo and Zoom". However, their "setup for each webinar" is slightly redundant and you don't need as many smart campaigns as they have you setup for each webinar.


A few small changes to their initial setup:

  • Unless you use multiple zoom accounts, you don't need to create tokens for "apiSecret" and "apiKey", since you'll never be changing them. You can just hard code those into your webhook. (So your webhook will look like this:{{my.zoomWebinarId}}&first_name={{lead.First Name}}&last_name={{lead.Last Name}}&email={{lead.Email Address}}&api_key=XXXX&api_secret=XXXX)
  • If you aren't going to use Zoom registration pages, and are also planning on just letting Zoom send the confirmation and reminder emails, then you don't need to create the custom object "ZoomWebinarOtherInfo" or any of the fields therein.
  • If you are going to send the confirmation & reminder emails from Marketo, but aren't going to use zoom registration forms/pages, then you only need to create the field "join_url" on the Marketo Person/Lead object object.
  • If you are just going to let Zoom send the confirmation and reminder emails, and also register people from Marketo forms only (rather than Zoom registration pages), then you do not need to create a webhook for every webinar, just a single zoom webinar webhook that you use every time.


How to setup your program:

Each zoom webinar needs to have a individual marketo program tied to it, in a 1:1 relationship. Inside that program, you need 2 smart campaigns (one for attendees, and one for the main registration flow) and a form. So if I have a zoom webinar scheduled for March 19th, then this is what it looks like in Marketo:
2019-03-30 22_16_30-Marketo _ Marketing Activities.png


  • The first of these campaigns is a triggered campaign that serves as a way for Zoom to push attendee information to Marketo after the event ends. This smart campaign has 1 thing in the smart list "campaign is requested - by web service api". The flow for this campaign is also simple: "Change program status to "Webinar - Attended".
  • The 2nd smart campaign that I call "Registration Flow" is where everything happens. The only thing in the smart list for this campaign is "fills out form" (the zoom form below it). The flow does several things:
  1. Change program status to "registered"
  2. Wait until the day of the webinar, 2 hours after the webinar ends
  3. Change data value - If program status is not "attended", then change to "no show". (this works because the "attended" smart campaign will have been triggered by Zoom to change the people who had attended to "attended" by this point).
  4. Wait 24 hours
  5. Send "webinar recap" email to those who "attended" and send a "sorry we missed you" email to those who are "no show".
  • The Zoom form is just the form that people use to register for the webinar on our landing page. (If you use Marketo landing pages, then you could also have that landing page live in this folder).



Our emails (such as the webinar recap email or "no show" email from the example above) live in the design studio and we use program tokens to customize them to the individual webinar. We use these tokens for each program:

2019-03-30 22_45_21-Marketo _ 2019.03.12 - IT_Eng Webinar (My Tokens) • Marketing Activities.png

This allows us to customize the recap emails to the webinar, without have to deal with any code.


How to setup your program if you have multiple registration options for a single registration form

We use this method to allow people to register for a single session with many different time zone options from a single Marketo form

We've also used this method to host "recurring" webinars that happened every week. We didn't want to create a new landing page and form for every webinar, opting rather to have a single permanent registration page and form where we instead continually updated the options in the form.


Occasionally, we offer webinar with multiple time zones available. For example, we'll do a webinar and offer it at 2pm EST, 2pm GMT, and 2pm AEST.

  • You still need to have an individual marketo program for every webinar in zoom. So in this example, you'd have 3 zoom webinars (one for each time zone option) and 3 marketo programs.
  • In each marketo program, you'll make 2 deviations from normal 3 campaigns that I detailed above.
    1. The trigger for the "registration flow" campaign will be campaign requested by "marketo flow action" instead of "web service api"
    2. You don't need the form, you can delete it.
  • Now, you'll create a master program that will be responsible for hosting the form and assigning people to the correct program depending on their form fill. This program will contain a single form and a smart campaign. The smart campaign will have a trigger of "fills out form" and the flow will be a "request campaign" step with multiple options depending on which value was chosen in the form. It will then request the correct program and campaign that will subsequently push that registration to the correct webinar in zoom.
  • To do this, we created a new field called "ZoomDateCode". Then in the form, we had that field have several options for the user, such as "2pm EST", "2pm GMT", and "2pm AEST". Then depending on which value they chose, the field would be populated with either "EST", "GMT", or "AEST".


Let me know if you have any questions about how we've set this up or how you can apply it at your own company, I'm happy to help.


Final note: If you opt to send your reminder emails and confirmation emails from Marketo (because Zoom's look awful), then these setup methods can still work, but you'll need an individual webhook for every webinar and you'll want to map multiple "join_url" fields on your Marketo Person/Lead object object (as many as a person could potentially register for at once).