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.

A Salesforce Flow For Contact Role Woes

Contact roles are essential to “link” contacts to opportunities. Without this, there is the potential for inconsistencies in Pardot automations and segmentation.

So, how do we “enforce” contact roles to prevent these inconsistencies?

This is a how-to session to do just that. Learn the solution using a combination of validation rules and Salesforce Flow to make the contact role required in the opportunity object.

Cloudtegic

Teresa

Suan

Cloudtegic

Max

Bradley

Keep The Momentum Going

Salesforce Live Fireside Chat REPLAY

Video Transcript

Speaker 1: Perfect. Um, hi. Welcome. My name is Catherine Williams. I am a. We have amazing speakers joining us today to discuss their session, Salesforce flow for Pardot contact role woes. Uh, so with that, I’d like to introduce you to our speakers, Teresa Swan and Max Bradley.

Speaker 2: Thank you, Catherine. Uh, first and foremost, good morning, good afternoon, everybody, uh, depending on where you’re calling in from today. Uh, our presentation is going to be on a Salesforce flow for your contact role, Lowe’s, uh, uh, as Catherine had mentioned before. Uh, but before we dive into our presentation, just wanna take a second to introduce ourselves to you. I’ll let you go ahead first, Teresa.

Speaker 0: Sure. Thanks, Max, and thank you everyone for being here. So my name is Teresa. I am a CRM and and automations strategist here at CloudTeagic. Uh, I’m a former engineering educator, and I’ve been in the Salesforce ecosystem for almost two years now. Um, here at Cloudtigic, I help out with Pardot and Salesforce integrations. I’m three times Salesforce certified and based here in Phoenix, Arizona. So I truly enjoy working with these tools, and I’m excited to share what we’ve learned about this automation with you today. Max?

