MARDREAMIN’ SUMMIT 2025
MAY 7-8, 2025 IN ATLANTA - GA

Days
Hours
Minutes
Seconds
🎉 The Event Is Live! 🎉

NOW PLAYING

View the session live or catch the replay here. You’ll find the recording and all related resources on this page once available.

Looking for the Chat?

Our live discussions are happening over in Slack. That’s where you can connect with speakers, join session threads, and chat with other attendees in real time.

Fancy Things with Query Strings

In this Session, we will uncover the power of using form handler features in Marketing Cloud Account Engagement (Pardot). Using Pardot form handlers is the alternative to creating forms using Pardot iFrames. That’s because the feature allows you to have complete control over the look and feel of your form as well as other customization options you need to reach your goals.

As an outcome of this session, you’ll learn:

The value of using form handlers
Anatomy and technical components of an endpoint URL
Basics of an http POST and query strings
Best practices for working with Pardot form handlers

Cypress Learning Solutions, Inc

Brandon

Walton

President & Principal Consultant

Keep The Momentum Going

Salesforce Live Fireside Chat REPLAY

Video Transcript

Speaker 0: Alright. Welcome to MarDreamin, everyone. My name is Joe Alfonso from Sercante, and I’ll be moderating today’s session. Here are a few important reminders. So we’ll be sharing these sessions with you. They’ll be available on demand, and we’ll be following up via email as well. If you would like to join another track, you can click on the change track button on the left hand side of your screen at any point in time. If you have any questions, please post it to the Q and A tab. And, uh, thanks for joining us today. We have an amazing speaker who will be sharing some great insights on fancy things with query strings. I’d like to introduce our speaker, Brandon Walton. Over to you, Brandon.

