Using Dynamic Chat Conversational Flows for Meeting Booking experiences

Marketo Employee
Marketo Employee

Need to reduce the barriers to meeting bookings? Want to send your valuable leads directly into a meeting booking page directly from an email? In this blog post, I will walk you through using Dynamic Chat and Conversational Flows to trigger a meeting scheduling widget when someone clicks an email link so you can build a conversational experience to get your leads to sales calendars faster.


Step 1: Building your Conversational Flow

First is to create your Conversational Flow that will handle the meeting booking. This should be as minimalistic as possible; a welcome message and a meeting booking card. Feel free to add an Action card or Goal card if needed, but keep the barriers to booking to a minimum!


Currently a Conversational Flow cannot start with a Meeting Booking card but we are looking to allow it in the future.




Step 2: Updating your Javascript snippets

After you Publish your Conversational Flow, head to the Settings tab and the Conversation Trigger section. This is the code that lets you invoke the Conversational Flow using Javascript and have the modal with the Meeting Booking card appear on the page.



In this use case, we want the modal to appear when the visitor lands on the page but only if they're coming through the link in the email. We can use a bit of Javascript to modify the "On page load" event snippet to do this. You should work with your developer to develop this for your website; in my example I am going to use ChatGPT for assistance as it can do small JS snippets fairly easily. In this example, I am going to use a JS snippet that:

  • Checks if a specific URL parameter key "sp" is present in the URL and that parameter has the value "meeting"
  • Load the Conversational Flow on the page if the parameter and value I'm looking for is present
  • Remove the URL parameter from the URL so that the user does not copy/paste it to others




// Check if the 'sp' parameter is present in the URL and has a value of 'meeting'
if (getUrlParameter('sp') === 'meeting') {
    window.addEventListener('load', function() {
        id: 'xxxx-example-con-flow-ID-xxxx',
        type: 'popup',

// Remove the 'sp' parameter from the URL
if (history.replaceState) {
    const urlWithoutParam = removeUrlParameter(window.location.href, 'sp');
    history.replaceState(null, null, urlWithoutParam);

// Function to get a specific parameter value from the URL
function getUrlParameter(parameterName) {
    const urlSearchParams = new URLSearchParams(;
    return urlSearchParams.get(parameterName);

// Function to remove a parameter from the URL
function removeUrlParameter(url, parameterName) {
    const urlObject = new URL(url);
    return urlObject.href;





This should go on the page you want your leads to be linked to when they click the meeting booking link in your email. Make sure that the Dynamic Chat script is also loaded on that page.


Step 3: Set up your email links

Almost done! Now you just need to set up your email and get ready to send it to your leads. Don't forget the most step: set up your URL parameters! Remember, in Step 2 we set up the Flow to only trigger if the page is visited with the specific URL parameter "sp=meeting" to ensure that they have to come through a link you sent them in the email. Ensure that your link to the page in your email has that parameter so the Flow triggers correctly.


Step 4: Test and send!

That's it for implementation! You should do a full end-to-end test to make sure:

  • Your link in your email is going to the right page
  • Landing on the page from the link in the email opens the meeting booking module
  • The URL parameter of your choice is being stripped from the browser's URL bar
  • Visiting the page without the URL parameter does not call the Conversational Flow

I have a small example set up here (it does not have the meeting booking card):

With the URL parameter:

Without the URL parameter: 


Observe the different behavior between the two links!


Every Marketo Engage instance comes with a Dynamic Chat Select license with a lifetime limit of 100 Conversations in a Conversational Flow (in this circumstance, a Conversation would include triggering a Conversational Flow), so you can test out this feature to see if it works for your business. Upgrading to our Dynamic Chat Prime package will unlock the full power of Conversational Flows with a much higher monthly limit, as well as access to other features like Smart List audience targeting in Marketo Engage Forms.


Things to keep in mind

  • While ChatGPT is useful for proof of concepts, please work with your web developer to implement a solution like this. Don't just copy/paste my example!
  • You can use whatever URL parameters you want to set this up. It is not an identified marketing parameter so recent privacy changes should not strip it from URLs.
  • Be mindful of where you link your lead to. Choose something contextually relevant just in case the script fails or if they don't want to book the meeting. The Contact Us/Book a Demo/etc page would be a good place for this experience to launch!
  • This is not an authenticated experience. Do not put anything in this flow that is private personal or business information. While it is set up to keep the average person from finding how to trigger the meeting booking Flow, it's possible to deduce by digging through the code on the page.
  • Customer Support is not equipped to troubleshoot custom Javascript.