Speaker 2: Thank you, Theresa. So, yeah, my name is Max Bradley. I’m also a CRM and marketing automation strategist with CloudTegic calling into you today from New Jersey. Um, I carry three Salesforce certifications with that being Salesforce certified administrator, Pardot specialist, and Pardot consultant. I’ve been working with Cloud Teague now about nine months or so and have great pleasure with, um, being on several projects and learning a whole bunch of different material, uh, which led to Teresa and I’s presentation for you today. So excited to be here and excited to get this going. Alright. So as we mentioned before, um, our presentation is a Salesforce flow for your contact role woes. Um, and basically, what we’re gonna be doing in this presentation is, uh, defining what exactly an opportunity contact role is, um, how these contact roles work, and how we can enforce contact role entry on our opportunity objects in Salesforce. Now before we dive into our presentation, uh, just wanna give a special thanks to all of these great sponsors that we see on the screen here who have been, uh, so kindly to put this great event together for us. So, uh, before we dove dove in for our presentation, just wanna shout out, um, everybody that we see on the screen here. Okay. So diving in, um, what exactly is an opportunity contact role? Um, in Salesforce, the object known as the opportunity contact role, it’s the missing link between our contacts, which is the people that we are marketing to, um, and our opportunities, which is the revenue that we’re gathering through those opportunities. Um, so without the use of contact roles, marketing attribution is it’s disregarded in the sales process, and, um, marketing touch points eventually become long forgotten. Contact role, it’s critical to demonstrating how marketing efforts contribute to revenue. Um, so designated the contact role is a strongly encouraged best practice from us to you. Um, now how exactly do we make sure that the contact roles are used in order to gather all this marketing attribution? Um, so this is a how to session on using a simple solution, which combines a validation rule and a Salesforce flow to make the contact role required on our opportunity object. So contact roles within an opportunity is how Pardot picks up on revenue and associates it to the contact and the campaigns. Um, and this is the only path to attribution and what’s connecting revenue opportunities to Pardot itself. Um, so thanks to contact roles, marketing, and sales, they’ll be aligned. They can move forward in unison, um, and, ultimately, they can close, uh, business opportunities. So why exactly do we need contact roles? Um, and it’s gonna be for these two reasons that we see on our screen here. Um, it’s gonna be for marketing attribution, um, as well as campaign influence, um, with regards to campaign influence reporting. So with marketing attribution, um, it’s essential in reporting marketing ROI. Um, now with contact roles, everything is tracked. So we can see marketing attribution from the very beginning stages of marketing, um, with regards to interaction with the customer. And we can, um, we can more accurately report ROI. So this is how marketing gets recognition for all of their hard, uh, earned efforts. So moving along, now we have campaign influence models. Um, so these models are what exactly determines revenue share. Um, they describe how each of the campaign touch points are weighed with regards to, um, percentage of influence when they’re associated with opportunities. Now some key touch points that we can see on the screen here with regards to campaign influence models. Um, first and foremost, contacts, they must be campaign members. Second, contacts must be associated to opportunities using the contact role related list. Three, campaign influence plus additional models must be enabled and active. Um, and lastly, this is a a good, um, note to keep in mind is that it depends on what additional part that you are on. Um, now if you’re on plus edition and up, then you’ll have access to these additional campaign influence models. Um, however, if you are on growth edition, you will not be able to access, um, these additional campaign influence models. So, um, just something to keep in mind moving forward. So with these campaign influence models, um, there’s three that we activate, um, in Salesforce setup in campaign influence settings. Um, and that’s gonna be our first touch model, our even distribution model, and our last touch model. Um, so the first touch model, it attributes all opportunity value to the first campaign that our contacts have interacted with. Um, the last touch model, it attributes all opportunity value, uh, to the very last campaign that the contact has interacted with. And then the even distribution model just attributes an even split of the opportunity dollar amount to all campaigns, um, that our contacts have been interacted with. So, um, campaign influence. Um, now this is arguably one of the most underutilized parts of Salesforce. Now when it’s leveraged effectively, it helps marketing demonstrate ROI, um, and it shows exactly which campaigns are influencing our pipeline. Um, now campaign influence reporting gives marketers the tools to demonstrate exactly how their efforts have contributed to revenue. Um, now often with marketers and admins, they go through this process of enabling this. Um, they find out that they don’t have data. They need to fuel these reports that they’re searching for. Um, so campaign influence works by linking contacts to our campaigns via the campaign member records and then contacts to opportunities via our contact roles. So how exactly do contact roles work? Um, now as we can see on the screen here, Pardot prospects are closely connected with their associated contact record. Contact records do not have a direct relationship with opportunities. Um, so all that being said, what Salesforce did was they developed the object called contact roles, um, and that’s what created this direct link between our contacts and the role that they are playing within our opportunities. Um, and so like the last line says, it’s just that bridge that connects our opportunity records directly to our contact records. So some key points to, uh, point out here are, um, with contact roles, they’re nonnegotiable if we wanna see any type of ROI reporting, uh, from campaign influence, uh, perspective. So we must have at least one contact role on our opportunity records to see any type of ROI. Um, this also requires a discussion with the sales team. So we wanna make sure that marketing and sales are having an internal discussion. And, um, with this process that we’re gonna share with you, making sure that both both teams are on the same page, um, and we’re they’re both aware of the goal that we are trying to achieve. And the last is the option to automate. Um, now we can do this manually. Or with the day and age that we’re in, we like everything to be automated. Um, so with that being said, that leads us into our discussion with Teresa today. So I will pass it over to you.