Speaker 1: Thank you, Joy, and thank you everyone for joining us today. Um, yeah. The the name of the title rhymes. I like to rhyme and have some fun. So today, I think we’ve got about twenty, twenty five minutes, so we’ll jump on in. Um, we’re gonna be talking about doing fancy things with query strings, particularly using marketing cloud account engagement, formerly known as Pardot and my favorite little thing called form handlers. But before we get into that, let’s start out with a thank you to all of our sponsors who are able to, um, make this event live and available for all of y’all to join and learn new stuff. So thank you for for putting this on, uh, Salesforce for being the sponsor, and and all the great sponsors today. Alright. Before we’re gonna get started, um, let’s do a little bit of a welcome poll here. And what we wanna learn is we just wanna get an idea of the level of comfort, um, the audience has with, uh, marketing cloud account engagement as of now. So if you’re a beginner, uh, you’ve been using it for less than three months, um, enough to be dangerous, you’ve been using it for just under a year, you know your way around it. Um, intermediate, maybe you’ve been using it for one to two years, or you’ve been using it for a long time. You know the ins and outs. You’re probably calling it Pardot by by default. And it looks like we’ve got a lot of experts in the room, so great to see that. So I can jump right into Pardot tech, um, um, terminology. And I might not spend as much time explaining, like, what a form handler is or what a form is. So alright. Very good. Moving ahead. What is a query string? So when we talk about this thing, this fancy thing called a query string, first, we need to understand what a query string is. So let’s learn about it. This is the Wikipedia definition, and I’m gonna give you this very, um, technical explanation. A query string is part of a uniform resource locator or URL that assigns specific values to parameters. A query string commonly uses fields that can be added to a base URL, um, and in a web browser or a different application, uh, to prepopulate things like, for example, of an HTML form. Um, and I’ve got a dad joke for you. Um, so a URL walks into a bar. Um, what we’re looking at here is, um, a Google search and a URL bar. So we’re using something like Chrome. The first part of the URL is the server. Right? So google.com is where we’re making our request, um, and then anything after this little question mark, that’s what we’re talking about when we refer to the query string. So a URL walks into a bar and asks, where am I going? Very silly joke. If you don’t laugh, that’s okay. Um, but, hopefully, it gets the message across. So to break down what the query string is doing is once we establish the server or the location that we’re going, we need to we can also pass through additional values to help that server or that service, um, either prepopulate or return special special information based off of what we’re asking it. That’s our query or our question. So if you pop into Google, for example, one of the things that you’ll notice is after you do your Google search, you’ll have a little question mark, and you’ll have a bunch of stuff that comes after that. To the untrained eye, you might call that goobly gop or goop or something like that, but it all actually means something. So the first thing is the key. That’s the question. So in this, when we’re googling something, it returns a Q. You might call that a query or a question. Then you’ve got the separator. The separator lets us know the question from the value. The value is what we’re searching for. So in this Google search, you can guess it. We are searching for Pardot. And then finally, the thing that we’ll wanna know is this little ampersand. That ampersand is the connector that allows us to add more than one key value pairs or more than one queries to our string. So you can see in this example here, the the question is Pardot. It gives us the source. It gives us the e I, some kind of special key, some other special keys. Maybe a lot of that doesn’t mean anything to us specifically, but for what information that Google is capturing for us, that’s what they’re gonna be using all that stuff for. Now the great thing is marketers, we can use this stuff to our advantage. So here’s an example of a real live well, a demo page, um, that’s on the real live web. So we’ve got demoshop.com. That’s the server. Um, we’re looking at this product page, and you can see we’ve got our question mark here followed by a UTM source. So that’s the source that they came from and a UTM medium. We can see they came in through an email and the UTM campaign, summer fifteen. So what we’re able to do is pass through these values. So if we wanted to have a form or present a special, uh, experience or track, um, hits to a specific, um, uh, based off of a specific campaign or a source or a medium, we can use these query strings to accomplish that. Now we only have to create one page, so we don’t have to create a new page for every medium or every source. We can use the query strings to pass through that information almost dynamically, so we can understand where our traffic is coming from and how they’re finding us on the web. Alright. Go ahead and give it a shot right now. So if you go and pop in Google right now, and I’m gonna type in because we don’t wanna call it Pardot. We wanna call it marketing cloud, and you could see I’ve been doing this a little bit. You can see in real life here, um, we have our search. The Q equals what I just popped in there, and we’ve got these other things AQS. This is showing us the browser that it’s on. All of the other stuff that Google wants to capture about me when I’m doing the search is getting passed through to this query string. Um, so you can go go ahead and try that out. I’m assuming that folks on this call Google things normally. So, hopefully, now when you’re googling things, you can get a better understanding of of what Google is searching for. And some and in in some cases, maybe as a shortcut, you can just type that directly in your search bar, google.com/search question mark q equals whatever you’re searching for. It’s a fun way to understand what query strings are doing for you. Alright. So important things to know about the basics of query strings and what they are. Um, the query string begins at little question mark that you’ll see in the address bar. Um, this is where your question or your query begins. Uh, query string is what’s called a key value pair. Each key value pair is gonna define a query parameter or parameter of your query or question. The equal sign that you see in the query string, that’s gonna be called the separator. That’s how the web browser knows when you’ve got your key or the question that we’re asking and the value that’s coming through. The key is to the left of the of the separator. That’s the identifier. Think of it if we’re referring it to, uh, like a Pardot form or something like that. Think of that as the field name that you’re using. And then to the right of the equal sign, the right of the separator, that is the data that’s going to be entered. So that would be, you know, u t a medium would be the key. Email would be the value. So that value is gonna be what gets populated on our form. And then the ampersand that you see there, that is the connector. Um, it’s used to add more key value pairs in your request. One other thing that you might see is you might see this little plus sign. Um, web browsers can’t read a spacebar, so if you want to have a plus or if it’s making room for a plus, um, it’s gonna add that little plus sign for you. Most services that you use will do that plus for you, but you’ll want to know that, um, if you see that plus in the string or if you’re looking to manually add these, that plus is what the browser is gonna use as a space bar. Alright. Um, two types of requests that we wanna keep in mind, what we’ve talked about up until now is a get request. So the idea you go into Google, you type in your question, you say, okay, Google, go and get me this information. When we’re going to our web browser and asking for things, that’s called a get request. The other kind of request, um, is a post request. So a post rather than asking the browser for something, this is something that we might use as marketers, like in our forms, to post information somewhere. So instead of asking a server to give us something, we’re posting information to a server with a post request. Um, a get request is when we’re searching for things in the browser, and the easiest way to think of a post request is when we’re asking a question or when we’re, um, having an action, um, in a form, we’re gonna post that information to a location. Alright. Now let’s talk about query strings and marketing cloud account engagement or what we used to call Pardot. And let’s talk about some of the magic we can do with it. Alright. So the first two things that we’re gonna talk about is using query strings in forms or landing pages. Um, they’re gonna work very similar. Um, so we’re gonna just go over one example for the purpose of time and understand that you could apply this logic to your landing pages or your Pardot forms. So you can supercharge your marketing attribution by using query strings. So we’ve got this example here. Let’s visit this form. Alright. So on this form, we’ve got our email, phone, business, and source. Source is gonna be the field that we’re focused on for this little demonstration here. Typically, we would hide this field called source, but we’re not gonna hide it right now for the purpose of this presentation so that we can understand the kind of cool things that we can do with this source when we apply some query strings to it. Alright. So the first one is we’re going to pass through to the same form, source equals Facebook. So if we click on there, boom. You can see what it’s doing already is it’s prepopulating this source field with Facebook. And you could change this out with anything, la la la, and it’s gonna do that exact same thing. So we can do this we could see the same thing on Instagram. Boom. Pre populated with Instagram. And we can see the same thing on TikTok. So oftentimes, we get asked the question, does Pardot integrate with Instagram? Does Pardot integrate with TikTok? And if you’ve been in the space for a while, like most of us have been, you know that there is no native connector to to connect to those platforms. But what we can do is if you have a form, um, a tie tied to an advertisement that you’re doing one of those platforms, you can do something like this and prepopulate that form with the source. One of the really great features that was rolled out in Pardot this year is the conditional logic that we can now do on a form completion. So it’s really cool now. It’s something that we wanted for a long time. It’s really cool now that we can say, if source equals TikTok, we can add them to a special TikTok list. We can handle them in a special way. If source equals Instagram, for example, we can handle them in a different way. So with the enhancements that have happened in Pardot this year within the recent release, we can even do a lot more than what we were doing previously. Before we had that, we would have to create some, um, special kind of automation rule that would take place after the fact or maybe use a dynamic list, something like that. So, um, that’s an example of how you can get this to work with a Pardot form. If you’re using it on a landing page, it’ll work the exact same way. Alright. Another thing. Let’s talk about after a form is submitted and you’ve got your thank you content on your form. So one of the things that a lot of companies are using for things like scheduling a demo and stuff like that It’s a tool called Calendly. Um, me and my team love it, um, and I find it being very, very popular specifically around marketing folks who want to be able to allow, um, a visitor or a prospect just maybe schedule a demo or schedule some time with your sales team. Now one of the pet peeves that always gets me is, let’s say, I got a thank you page here, and I’ve got this piece embedded in my thank you page. So I’m going into here to schedule some time with your team. I pop in here. Okay. We’ve got Wednesday at 2:30. And now I’ve just submitted this Pardot form or I’ve just submitted this form previously, and now it’s asking me to enter my information again. Well, that’s kind of annoying. One fancy thing that you can do with a query string is you can actually pass through a query string for Calendly, and it works. So now we’re gonna have some hard coded values in here. But if you’re thinking of this on your Pardot thank you page, for example, you can pass through those merge fields or variable tags at the end of your URL and give your users an experience more like this. Where we go through, again, it’s the same experience. I can already see up here in the query string. We’ve got this name and email getting passed through. So if I go back here into Wednesday and click this, ta da, just like magic, a very fancy thing, I don’t have to enter my information again. That’s giving me a much better experience as a user when I go to your page, submit a form, and I wanna book something with your team using a service like Calendly. I don’t need to present that information two times. Alright. Now one of my favorite things, he paying my guy, um, form handlers. A little bit of special sauce that you can do with form handlers. If you’ve used form handlers in the past, you probably are familiar that you’re using some kind of key value pair. Oftentimes, you’re using form handlers with a a tool. WordPress is very popular, gravity forms, you know, tools like that. And you’re probably already getting familiar with having to pass through a bunch of stuff to send it to a form handler. Um, form handlers are awesome. Um, developers can use them to pass through information into Pardot. And what’s nice about it is it can be API ish. Um, it doesn’t give you the full variety of everything that you can do with a Pardot API. But if you have a development team that has an application and maybe there’s a paywall or a submit button, form handlers work great with that because you can grab the information of the user that’s already in the application, apply it to a form handler. So if Brandon is in your, um, app, clicks on a page, or go somewhere you want, your developers can send that form handler into Pardot. Boom. From there, you can add Brandon to whatever lists he needs to go on, associate him with whatever, um, um, users or whatever kind of Pardot stuff you need to use. I absolutely love form handlers, um, because you can use them like an API without having to go through all the complicated steps of using a Pardot API. Specifically, if you’re just needing to use Pardot to pass information into it from other systems. Um, and that leads me to the final fancy thing with the query string, and that is using form handlers for selective sync in Salesforce. Um, you can do it with Apex. Now don’t worry if you’re not an Apex coder. We’ve actually made it simple for you already. Um, we’ve created a tool, um, we call it webhooks for Salesforce flows. It’s an installed package that you can install. If you stick around with us a little bit longer, we’ll show you how to get it, and even this week, we’ll throw a little special thing for you for attending this session. And what this does is if you are using Salesforce flows and you have this package installed, it allows you to send an HTTP post from Salesforce to another location. Now we’ve built this specifically because this request for selective syncing between Pardot and Salesforce always comes up. Folks typically well, not typically. Um, sometimes folks don’t wanna have it always on, always connecting. So every time a contact is created in Salesforce, it’s created inside of Pardot. They wanna have a little bit of control over that. This allows you to do exactly that. So in this scenario here, we’ve got a record triggered flow. So let’s say it’s a contact record and a condition is met. We’ve got an action, this Apex action that we’ve prebuilt as part of this package that allows you to define a URL, and it’s just gonna send them into Pardot using that form handler. One of the awesome things about form handlers is it’s going to be smart enough to know based off of that email address whether that person already exists inside of there, and it’s not gonna end up creating a bunch of duplicates in Pardot for you. So this is a very simple, um, use, uh, flow that that uses this service. Um, you could get very advanced with it, and you could even have it send data into Pardot when it’s not triggered on a lead or contact. So if you have a custom object, as long as there’s an email field that we can pass over to Pardot, it works. Pretty cool stuff. So in this one here, in this example that we’re gonna show you today, the object is going to be a contact record. We wanna make sure that there is an email in there, so we’re gonna make sure that the email is not empty. And then in this case, in this use case, in this example use case, we’ve got a special button inside of Salesforce called subscriber. So the idea is if someone checks that subscriber button, we’re gonna automatically send them into Pardot using this form handler solution here, using this webhook solution here. Now you can create any kind of array of conditions, uh, that you want to send this into, um, in in into Pardot using your form handler. Um, you just have to invoke it, um, through through your through your flow here. So the next step is we’re gonna create a formula. In our formula, um, we’re gonna add our form handler there. So you can see we’re using just the raw go.pardot.com. It’s fine because we don’t need to show it anywhere public. We have our query string, so the query in this one is just going to be the email. And then don’t let this confuse you. This is a little tricky, but this is actually a formula in our flow that’s saying the email is gonna equal whatever that record that’s being used in the flow, and so it’s gonna pass that through to Pardot. We found that you can use it with, um, just an email field when you’re doing it off of a contact or a lead because of the way that the rest of the sync is working automatically. Um, but you can also use your connector, the ampersand, to say email equals this, first name equals this, last name equals this, and whatever other parameters that you want to send to you can extend the formula to include as well. Um, and then we’ve got this is our Apex class it uses an input variable we’ve named URL You add your formula to this URL thing here. So the idea is it goes through here. It’s gonna send whatever is in this URL, post it from Salesforce. So what it’s doing is it’s posting to our form handler directly from our Salesforce flow. Pretty cool stuff. Right? Um, so what we’ll do, go ahead and take feel free to take a screenshot of this. This is where you can find, um, this service if you’re interested in it. Um, we’re making it free until Friday for everyone who’s in this, um, in this course. Um, what you’ll use is a coupon code called Mari Dreamin, and that’s gonna give you this thing 100% free. Very cool. Very cool. Very cool. Alright. Thank you for attending. I think we’ve got some time left. We’ve got a little bit over five minutes left. Happy to answer any questions that are coming through. Joy, are you there?

