blog-banner-on24.png

The New ON24 Webinar Integration

TBlane_McMichen
Marketo Employee
Marketo Employee
REVISED ARTICLE (6/17/2024)

What’s changed? The good, the bad, and the ugly do differently.

UPDATES:  This article has been updated with some new and revised information.

  • Documentation links have been updated to new ON24 docs

Background:

ON24 has changed their integration with Marketo, and the native LaunchPoint integration is no longer an option for new accounts.  (Existing accounts can continue to use the legacy integration.)  The new method of integration is API calls, with custom objects. [In a conversation with the ON24 team, I learned that the new integration was the result of several drivers.  Customers wanted more data to be available in Marketo from the ON24 event.  The Launchpoint integration was convenient, but it greatly limited the data sharing. Custom objects, while not perfect, offered the ability to share more datapoints which are mentioned later in this article. They also mentioned that an integration kickoff call is available to clients, if needed.] This fundamentally changes the way you set-up the integration and associated programs.  You no longer bind the program to the event.  Event registrations are passed from ON24 to Marketo and each event is represented by a separate custom object record.  There are some things I like about it and some things that I don’t, but you can make up your own mind.

Pitfalls

ON24 has revised their document, which have been referenced in the article below.  For your convenience, here are some quick links:

There is a bit of a learning curve on how to design your programs, but there are some set-up details that can cause headaches and hair-loss.  (This article may help reduce both.) The integration is documented in the Marketo ON24 Connect Data Integration, but not everything is obvious.  Especially if you like to start with a Marketo registration form, then pass the registrant to ON24. How to avoid some basic problems.

  • Options – at the end of the document, there are “options” that are very important.
    • “Create New People” needs to be enabled if you ever want to use the ON24 registration page and have the new leads added to Marketo.  If not, you will only see registrations for “known” in persons in Marketo.
    • “ON24 Registrants” needs to be set to sync registration activity to Marketo.  This includes registrations and participation data.
    • “Backfill in Marketo” is your safety net if you found that you missed the above settings and have active programs running.
  • ON24 Attendee[i] – is the name of the custom object (or whatever name you choose to give it) is where all the magic happens. Marketo programs must use the data in the custom object to add program members, change status, etc. This means that you need triggers for future activities and batch campaigns for data that has already been passed to Marketo.
    NOTE: You only need to create one custom object for your Marketo Engage instance, even if you have more than one ON24 account or add another account in the future.
  • The Webhook –The 36-page instructions linked above make no mention of a webhook or how you pass a Marketo registration to ON24. Webhook information can be found in the Marketo to ON24 – Webinars article. (insert ethereal Aha! sound here)

If you follow the instructions in both of these articles and don’t skip any sections, you should be OK.

Avoid Old Habits

The old ways of doing things are gone. Reset your brain.

  1. You don’t use the native LaunchPoint integration.
  2. You don’t pick the event partner or event in the program settings.
  3. You don’t build smart campaigns that trigger on program membership or status changes.
  4. You cannot use the {{member.webinar url}} token. (It will be NULL.)

The New Way

The new integration will require a little more set-up, but you can build most of this into a program template for easy replication.  I recommend creating the template with all of the Smart Campaign variations then you only need to configure/activate the ones that are needed for your event.  Before we get into the details, this diagram may help visualize the integration activities associated with the event.

ON24-Marketo Program FlowON24-Marketo Program Flow


Not every path in this flow may apply to your set-up, but these are considerations you may want to include in your program template design.  Some key things to note:

  • The custom object record is only created by ON24 when a person is added to the event in the ON24 environment
  • Registrations that originate in Marketo are only added to the ON24 event by the webhook
  • Last minute registrations via the webhook from Marketo can be delayed if the systems are busy and these activities are queued.  (This can impact when the user join link is functional.)
  • Registrations that originate in ON24 will be known to ON24 before they are shared with Marketo
  • ON24 will only create a custom object for existing records in Marketo unless you configured ON24 to “Create New People”
  • You can register people during the event.  The custom object will be created and updated.
  • All registration activities, notifications, status changes, and follow-up actions must evaluate the custom object existence and field values.

Reading the Tea Leaves (Custom Object)

The key to all actions and controls is in the custom object.  There are several fields within it that are important to understand and use in your smart campaign build.  While there are many more fields that can be configured, these are the ones that are key to program membership and status.  Also, note that these field names are set-up when you create the custom object and may not have been added by your system administrator.

Custom Object Field

Value

Required/Suggested Use

eventid

integer

The presence of a custom object with the ON24 event ID indicates that the person is registered for that event. This is the key to identifying the custom object and associated fields below. [required]

attendedlive

Boolean

Use this Y/N value to identify if a user attended the live event. You can use this to change the program status to "Attended".

attendedarchive

Boolean

Use this Y/N value to identify if a user viewed the on-demand event. You can use this to change the program status to "Attended - OnDemand".

cumulativeliveminutes

integer

Use the number of minutes value to identify how long the person participated in the live event. You may want to use a minimum threshold value to qualify a person for the smart campaign that changes the program status or issues program incentives.

cumulativearchiveminutes

integer

Use the number of minutes value to identify how much of the recorded content the user viewed. You may want to use a minimum threshold value to qualify a person for the smart campaign that changes the program status or issues program incentives.

Member Join Link & Event Tokens

Since the join link is no longer added to the program, you cannot use the {{member.Webinar URL}} token.  Instead, you need to create the link with a combination of tokens. You will need to create a token for the event ID e.g. {{my.eventid}} and the event key e.g. {{my.key}} which you can get from the “Audience” link in ON24. You can find it by clicking the link at the top of the event which will open a box as shown below.  See the highlighted text for an example.  (Of course your values will be different.)

 