Speaker 0: Thanks, Max. Um, so, yeah, we’ve talked about how or what opportunity contact rules are, uh, and their importance of them to marketing and ROI. But the big question is how do we ensure Salesforce users enter opportunity contact roles? So these are typically the sales people in your organization that are working with opportunity records on a daily basis. So one solution, uh, that we’ve come up with is to build a combination of a flow and a validation rule to make a contact rule required upon saving of an opportunity record. So for example, when an opportunity is closed one, a validation rule can trigger requiring an associated contact rule be entered. So I’ll demonstrate, uh, how to create that here. So here is what it looks like, uh, when we set up contact roles as a related list component on the, uh, opportunity lightning record page. So a contact role can be manually entered here, um, directly from the opportunity record by clicking on the dropdown right here and clicking new. So, uh, we can set it up so that this is a required entry upon closed one save or really any other stage in the opportunity pathway. And that’s so Salesforce users will not be able to save the record without entering at least one contact role. So some might say, oh, that’s easy. We’ll just create a validation rule and make it required. But it’s not, uh, it doesn’t work quite that easily. So we’re dealing with two different objects here. Uh, we’re dealing with both the opportunity object and the contact role object and validation rules are restricted to checking fields in one object only. It doesn’t cross reference different objects. So I’m gonna walk you through, um, screenshots of the steps in the process here, and then I’ll share a live view of the process after. So, uh, bear with me here. But in step one, to setting all of this up, it’s to create a field in the opportunity, uh, object. So in this demonstration, we’ll call this field contact role ID, and we’ll build it on the opportunity object. We’ll make it a text field. Um, and we always wanna add a description to everything. So for the description, we put this is the ID of the opportunity contact role associated with this record. You have the option of making this field hidden if you so wish for demonstration purposes, we’ll just keep this visible, uh, today. So once we’ve created a contact role ID field on the opportunity, um, step two is to create a validation rule on the opportunity. So these are screenshots of what you’ll see when creating the validation rule. Uh, we named this rule contact role required. And for our description, we put this validation rule checks to see if the contact rule is populated. For the air condition, we put is pick val stage name closed one. So this is where it’s checking for the stage. Uh, you can put really any stage that you prefer here, and it’s checking is blank contact role ID. So this is important because it’s checking if the contact role ID field that we just created, it’s checking if it’s blank. Uh, and if it is blank, in fact, uh, our error message would pop up and it would say, please provide a contact role before saving this opportunity record. So the next step would be to, uh, create a Salesforce flow so that when a contact role is created or updated, it automatically populates that new contact roles ID field that we just created. So remember, as long as the contact role ID field is populated, the validation rule will not trigger. So the opportunity can be saved. So let’s build the flow that populates that field. The flow looks something like this. So I’ll show it live in just a bit. I just wanted to walk you through the steps here first. So you can see we have our trigger, um, and just two elements to build for this flow. So we’ve got a decision and update records element. Um, the flow is record triggered, so we’ll select that to start. And then here, we’ll enter, uh, opportunity contact role for the object. So, again, uh, the trigger is it happens when a record is created or updated, so we’re gonna configure that here here and select a record is created or updated. And as for entry conditions for this flow, we’re just gonna leave it at default to none, um, here. So, uh, again, this, uh, this flow is triggered based off of the opportunity contact rule when it’s created or updated. And in this section, it asks when to run the flow for updated records. So we’re going to leave it here at every time the record is updated and meets the condition requirements. Remember, we didn’t have any condition requirements in the previous screen, so this flow will just run every time the contact role is updated. And, um, then it asks you how would you like to optimize the flow? So your options here are fast field updates and actions and related records. So the first one is a before save field or feature, sorry, and that runs before the record is saved. And then we’re just going to go with action and related records, which is an option to run it after the save. Um, and this this part of the flow is where we set up the decision, uh, that decision element. So we named this decision is a opportunity contact role ID blank. Sorry about that. So a contact role record was either, again, created or updated and that triggered the flow. And when it gets to this decision, this part is kind of like a condition. Uh, it checks if the opportunity I’m sorry. Checks if the contact role ID field on the related opportunity record is blank. So to set that up, uh, what we’ll do is we’ll enter record, and this is referring to the triggering record. And then we’ll look for the related opportunity record and the related contact role ID field. So and we’re gonna set this to equals blank and, um, that that just checks to see if that field is, um, is blank. So for when to execute the outcome, if the condition requirements are met, uh, that’s the one we’re gonna go with for this. And here is where we added the element to update records. So we’ve labeled this element update or contact role ID field. Um, this step in the flow will update the contact role ID field that we created. Uh, it’ll populate the field with the contact role ID number. So for this section down here, it, it asks how to, how to find records to update and set their values. And we’re going to select, uh, specify conditions to identify records and set fields individually. Now this allows us to update records on another object. Uh, and remember this flow is triggered when a contact role record is created or updated, but we wanted to update a field on the opportunity object. So this is where the flow will jump to the object we indicate down here and it’ll update a record on that other object. So for this we’ll put opportunity. And as we move down the screen, uh, we can set a condition to tell exactly which opportunity record to update. So for our field here, we’re going to select opportunity ID and we’re going to set the operator to equals. And then for the value, we’re going to enter record again, referring to the record that triggered this flow. And we’re looking for the related opportunity record and the related opportunity ID field. So essentially this condition is saying when the ID of the opportunity matches that’s in the, uh, opportunity in the database, when it matches the opportunity ID related to this contact role record, then do the following. And it’s a little bit confusing to get this logic, uh, straight, but it’s very important. Uh, it’s a very important step in identifying which record to to update. But, uh, the next steps is where we tell it which value to put in the in the contact role ID field. So here is where, uh, we would put contact role ID. And then here again, we’re gonna select for value. We’re going to select the record that triggered it and then the contact role ID field here. So, uh, as a result, we are, um, going to be populating, uh, the contact role ID field with, um, this information so it’s no longer blank essentially. So our last step, uh, is to label the flow. So here is, uh, where we called it contact rule flow. I also like to put a very descriptive description in the description box. So here we put a summary of what the flow is all about. So when opportunity contact role is created or updated etcetera etcetera, uh, it’ll update the contact role ID field. Uh, I also like to take the time to add here that a validation rule can be used in conjunction with this and it’ll check for if the field is blank and you can alert the user, uh, to add a contact role. So, uh, let me jump into a live view of the automation now. So I’ll open my dev org here. Um, so first, we’ll go into let’s go into setup, and I’ll just kinda show you what I did. Let’s see. It ends up here. I’ll go into, um, object manager, and we’ll jump into the opportunity here. So I just wanted to show you that if we go into fields and relationships, um, you can see here the contact role ID field has been created. Right? And it’s a text field. And then in the same area, you could go down to validation rules and, um, you can see that we have the validation rule for the contact role required, uh, rule. So same same, um, criteria that I showed you in the slideshow, it’s all here, but I just wanna point out that this, uh, validation rule is active here. And then the final step was I walked you through the flow. So let’s take a look at that. And this flow is called contact role flow. And you can see here once it loads up, we’ve got the three elements. So kind of the trigger, the decision and the update records and same thing, uh, it is active. So you’ll want to make sure both validation rule and the flow are active. Uh, and then let me just jump into an opportunity here. I’ve got a test opportunity, uh, and I’ll demonstrate kind of what happens. So you can see here in this test opportunity, we have a field for contact role ID. Uh, notice that it’s blank. Notice that we have no contact role, um, selected for this opportunity. So if I were to try and save this as closed one, that validation rule should trigger and it says, please provide a contact role before saving this opportunity record. So that validation rule triggered. It worked. It needs a contact rule in order to save this. So I’m gonna go back in here and add a contact role. So if we just select the drop down, add a contact role, and select someone for that, and always good to select the role for that person. Uh, you can see here that the contact role ID has been populated. And if I go and try to save it now, we have success. So the flow and validation rule, uh, worked worked together. So, uh, in closing here, some things I wanted to do, uh, you to look out for when using this process, you’ll wanna, uh, decide which opportunity stage you would like for users to enter the contact role in. For example, for this example, we use closed one stage, but you would need to talk about that and adjust it based on your organization’s preferences. Um, users training is strongly encouraged so before launching this process you’ll want to train the users on how to enter contact roles, talk about the importance of it, how it’ll benefit them and then, uh, the fact that they won’t be able to save an opportunity record unless they enter at least one contact role. And then finally, um, best practice is to use multiple contact roles. This process in particular requires a user enter one contact role. Um, of course we want, you know, we want people to enter as many contact roles as they possibly can. Anyone that’s interactive marketing touch points is what we’re looking for, but this particular process is limited to checking for one contact role. So that’s just something to keep in mind. So, uh, that brings us to the end of the, um, conversation today. Uh, I don’t know if we have time for questions. Are we done?