Speaker 0: Hi, Brandon. Thank you so much for that amazing session. So we’ll use this, uh, these few minutes to tackle some Q and A’s. And, actually, we do have a couple of questions coming in, Brandon. So one user says, one issue I run into the time with outbound messages is multiple payloads of the same information being sent. Does your webhook package also have this issue?

Speaker 1: So think of this webhook at, um, as an HTTP post. So one of the one of the nice things about doing this with flows is that you can control the conditionality of when that of when that goes out. So, um, one of the things that that I do or that we recommend to limit the amount of, um, multiple payloads going out is adding adding the condition. Um, this is going to use your same web call out limits. Um, I believe it’s the same that you would see in an outbound message. So if you get to the point where you’re sending, like, more than a 100 plus at a time, um, you will see the same limits there. Uh, however, if you have the conditions there to make sure that it is controlled, it works really nicely for that. So, um, this is going to adhere by whatever, um, HTTP post or outbound message limits that your org will have. It doesn’t get around that. It’s not batching them out. Um, so yeah. You you have to adhere by the exact same thing. So the so the what the question was is let’s say you wanted to do this across 10,000 records at once or a thousand records at once. Um, it’s not gonna be ideal for that. But let’s say you just wanted to have more control over what was syncing over, it works great for it works great for scenarios like that.