ON24-Marketo-Token-Values.png

 

Once you have created the tokens, you will use them to “build” a join link with as follows with the tokens in bold for visual clarity:

https://event.on24.com/wcc/r/{{my.eventid}}/{{my.key}}?mode=login&email={{lead.email address}}

Create New Habits

The new way requires a focus on the custom object records and changes to those records.

  1. At a minimum you will need the ON24 Event ID to identify relevant data for the program.
    1. Create a local token for the event ID   e.g. {{my.eventid}}
    2. Create a toke for the event key   e.g. {{my.key}}
  2. Remember that an event custom object is added only once, after that you will need to trigger on updates to the ON24 Attendeei custom object.
    1. Sometime triggers don't happen. (It's a fallen world.) This can occur if your instance is very busy and the trigger campaign is waiting for an extended period of time, and the campaign times-out without executing.  (If you happen to be monitoring the campaign, you can bump the priority of the waiting campaign in the Campaign Queue of the workspace.)
    2. It is more likely that you have other things to do and you didn't see the campaign waiting in the queue. All is not lost, you can create a smart campaign that uses the custom object filter with the same settings as the trigger, and run it as a batch process.
      Power Tip:  You may just want to create this as a safety net, and schedule it to run every day during the event period. This will sweep any missed activity into the program. You don't need to recreate everything, add a "Campaign is Requested" trigger to the main smart campaign and request it in the flow of the sweeping batch campaign.
  3. You must build the member join link with multiple tokens.
  4. Create a test event and program to gain some experience … then Test. Test. Test.

 

There is much more to learn and understand, which will come with practice.  Hopefully this article will get you off to a good start and avoid some frustrations and mistakes.

 

 

[i] ON24 Attendee is the suggested name for the custom object.  You can use something different but note that this is how this article refers to the custom object. I also recommend creating all of the fields, because you may need them some day and it will reduce the need for troubleshooting in the future.

12710
16
16 Comments
TBlane_McMichen
Marketo Employee

@Jprithvi2616 thanks for the question.  As you have noticed, the difference is that the old method was a LaunchPoint integration.  The ON24 system would connect directly to the Marketo program, so the event was associated (linked) to the program.  As such, members, status, join URLs were directly updated between Marketo and the ON24 event.  This was convenient for program setup, but it was limited with respect to other types of data, like polling, questions, etc..  

The new integration is only a system to system level integration.  When a registration for an event occurs in the ON24 platform, a custom object record is added to Marketo and linked to the person record by the email address. If you are not familiar with custom objects, the simplest analogy would be that they are like post-it notes attached to the person.  There can be many, which means that there is a one-to-many relationship, since someone could be registered for multiple events.  The custom object is created or updated* for the event, which is unique/de-duplicated by the combination of the event ID and the person email address.  The data in the custom object includes much more information; attendance status, time in event, on-demand attendance, on-demand time viewed, polling responses, questions, etc..  (There are more data fields available than can be included in a custom object, so you need to decide which ones are important to your business.)  Since the only changes made in Marketo by ON24 are to the custom object record, we need to include smart campaigns with triggers/filter to look for changes and create appropriate flow actions for the change. (*NOTE: You may need to open a support case to request custom object Update trigger and filter to be added to your instance.)  Marketo only passes member registration data to ON24 using a webhook, which includes the person's registration data and the event ID. ON24 then responds by sending a custom object record back to Market, as described above. 

I hope this is helpful.

Jprithvi2616
Level 1

Thank you so much @TBlane_McMichen - This is pretty helpful. 

bafiesta
Level 1

How can we get data from the ON24 custom object to pass to fields in Marketo? For instance I want to pass the ON24 UTM Medium and UTM Source fields to Marketo. How would I crate a token or otherwise do this? 

TBlane_McMichen
Marketo Employee

Yes. Previously you would select ON24 as a partner provider for the event program.  Then membership and status was passed through the integration, but you did not have access to other data.  Now you don’t link the program, so you need to use triggers and filters to get membership and status dat from the custom object records associated with the person records. You also need to use the webhook to pass a registration from Marketo to ON24. It is more work to setup, but you can access more data from the custom object. (Note: you may need to open a support case to add the Updated custom object trigger and filter.) I hope this helps. 

@bafiesta the way to capture UTM values depends on which registration form is used.  If you are using a Marketo landing page and form, you just add the UTM data fields to the form as hidden fields and configure them to capture the URL parameter value . If you are using the ON24 registration form, you must include the UTM fields in your ON24 custom object, but the tricky part is that you can only capture the values with a trigger when the custom object is added/updated. At that moment in time there is a token value that can be used to read the value of the custom object field.  This is done in the flow step to set your Marketo field value to the trigger token value for the desired custom object field.  i.e. {{trigger.UTM Medium}}

Pemy_Perdomo
Level 1

Hi @TBlane_McMichen,

Thanks for this great article.

 

We are building and sending the confirmation email and reminders from Marketo, not ON24, and I have a quick question about the member join link. 

I understand that once a member registers for the event using the Audience URL, a cookie is saved to their browser. The cookie will recognize them the next time they launch the Audience URL and allow them to enter the webinar. So I was wondering why we need to build a member link join with tokens if the 'Audience' URL link will recognize the member and give them access to the webinar.

 

Thanks!

Pemy

 

TBlane_McMichen
Marketo Employee

Hi @Pemy_Perdomo 

It is true that the cookie data will recognize them and pass them int, but if the cookie data is cleared or changed they will be presented with the registration form again, which is not a good experience.  Also, if they register from a Marketo form and the registration is passed through the webhook.  The ON24 cookie may not be populated so they will not not be recognized.  My experience has been to construct the URL to ensure the registered user does not experience the frustration of having to fill out the form again on the day to enter the event.

Thanks!