Speaker 1: I believe we do have just some time if there’s any questions. Um, got just a quick minute. Let’s take a look. I know there was a question here about getting a copy of the deck. Yes. We do have a copy of the recording of of the session as well as the deck, and we will make those available. Um, another question we had was, how many contact roles do you suggest having? Is one sufficient or depends on business?

Speaker 2: Do you want me to answer that one, Theresa?

Speaker 0: Sure, Max.

Speaker 2: Uh, so to Teresa’s point that she mentioned before, um, um, as many as possible is our best practice. Um, like Teresa said before, um, this only requires one, but it’s always safe to have as many as possible.

Speaker 1: Great. Thank you. Another question we have here is, what if the CRM team refuses to make the contact role a required field for sales? Is there any way to still create a flow to get the contact role added?

Speaker 0: That’s a great question. I I just I there may be solutions out there, um, I’m not familiar with, but I do know that it takes a team effort. So, uh, I do know that, you know, it’s usually the salespeople that are interacting with the customer and they would, they would know who those people are that are, you know, interacting with materials. So, um, I would I would imagine you need the buy in from the sales team to enter that. So but, yeah, there might be another solution out there. I don’t have the answer to that.

Speaker 1: K. Thank you. Next question. Do you recommend a flow that automatically adds everyone on the account as a contact role and have the reps update the role titles later?