Speaker 0: Thank you for the answer. So we’ve, uh, we’ve got one more question from our other user who says, for the Calendly example, how do you dynamically prepopulate someone’s name and info in the query string? Your demo has your name and email, but how would you set up the set up the string to grab each unique name?

Speaker 1: Yeah. How

Speaker 0: much is used?

Speaker 1: Yep. So on your on your thank you page and and I don’t have a demo environment for Pardot to show you for this short of a presentation. Um, but on the thank you content, uh, of your form, you do have the ability to add the exact same merge fields that you would if you wanted to say, you know, thank you, Brandon, for completing our form. You’d use that exact same method. So you’d grab those merge fields and you pass name would be, you know, in part at have been I have it set up, first name plus last name, something like that to pass through those values that way. So what you do is in your thank you content in your Pardot form section, you’ll add the thank you, you know, the, uh, the those merge fields, um, in that query string that way.

Speaker 0: Amazing. Yeah. We’ve been we’ve been getting some more questions. So is it possible to use your webhook to set a prospect record in Pardot as do not sync?

Speaker 1: Um, so I think that do not sync, if I understand it correctly, that’s that’s another setting. Um, think of this as a form handler. So, um, if you can’t set do not sync from a form handler, you couldn’t set it from here. Um, so I’m gonna say no, that it won’t support that. Um, but what you could do is if you were gonna have your form handler process things in a certain way, um, um, you know, whatever you could do in a form handler you could do here. I think the way that the way that we think of this service is more of the opposite, and that would be disabling the automatic syncing that exists inside of the connector, uh, and use this instead. So that way, you’re only passing through specifically the records that you do want to sync. So think of it, um, I think the way that you’re thinking of it, this would work the exact opposite of that. So it’s not, um, tag these as records that shouldn’t be synced. What we’re doing instead is tagging the records that should be synced.

