How to Integrate Zoom with Marketo

Broderick_Klem1
Level 4

How to Integrate Zoom with Marketo

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: https://www.zoom.us/v1/webinar/register?id={{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).

Tokens

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).

15 REPLIES 15
SanfordWhiteman
Level 10 - Community Moderator

Re: How to Integrate Zoom with Marketo

  • 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 custom object.

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 "zoominfo" custom object (as many as a person could potentially register for at once).

In both these grafs I think you mean "the field 'join_url' on the Marketo Person/Lead object" -- the webhook doesn't map back to the CO, it maps back to the Person.

Broderick_Klem1
Level 4

Re: How to Integrate Zoom with Marketo

Whoops, thanks for that Sanford, typo on my part! I've updated the original post with the corrections.

Gursimran_Chand
Level 4

Re: How to Integrate Zoom with Marketo

Great tutorial. Just to add, people might face some issues in figuring out Zoom Api key and secret (this is because Zoom's documentation is old). To find api key and secret, you can do the following steps:

1. Go here: App Marketplace

2. Uncheck Intent to Publish

2. Enter App Name and Select "Account-level app" as app type

3. Select JWT Credentials.

4. Once you submit with relevant info, you will see your API key and secret. Enter those in your Marketo webinar tokens.

Barry_Dupont1
Level 3

Re: How to Integrate Zoom with Marketo

Hi Broderick Klemetson

I've just completed a Marketo / Zoom integration & used this guide extensively - many thanks. 

Just one question - in your smart campaign 'Registration Flow', should the first flow action be 'Call Webhook' - Zoom webinar (or whatever the webhook is called). Otherwise, how do the attendees in Marketo show in Zoom?

I may have missed something in your post but I had to do this for it to work for me.

Gursimran_Chand
Level 4

Re: How to Integrate Zoom with Marketo

@Barry Dupont - you are right. In the flow, call the webhook. Along with that change the webinar program status if any.

Broderick_Klem1
Level 4

Re: How to Integrate Zoom with Marketo

Yep, As Gursimran said, it's the first step in your flow.

Josh_Hill13
Level 10 - Champion Alumni

Re: How to Integrate Zoom with Marketo

Couple of tips:

  • Always ensure there isn't a trailing SPACE in your API key token. That creates a lot of fails.
  • Webhook tells Zoom about your Registration
  • API tells Marketo about the results of the Registration & Post Show info.
Jay_Jiang
Level 10

Re: How to Integrate Zoom with Marketo

Anyone built some form of integration not using JWT but with oauth? so essentially, chucking the Zoom guide out and DIY?

Jay_Jiang
Level 10

Re: How to Integrate Zoom with Marketo

So if anyone is in the same position that I was - had no access to JWT credentials, or you don't want to deal with the api keys and secrets blah blah, and you're willing to settle for a simple integration (we're using our own landing pages and invitation emails while letting Zoom send confirmation and reminder emails to people who have registered)

I reversed engineered Zoom's webinar registration form to create webhook like this:

pastedImage_1.png

The minimum payload is:

first_name={{lead.First Name}}&last_name={{lead.Last Name}}&email={{lead.Email Address}}&questions=[{"name":"first_name","value":"{{lead.First Name}}"},"name":"last_name","value":"{{lead.Last Name}}"},"name":"email","value":"{{lead.Email Address}}"},"name":"confirm_email","value":"{{lead.Email Address}}"}]&custom_questions=[]

The webhook does provide a json response so you can map responses as well:

pastedImage_3.png