Speaker 2: I think if that was possible, yes. But I’m not too sure if we can do that, um, as we’ve just discovered how to just require one contact role on our opportunity objects.

Speaker 1: Okay. Next question. Uh, using this process, does the user have to select a role? If they don’t, will the contact role still work for attribution?

Speaker 0: Yeah. As far as I know, they do not have to select a role. Um, as long as there’s a contact in place, then that would be what’s used in attribution. So

Speaker 1: Okay. Next question. Does it have to be the contact role ID or could the custom fields be the contact role name?

Speaker 0: Yeah. Really, I mean, this is a flexible process so you can customize it to, you know, what you would prefer. If you would prefer to have it translate different information, um, or even a checkbox would work for this, uh, for the purposes of this. So, yeah, it’s up to you. It’s flexible.

Speaker 1: Okay. Um, next question. Can you add contact roles to previously closed one ops?

Speaker 2: Can you add contact roles? Uh, that’s a good question. I’m actually not too sure about that answer. Um, what’s what’s the name here? Deborah Lee Merchant. I’ll have to get back to you, Deborah.

Speaker 0: We can. But, I mean, I I for I know from experience when I jump into an opportunity that’s been closed one, I can still edit edit the opportunity and enter a contact role. Um, so, yeah, I believe it’s still possible, but we’ll confirm that with you later.

Speaker 1: Perfect. Thank you. Next question. In the flow, the ID equals record is greater than opportunity ID is greater than what is after the opportunity ID? I think that’s probably a question. Yeah.

Speaker 0: That’s a really great question, and I, uh, I could jump back into it, and I wish I could show it. Let’s see here. So I think they were referring to, I don’t know if it was in the decision. It might’ve been down here. That’s a good question. Cause it doesn’t necessarily show up, but I think we’re referring to this right here. So, um, yeah, if I just clicked on it, it can show you that it’s record.opportunity.id. So it’s looking for again, the record and then the opportunity object and then the opportunity ID on that object. So if I click on it, you can see it here, hopefully. I know it’s kinda small, but that’s it there. Uh, and then same with this one, it’s record.id. It looks a little bit different when you click on it. And then let me just jump over to the decision as well. This one right here is record dot opportunity opportunity contact role ID. So I’m sorry. Record.opportunity.contact role ID. So that’s what you see there.

Speaker 1: Well, thank you, Max and Theresa. Really appreciate it. Amazing session, and thank you all for your great questions. Um, thank you for joining us. Uh, new sessions coming up next, and don’t forget to join us in the after party.

Speaker 0: Thanks, guys.

Speaker 2: Thank you, everyone.