Speaker 0: Makes sense. And, uh, a couple of more, uh, short questions. So are UTM’s just what’s inside the query string? Or

Speaker 1: So a u a UTM, um, and I’ve always thought of them as a universal tracking metrics, but it means something different. You could you could Google what they actually mean. Those are just types of types of parameters that be can be included. They’re the ones that Google uses. They’re the most popular ones. So you’ve got the UTM source, the UTM campaign. Yeah. Those are just types of queries, types of keys that we can pass through into Pardot or anything. Um, and why they become popular is because they’re pretty much accepted across a lot of different services. Um, another thing that you’ll see is companies will create their own versions of these. So some services will have something like ref ID. Facebook has something like FB click ID or FBCL ID, things like that. Um, so there’s different, uh, standards of keys that are used. The UTM keys are just one ones that are widely accepted.

Speaker 0: And another user asks, when should you use modifiers and when not? And they have a an example when you use the brace bracket three times versus two times.

Speaker 1: Yeah. So that is a question about the, um, handlebars merge language. Um, the article on it is great. Um, the the way it’s either a literal, right? A literal string on three. Um, so, um, it depends on, it really depends on the scenario on the situation. I have found that if you’re gonna use like for that Calendly example, if that’s what they’re referring to, just dragging through the the value that they include there tends to get the job done. Um, Yeah. So it’s like whether it’s gonna be, like, an encoded version or the literal version of it. That’s the difference between the two brackets or the three bracket.

Speaker 0: Cool. Thanks for answering those questions. Uh, we are at time, and we’ll be kicked out of this meeting anytime now. So that concludes the session. Uh, if you still have any questions, uh, please do reach out to our speaker on the event chat. And thanks for joining. Please do check out our, uh, sponsors booth sometime during the event. We like to thank our sponsors for sponsoring this event. And you can also head over to the agenda to check out the full list of all events happening today. Thank you.

Speaker 1: Thanks, Joy.