Braze Innovation Series: 2-Way SMS

In this Braze Innovation Series session, the Stitch team dives into the realities of two-way SMS — what it’s good for, where teams get tripped up, and how to design conversations that feel helpful instead of intrusive. From early strategy and compliance considerations to experience design and real-world execution, we break down what it takes to build SMS programs that customers want to engage with.

You’ll learn how to:

  • Set a clear strategy for SMS, defining the role it should play in your lifecycle mix and the outcomes it’s meant to drive.
  • Navigate the legal and compliance nuances of SMS, including consent, keywords, and expectations that differ from other channels.
  • Design conversational experiences that feel natural and valuable, with the right balance of automation, timing, and human touch.
  • Bring two-way SMS to life in Braze using carefully designed Canvas flows, and learn how to use Agent Console to enhance the experience with more dynamic interactions in real-time.

In this on-demand session, we share stories from real solutions, our best practices, and lessons learned from building and testing SMS programs in production. If you’re looking to launch (or level up) SMS in Braze, this is a great place to start.

Transcript:

Tichy and I lead our solutions team at Stitch. And I’m also joined today by one of our delivery directors, Brett Billups. This is a continuation of our Braze Innovation series. Today we’re going to focus on two-way SMS.

So we’ve got five topics for today. First is there’s going to be a little bit of story time about some of my experiences with SMS. Then we’re going to talk through setting the strategy about how it’s important to make sure we understand why we’re using SMS and the key functions of it. We’ll talk through the legalities of SMS and how it can be much different than any other channel. Then we’ll talk through designing the experience and then key takeaways and inspiration as well.

So as we go through today, feel free to jump into the Q&A with any questions that you might have. Don’t feel like you have to wait until the end. As we’re going through, we’ll try to answer them in real time. If we don’t get to them as we’re going through, then we’ll catch them all at the end. But feel free to jump in at any time throughout the presentation.

So first, a little bit of story time. A couple of years ago, I was working with a client who had an amphitheater and had this really cool idea for SMS. They had stated that they wanted to start doing SMS messaging, and so much like we’ll talk about today, the first question that we asked them was, well, why do you want to do this?

And so they said, well, we have this amphitheater and we have a lot of concerts there, and we’d like to create a VIP experience for the concert goers. So this is a really cool idea where as you were coming into the amphitheater, you would text in VIP to their short code, and you would provide your email address, and a couple things would happen. One is you’d be subscribed to their emails. But two, you got entered into a drawing to be a VIP at that particular concert.

So 10 people would win after everybody walked in, they would text in to qualify, and then after about 10 minutes into the show, they would get notified of the 10 people that won, and they would get front row seats to the rest of the concert, and then they would also be able to meet the band after the concert.

So really, really cool type of use case and specific to them because they had an amphitheater. So I went about building this solution for them. And went through the process of creating the keywords, going through all the terms and conditions, carrier approval process, all the things you have to do as part of SMS.

And as part of that, the first launch we were going to have was going to be on a Saturday. There was a concert going on on that Saturday. On Friday, I had been doing some testing, and for any of you familiar with writing SQL, you’ll appreciate this. We had a test list and that initial audience just included myself and a couple of coworkers.

And so in my SQL query, I was writing Select Star to make sure that the subsequent messages of the winners of the VIP contest would get notified. And obviously, I wanted everyone to be notified — myself and my colleagues — so that way we could confirm that the messaging and the process actually worked.

So we go through testing. Everything is great. The next Saturday night, I am at Texas Roadhouse having dinner, and I’m just sitting there eating my peanuts and throwing them on the floor like everybody does at Texas Roadhouse. And I get a text message from the main contact at our client with an all caps. It just says, Mayday, mayday, mayday.

So obviously a horrible feeling. And as soon as I saw his text, I knew exactly what had happened. I forgot to change the Select Star, or the select all, from the audience to just the top 10. So what had happened was over 3,000 people had texted in to be part of the VIP experience, and every single person who texted in — over 3,000 people — got the “you won the VIP experience at this concert” message.

What ended up happening was almost everybody basically rallied against the workers at the amphitheater. They were all very upset. They thought they won this experience, and then everyone had to tell them they did not. As you can imagine, 3,000 people thinking they won something and then realizing that they didn’t was a very traumatic experience for a lot of people involved. The company that I worked for at the time ended up having to write a check to this client for the damages, and so everyone who went to that concert actually got a free concert ticket as basically damages or as retribution for it.

So the moral of the story is that while testing is very important, it’s important to go through multiple iterations of testing to make sure that you get things exactly right, whether it’s with SMS or anything else. But the two main takeaways from the story are, one, having a really good use case for SMS. And that’s what we’ll talk through today and what Brett will dive into as well. But then two is, as you’re rolling out this channel or any new channel, make sure you are testing it, but make sure other people are testing it with you as well, so that way, hopefully you don’t make over 3,000 people really angry at a concert.

So let’s dive into setting the strategy. Why is this so important, especially with SMS? This is especially important because people who start leveraging SMS don’t always realize the differences between email, push, in-app SMS, or even direct mail. And so it’s really important to think through why we want to use SMS.

So the first thing that we want to understand is what is the purpose of what we’re doing, and why are we going down the path of implementing this channel? And a lot of times we’ll hear things like, oh, we want to meet our customers where they are, or we just want to engage with folks on another channel to increase our engagement. But those are fine underlying benefits from SMS. It should not be the reason why we go into this channel. The main reason being is that SMS is a much more expensive channel than any other channel that we have.

SMS is very similar to WhatsApp in terms of the use cases that we should help drive. So the way we want to think about that is with SMS, we want to try to drive revenue as much as possible, and engagement as a second option in any kind of SMS campaign that we have. So for example, if you’re a retailer, using SMS as an abandoned cart feature is a great use case. If you are a financial services company, using SMS for things like multi-factor authentication makes a ton of sense. But also when anything might happen with your account. So for example, I have an American Express card. Anytime there’s any kind of odd activity that happens with my card, they send me a text message to let me know what’s going on. So you can see they need to be very high value types of use cases and strategies that we want to think through.

The other thing that we need to keep in mind as well is that there are a lot of things that we don’t want to do in SMS. Any kind of generic blast typically does not work very well, especially if there’s not a call to action as part of it. One of my favorite brands, Chomps, the meat stick company, they do a great job of sending SMS that always have some kind of promo or action tied to them.

On the flip side of that, I love frozen Cokes and Coke Icees, and there are three main places I get them from: McDonald’s, 7-Eleven, and Circle K. 7-Eleven does a tremendous job of sending SMS, and the main reason being is because everything’s tied to an action or a response. But then also at the beginning of their text messages, they put in there that they’re 7-Eleven. This sounds really simple and probably not something that would come to mind all that often, but if I get a text message from Circle K and it says, buy one frozen Coke and get one free, I don’t know who that’s coming from because I buy frozen Cokes from multiple places. So you can start to see where having the notifier at the beginning of who is sending this SMS message matters, especially since all of us are probably subscribed to multiple SMS campaigns from multiple companies as well.

The other thing to keep in mind — oh, go ahead. I was going to add in there, Bobby, like you’re really speaking to brand recognition. And that’s so important, especially in the age you’re in where you’re probably getting three scam texts for every regular text you’re getting as well. So making sure that you’re putting your brand front and center in that message early so they know who you are and who they’re interacting with truly builds trust.

Yeah, a hundred percent. And I like to use the acronym WAIT, which is “Why Am I Talking,” as the element to this, right? Especially with SMS. So why am I talking and who am I talking to? And letting them know who they’re talking to is very important as well.

There are three different types of messages when it comes to SMS, MMS and RCS. So all three of these are very different. And they function differently when interacting with different users. So the best way to think about SMS is it’s basically just plain text. So you could include URLs, but that’s really about it. There’s no imagery or anything like that, no engagement to it at all. It’s still very expensive to send these, but it’s the lowest of these three.

MMS provides the ability to do some kind of engaging artistry within it. So a video, a gif, that sort of thing can all be sent with an MMS. There’s no specific character limit like there is with SMS, but you need to be really diligent with how much you’re putting into these messages, so that way people don’t feel like they’re getting bombarded with a very long message. It needs to be quick and action-oriented in trying to get people to do what we’re expecting them to do.

Lastly is RCS. RCS is by far the newest. RCS is the technology that allows people who have iPhones and Androids to actually be able to see who’s read that message and when they’re typing. Previously, it was only iOS or Android specific, but RCS allows you to do that. RCS is also becoming very popular with businesses where the chats, on the business side, are becoming much more engaging. So the one that I know of really well that does this at a high level is Delta Airlines, for example, where you can log in through your chat, your text message, chat with them. You can also ask it specific questions. You’re still working with a bot, but it’s more of a brand experience than if you were just texting with an agent on their own. RCS is also by far the most expensive of these three, and also not everyone’s phones are completely capable of leveraging RCS at this point in time. So you just want to be careful and identify which message type you want to use based on the campaign that you’re sending.

And real quick, if I may — sorry. Oh yeah, I keep cutting in on you here, but real quick, if I may, also, if anybody’s been following along with the slides, you’ll notice that in the MMS we talk about designing fallbacks. We would need to do that in the RCS as well. And once I get through to talking about how we built the experience, I’ll give you guys an example of how that was done in Braze.

Perfect. So now let’s talk about two-way SMS. And this is really how we can almost basically have a conversation or understand more about our customers, or our subscribers, using SMS as a channel to do that. So first, we talked about this already, but we need to have really strong use cases for doing this. We really believe strongly that just about everything that we do should have a use case against it. What is the goal of us launching this specific campaign, launching this specific channel, and constantly iterating on that to make sure that we’re achieving those goals? And if we’re not, how do we pivot and try something different?

The key thing to keep in mind here is when we say two-way SMS, we are not talking about a chatbot. So this is not a replacement for a customer agent interface on a website, or what’s happening in what Delta Airlines is doing, for example. This is much more about having a way to further engage our customers and subscribers and being able to capture more information or for them to do a specific action.

So what we’re thinking here as far as the kind of data we want to capture is what is something that we would love to learn more about this type of person. So what is something that we could put on their profile as a custom attribute or a custom event? Or is it something like what Brett will talk to here in a little bit — a reordering situation? So for example, in healthcare and life sciences, when someone needs to reorder a prescription or reorder a medication, how can we do those types of activities through this two-way SMS as well?

So really quickly, before we get into the fun part of this, and I’ll turn it over to Brett, is really quickly going through the legalities of SMS. So it’s really important that you have basically all of your T’s and C’s completed within SMS before you start launching. For those who haven’t gone through this before, there is a carrier approval process that you have to go through before you can start sending any SMS. But in addition to that, you have to make sure that when people are opting into SMS, it’s very, very clear what they’re opting into and what they can expect. So for example, number of messages per month, there’s got to be an easy way to opt out, and then also there’s got to be an easy way for them to get help so they can understand what this program is all about.

The other thing to keep in mind is that there are some regulations to this called TCPA that only allow you to send SMS during certain times. And the other thing to keep in mind too is that in some situations, not only are countries different — like the US is different than Canada — but also some states have individual laws as well that you want to keep in mind.

The way I like to think about this is we had a leader at a previous company who, anytime we were getting ready for a conference, he would say, don’t be a dumb ass. That’s basically how I think about SMS, right? Don’t be a dumb ass, right? No one wants to get an SMS from Taco Bell at 9:30 at night. Well, maybe they do, that’s probably a bad example, but you get the point, right? We want to make sure that we’re honoring quiet hours and we’re doing it within a period of time that we think people actually would want to hear from us. And that’s why another important thing about doing any kind of testing and optimization or using send time optimization inside of Braze is a good idea.

The last thing here is make sure that in any kind of transactional messaging — so for example, anything that is an order confirmation or a shipping update, anything like that — that there is nothing promotional within them. That is a huge no-no and a big red flag. And there are a lot of fines that come through with that as well. So make sure if it is a promo message, you’re keeping it promotional. If it’s transactional, you’re keeping it transactional.

Brett, you want to dive into designing the experience?

Yeah, let’s get into designing the experience. So real quick, strap in with me. I’m going to give everybody a little bit of game here and I hope you guys enjoy it.

So the first thing we want to work through when designing this experience is we need to identify the issue. So, real quick story, as you know, we’re working with a healthcare company. This particular issue was identified by somebody outside of the business. So over drinks, the CEO of this company and a friend were talking and drinking, and this is going to sound like a convenience at its greatest, but this is how it came to me. So I’m giving it to you guys the same way. His friend happened to get a message for this particular campaign to order this product because he had lapsed in the timing since his last order. So at the table there with him, he started going through the process and he stopped and he was like, I’m not doing this. You guys need to simplify, right? And that was a signal to the CEO that, oh man, we probably have other patients that are feeling the same way about this, which kind of ignited and struck them coming to us and saying, hey, can you help out with this? And obviously we obliged.

So high level, this was a campaign for users who had lapsed in ordering this product. And for this healthcare client, if they could get these people to reorder and complete these orders as well and send them back to them, there were thousands of insurance dollars to be collected. So there was a lot of revenue at stake here as well, if they could close the gap or even pull a lever and increase the conversion on it.

So the first thing we had to think about is before hitting send, what is our strategy? That brings us to the next slide. And the first thing we want to do is discovery and alignment. And sometimes for any marketers out there, taking a step back and doing that discovery and alignment sometimes feels like it’s slowing things down, but it actually speeds things up once we get to the build phases. And it also saves a lot of time from an iteration standpoint because we’re not forgetting as many things since we’re calling them up front.

So specifically for this, and anytime you’re building out any type of a message like this, you want to first define who’s eligible. Who are we trying to send this to? Who’s going to be the most beneficial group or even have a high tendency to respond to this? In our case, it was easy, right? The audience wasn’t the problem. It was the method of how we were engaging the audience. So there was an existing audience for this campaign. We wanted to target that same lapse group. We were just going to change how we did that.

And that’s where we start to step into how we organize the flow around how we’re going to talk to them. One of the first things that we wanted to address was the “I’m not doing all this” — right, we wanted to cut out the fluff. So just for a little bit of edification for everybody, this particular campaign sends you a text message. You hit the link in the text message, it takes you to a site where you then have to click on a page to then get to the actual form where you start answering the questions to get you qualified to get this product shipped to you. Right? So one, we caught them on their devices in a text message, but we’re taking them into a web experience. And then within that web experience, we have them jumping to multiple pages.

So our first kind of instinct here was, don’t take them out of the text message. Let’s keep them inside of that text message and facilitate our questions within that message as well.

Now, understanding that this is — oh yeah, I was just going to say, Brett, I think this is something that’s so underrated, like basically reducing the friction of just getting to the order.

Yeah. Another brand that does this really well is Papa John’s. Like, every other pizza company in the world, I have to log in to order my pizza. Papa John’s just wants me to get the pizza. So it’s like the same process here of, let’s not make this complicated. Let’s just get them what they need as fast as possible.

Yeah, 100%, man. And then for this particular use case, the next kind of step was, hey, let’s evaluate what questions we’re asking. To Bobby’s point, let’s get them to that call to action, the thing we want them to do. So as we evaluated what questions we were asking in this form, we started to actually cut out questions that weren’t needed. I won’t go through that entire list for you guys, but for example, one of the questions was, has your address changed in the last three years? Right? But that was an unnecessary question. They actually had a data process that was in place that they had very high confidence in that would check people’s addresses, update them, or leave them the same if they hadn’t changed. So they had this process, and they had high confidence that more than likely they already had the correct address on file. So what are we asking them for their address for at that point, right? It’s an unnecessary step. It adds more friction. So that’s one of the things we decided to cut out.

So once again, organize the flow, make sure this is going to be concise, cut out the fluff, make sure you’re asking the right things and keeping the person engaged in the channel that we engaged them in.

So the next thing is build trust. And we talked a little bit about this at the beginning of Bobby’s portion of the session. So for us specifically, we wanted to make sure that they knew who this was coming from. And in this specific solution that we put together, we leveraged MMS, so the multimedia send, right? A multimedia message. And we did that because that enabled us to put this client’s very recognizable logo in the actual message. And it was part of the first message itself, right? We wanted to ensure that there was brand recognition and we were establishing trust upfront.

The next thing we wanted to do to continue to foster that trust is let them know how low hassle this process is. So for this particular use case, and if anyone has use cases like this, please use these things. But most insured patients pay $0 to order this product and to do the fulfillment process to get it analyzed, right? So we made sure that that was part of it, right? This may cost you nothing.

And then in addition to that, we also set time expectations, which was another thing called out by Bobby when we’re thinking about good SMS practice, right? We said, hey, do you have 30 seconds? Right? Don’t be vague here at all, right? Make sure that you’re able to time box that for the customer, for the patient, so they know they only need 30 seconds of their time. Now, once we get them engaged, we could probably spend 45 seconds with them, right? And by then they’re engaged and they won’t know the difference. I’m not saying that to say, hey, let’s not respect their time, but let’s time box it within a reasonable timeframe so there’s no ambiguity on like, how long is it going to take me to go through all this? Because nobody has time for anything nowadays, right?

So in our message, that first initial message to the patient, it was like, hey, you know, it’s been a while. Let’s help you get your next order. Most insured patients pay $0. Do you have 30 seconds to answer some questions? And once we got them engaged, it was all good from there. We can go through and get them to answer the rest of our questions, which if answered instantly, we were able to strike back. And I’ll show you guys when we get to the building portion how we were able to achieve that as well.

So the last part of this particular section here is curating the conversation and curating the copy. And these are once again some of those things that you saw in the best practice piece of this. Like, how do we keep our questions concise? This is text, this is a short form messaging channel. This is not email, right? We don’t need to send somebody a brick of a message that they’re not going to read or consume or might even look suspicious, right? So keep it concise. It’s a text message, it’s short form.

The other thing that we spent quite a bit of time on actually, to make sure that we got this part of the experience right, was making sure the experience was positive and it felt good. For this particular use case, this is a healthcare client, and we’re asking people questions about their health, right? So one of the things that we agreed upon is that we wanted to keep the patients’ responses in the affirmative, right? Meaning we wanted them to answer yes to our questions to progress through.

So for example, one of the sets of questions that were asked as you kind of paginated or trickled through this experience was about symptoms, right? I’m not going to get into the exact questions, but an example of an affirmative question is, please confirm the following is true. You have not experienced these conditions. You can answer yes to that, right? Yes, that’s true. I have not experienced those things. Versus the alternative, which would be, have you experienced these conditions, right? Where their answers would be in the negative and would be a no.

So this was, as we talked about strategy, as we talked about marketing, as we talked about the psyche of our patients and customers, we wanted to make sure that we had those answers in the affirmative. And these are all things that we really need to consider, and these are strategies we need to build as we’re figuring out how to put things like this together. It’s all done with intention, right? To get somebody to our call to action.

And then the next couple of things that we considered in curating this experience and conversation is, what are the rules around quiet hours? And based on where somebody is, when do we not want to send? We also wanted to know what to do if somebody responds to maybe one question but doesn’t respond to all the questions. What if somebody doesn’t respond at all? And I’ll talk about what we did to effect these things in the how we built this section here in a second.

And then the other kind of two things that we considered is what if somebody responds something other than yes or no, right? All we need are yes or no answers. We’re trying to keep them in a guided, curated experience. We’re not trying to get too many messages outside of this channel. Once again, we talked about there’s cost involved in it, and we want to be very conscious of that, right? So we want to make sure we have a plan for that and we’ll talk about that as well.

And then lastly, as I alluded to, I gave a little preview before, what if they can’t receive the MMS, right? The MMS was the big piece of our brand recognition and getting that out. And even though at this juncture most phones can get MMS, we were dealing with a slightly older demographic where we probably had more people than normal that had devices that weren’t able to receive MMS as well. So that’s something to consider — your demographic and how that could affect what you’re trying to accomplish.

So now we’ll get into how we built it and kind of talk through some of those things and how we solved some of these things that we talked about during that strategy and planning phase.

So first I’ll start off with the materials you need to actually put this thing together. And by materials I mean the different activities and pieces of Braze that we use to actually bring this to fruition. So the things that went into this is we leveraged user update steps. We leveraged action paths. We leveraged messages — obviously SMS, right? That’s what this is all about. But within that, message extras. We also leveraged Currents and we leveraged segment extensions. And I’ll get into how we used all of those.

So first to start off with the user update step, this was used to track patients when they entered this canvas and when they exited this canvas. So we use that data point to kind of pinpoint and be able to give the people inside of this canvas a curated catchall response. I was trying to think of the best thing to call that — a curated catchall response.

So if you think about general text messages, if you’re a marketer, you typically set up keywords. If somebody messages something that’s not a keyword, you typically have some default fallback message that’s like, hey, please contact customer service, or, you know, this is not a monitored message, whatever that might be, right? We didn’t want them to get that generic catchall message. We wanted to create a specific message that got them back on the rails of this particular flow to try to get them back to our call to action.

So once again, we are able to set an attribute for when they came into this canvas. So if they were to message something outside of the yes or no answers we were looking for, we can send them a response different from the response that everybody else outside the canvas would get, right? Leveraging filters and things of that nature to trigger the message that said, hey, please answer yes or no to the question, right? And it was really as simple as that to try to keep them on that track.

So that was the purpose of the user update step. How we leveraged the action paths — these were used to set a window of time to listen for patient activity. That’s one of the biggest reasons to use the action path, right? And then send them down different paths based on their responses.

We specifically in this use case had three paths. We had a happy path, which means you answered in the affirmative, you got to the next step, and eventually you’ve gone down this complete happy path, and you’ve gotten to the point where you’ve submitted an order, or you’ve qualified, where we submit the order for you and you received the product in a couple of business days.

The next one was an alternative path. This means you answered in the negative to the question, right? And that could have ended in a couple of different ways depending on what message you answered no to and at what point you answered no. Right? So you were either going to be sent to, hey, contact customer service, or if it was in the very first message and you were like, hey, I don’t have 30 seconds, you would’ve got a message like, hey, we have an online ordering portal. Please go online when you have a moment to make this order. Or maybe if you answered in the negative to our question about symptoms, there was even a response that would say, hey, you should reach out to your doctor. Something like that, right?

So that was the alternative path, and then there was a no action path. So if somebody took no action at all, we would wait a couple of days and then we would nudge them, and then we would continue to nudge them. And we did that at a certain cadence for a set amount of time throughout the canvas itself, right? So that’s how we leveraged our action paths to get people routed appropriately based on how they were interacting with our messages, or to try to get actual engagement out of them if they weren’t answering the messages at all.

Next thing to speak to are the messages themselves, right? The messages are what they sound like. That was our actual mode of communication — very thought out, concise messages that we put together. And then within our messages, we added variables through message extras. So we can track like where people were, or if somebody was in the last step, we create a message variable to show that hey, they’re ready and prepared for an order. So things of that nature. Pretty simple — messages are our mode of communication. Message extras are a way for us to add variables to messages that can flow into downstream engagement data like Currents.

So hopefully everybody’s familiar with Currents as well on the call, but we also used Currents. Currents is what we use to capture the engagement data. The way we had Currents set up with them is Currents actually flowed down into their instance of Databricks. So they had that data to use. They could put it into, they could transform that data, throw it into their CDP, and even in some cases, bring it back into Braze as attributes on profiles if we need it to.

And then the last thing we leveraged was segment extensions. So with segment extensions, you can query some of those backend tables very similar to the Currents tables and gather data from those. One of the pieces of data that lived on the SMS tables specifically was when people got rejected. So if people got rejected from our MMS because their phones couldn’t accept it, we leveraged those segment extensions to query tables to say, hey, give us all the people who got these error codes, right? And make an audience out of them. So we were able to take the reject codes from the backend tables leveraging segment extensions, and then we created a new group of individuals that we know were getting rejected from the original MMS message, and we rerouted them into an SMS only canvas in order for them to still get the experience and us not to miss out on any opportunities to maximize revenue for the client.

And that’s always going to be the number one thing. We’re always trying to find ways to maximize revenue, maximize success, maximize conversions. So that’s why we took that step, and that’s how we solved for some of those rejects that were happening because of our demographic and their devices’ tendency in some cases to not receive those MMS messages.

And that’s really how we put all that together. But this original concept of the two-way flow was all put together before we had Agent Console. So the next thing I want to get into is Agent Console, and then how we can take things to the next level with that.

So just a quick definition here. You guys can read this, but the really simple plain version of it is Agent Console allows us — allows us marketers, right? Individuals using the Braze platform — to insert AI agents directly into workflows, right? So the same agents you’re using every day — think ChatGPT, think Claude, think whatever it may be — those agents that you’re using, we’re taking that same logic but plugging it into a canvas. So we can use the power of these agents to help us facilitate some of these conversations and some of these flows.

So we’re going to go through, and I’m just going to talk about the use case. I’ll first talk again about the materials you should use, the equipment you need, or the activities you want to leverage when actually building out, when leveraging agents within a canvas. And then I want to talk about a use case. I’m going to just pivot a little bit from the healthcare industry and move into a QSR example of this. And then I’ll tell you guys what we did specifically with the healthcare client as well.

So going into Agent Console and how you can leverage this, and then how we did leverage it — first, the materials, right? So the first thing you’re going to be leveraging are the agents, right? Agents allow us to categorize responses. It can allow us to analyze and simplify data streams. It can help us determine sentiment. It can help us execute natural language responses in our brand voice.

And to speak to that, analyze and simplify data streams — one of the things that I always get whenever I’ve worked with clients and we were specifically working in an SMS realm or in a campaign, they’re like, how do I — can we get the messages that are sent from, you know, our users? Can we see that? Can we see what they’re saying? And the answer is typically, yes, we could pull that data, but what in the hell are you going to do with it? Like, that’s a lot of data, a lot of different language, a lot of misspellings. Nobody wants to go through all that.

But the way we could leverage an agent is, we can capture that data, feed that data into an agent and say, hey, categorize these messages, so we can start to get an overall sentiment of what these types of messages are or what kind of categories they may fall in. And then maybe we can create campaigns around that, because maybe there’s some revenue opportunity in some of those messages we’re seeing, right? Then we don’t have to pay a person or have a person sitting at a desk building their own AI agent to do this. We could just build it right in Braze.

So yeah, we can leverage agents for all those things. I know I stuck on that data stream piece for a second, but to recap — categorize responses, determine sentiment, natural language responses in your brand voice.

Another thing that we’re going to use for the setup of the conversation I’m about to have with you all are context steps. Context steps, context variables within a canvas — this allows us to enrich data, allows us to set our own variables, and it even allows us to parse through data to package it for use in a payload. So this is going to help us to refine our data set based on how we want to use it.

Next, decision splits. Decision splits allow us to take that data that came from the agent, from the context step, and then we can send people down different paths based on a qualifying activity. If in whatever we had the agent translate for us it qualified for the yes path, we can send somebody down that. If it didn’t, we can send them down a no path and give those two individuals two different experiences. If you have several outcomes possible, right? We don’t have to limit ourselves to a binary true or false or one or zero, right? But if you have several outcomes that are possible, we can leverage an audience path here instead, right? And then the last thing is we leverage messages. Once again, this was SMS. So we’re sending messages.

So now that you have this setup, I first want to extend this to the QSR, like I said, to change it up a little bit, because with our agents, we can take this messaging to the next level. So imagine that we’re a pizza company, and I just want to kind of set this up, right? Bobby talked about Papa John’s not too long ago, right? So imagine we’re still a pizza company, and we can send you a text to say it’s about time to eat, feeling hungry. We can help you with that, right? Simple message that we send out. And that’s the actual text message that goes to our end users. They can then give us a natural response. And then with the agent we built, we can have our agent categorize the response and their sentiment, right? Based on how we train it — like right, we have to train it, let it know what we want it to do.

But it can categorize those responses and that sentiment appropriately for us. So then we can take action. So let’s say we’ve built out this agent to, based on whatever they respond, put it into three buckets. They were happy and hungry, they were happy and not hungry, or they were angry and maybe hangry, right? So those are the three different buckets based on what the customer says back to us from our initial message that the agent will bucket the data into for us.

Then in this case, since we have three outcomes, that decision split probably won’t be the right tool to use. So we’re going to use the audience path, since we talked about that as an alternative, right? So if the person was happy and hungry, we can start to facilitate an order right then and there. We can use a context step to gather information from their profile and prep data. Maybe we’re trying to understand what their last order was, because we could say, hey, your last order was two pizzas and breadsticks. Do you want to reorder that? Or we could use that context step to figure out what their favorite item is or their favorite meal is. And we could present that to them as the next step, right? So we can continue to facilitate this ordering process. And we can even take this all the way to, once we understand what they want and they’ve answered in the affirmative, we can give them a link to finish it. We could prepare their order for them and give them a link to finish it. We could leverage webhooks that hit an order system’s endpoint and even complete the order for them and then give them a confirmation, right? It’s really like the agents open up a world of what we can do with a little bit of elbow grease and APIs. We can accomplish anything.

So the next thing is, the next scenario was they were happy, but they were not hungry. So we can, since we have that sentiment that our agent was able to decipher for us, now in this path, we can say, hey, if they fell into this happy but not hungry category, we can just hit them with a, hey, thank you, maybe next time, right? And wrap the conversation right there.

And then our third bucket was angry, maybe hangry. And for that particular one, we can have them go down a different path where our next message is, oh, this is clearly not the right time, but when it is, here’s five bucks off your next order, right? And we don’t have to give them any kind of promo there or anything like that. But once again, they might have had a bad experience or perceived bad experience, and that’s just an idea of how we can kind of glaze that over and maybe also push them to that next order, because now they have five bucks to use on our pizza. They don’t have five bucks to use on whatever else they were going to go get to eat, maybe later, right?

So that’s a way that we can actually leverage these agents, right? These are real scenarios that could be built in the tool today. Like this isn’t just imaginary stuff. These can actually be done with the tools available to us.

Now, specifically for our healthcare client, we used some of the same methods above. But for them, their use case was they were trying to turn unmonitored messages into helpful conversations. So a patient sends an unmonitored message. Like they send a keyword that we don’t have a campaign for, we’re not monitoring it, right? We don’t know what they’re trying to tell us because we don’t have anything triggered for that. So normally, like we talked before, you’d get some standard message — call customer service, or this isn’t monitored.

In this case, what we did instead was we had our agent determine what they were asking about, right? Are they asking us for results of a test, which we can’t share? Or if they’re asking for general timing for their order, which we can work with and give them some information around that, right? So let’s assume they ask about the order and not about the results, right? If it’s the results, we’ll send them down the path and say, oh, you need to contact customer service, or maybe you need to contact your doctor or whatever that may be.

But if they go down the path where they’re asking, hey, I’m just interested in where my order is, that’s something we can work with. And so we can leverage a context step to understand like, hey, when did they actually submit their order? Or whatever other piece of information we need. And then the agent itself was set up and understood all of our policies around timing of order delivery, windows by state, by order type, whether it was standard, whether it was expedited, so on and so forth.

So then we can respond and say something like, the agent said, hey, this is an order. We can work with it. We leverage context steps for extra data. Then we put the data back into the agent, and now the agent can build a response that actually sends out in our next message to the customer, and they say, hey, you can expect your package in about two business days or more.

And then that kind of closes things out. We’ve answered their question without having to engage a customer service rep, which also saves money. We didn’t leave them hanging with an experience that left them feeling like, oh, we don’t care, right? We were able to get them a simple answer to a simple question, and then we could follow that answer up, which was, hey, you can expect your package in about two or more business days. And then, if you have any additional questions, contact customer service. And that’s just closing that loop, right? Because this is something where we’re trying to create a better experience. We’re giving them an answer to their question, then we close the loop. So we’re not continued to build expense from having a back and forth conversation.

So next thing I want to — to interrupt you really quick, we’ve got a question from the group. Tyler asked, curious how you decide on that first text being a question or a problem solution call to action. For example, saying, are you hungry, versus it’s dinner time, order a pizza now, here’s the link. Wonder if you lose out on action if the call to action is first to engage in a yes/no conversation and people choose not to respond at all.

That’s a good one. Like, a lot of that’s going to be predicated around your brand voice. What are customers expecting from you? What are we doing in our strategy sessions, right? That particular QSR example that I gave was just more like, this is what can be done. So once again, that’s a strategy session. That’s talking it out, understanding your brand, what your customers expect, how you typically talk to them. If this is how you typically talk to them and they respond, great. If it’s not, there’s a different method. That’s part of studying the strategy stage that we talked about before, that’s so important. And these are things we’ll talk about to understand what’s the best way forward. And then we’ll leverage our industry knowledge and things of that nature to blend in with what your brand likes. And we’ll come to some agreement and alignment on what the best message should be there. But to your point, yeah, that message could be different to make sure we’re speaking to your audience the right way and we’re not losing them.

I also think this is a great feather in the cap of experimentation. Not every single person in your audience is going to react the same way. So maybe it’s a subset of 80% of our subscribers that get a, it’s dinnertime, order a pizza now, but 20% that we’re testing get a, hey, is a pepperoni pizza with red onion still your favorite? Mm-hmm. You know, something like that. So that way, I think, especially as we’re going into this era of leveraging agents and constantly trying to make sure that people have the best experience with us, being able to test and then optimize and learn from that will be really important.

100%. And now we know Bobby’s favorite pizza — pepperoni, red onions. You got it.

So next thing I wanted to chat about is just some general details about how we set up these agents, right? Once you have these features, everything I’m going to talk about is going to be functionality, the native functionality in the tool that you can have access to.

So one of the first important things we talked about — brand voice, brand recognition — is to set your brand guidelines. So within Braze, we can set our brand guidelines. You could set the voice of your brand, right? That’s another building block to establishing that trust, making sure it sounds like you, so we’re not sending some message that’s off-brand from what we would normally send. But in that process, you have the ability to detail your brand personality. You can set exclusions. Are there words that your brand would never use? You could put that in there and make sure that those aren’t words that the agents choose to leverage, right? And then you can also set your tone in this portion of the UI where it’s like, hey, do I want it to be casual? Do I want it to be urgent? Do I want it to be formal? Do I want it to be playful? Right? And there’s probably like eight more different options of tones that you can choose from within the tool itself.

Once we have our brand guidelines established and our brand voice established — what words to use and tone set — the next thing is to create the agent. As you’re creating the agent, things to think about is like choosing where we plan to use it. Are we going to use it in canvases? In the cases of what we’ve talked about today, yes, it’d be in a canvas. Or do you want to leverage it in a catalog to help automate the updating of catalogs and things of that nature?

Choose the AI model you want to leverage within the tool itself. There’s a default auto model you can use, but you can also bring your own models and integrate them through the technology partners UI within Braze itself. So if there’s an LLM that you’ve built already and you don’t want to use whatever’s available in there, you can actually bring your own and integrate your own LLM into this, which makes it even more flexible and even more useful for you and your brand, and could even save you time, right?

Once we have our model in there and we have our category chosen, we want to train the model — the instructions. Those are the things we talked about before. Train it on what you want it to do. Like, I want you to categorize if somebody’s happy versus hangry. Here’s some meta details on what could put somebody in one bucket versus the other bucket.

Make sure you insert the brand guidelines and the brand voice we just created in the steps above, right? You can insert that into your actual agent during this process as well. And then one of the last things you can do inside there is you can set the temperature — there’s an actual slider to set the temperature of your agent. And you can make it be more deterministic and more formal, or you can have it be more creative. But one piece of information to keep in mind is if in your brand voice you say the tone of our brand is very formal, but then you tell it to be creative when you set that temperature slider, it’s going to work within the constructs of that brand voice to keep it as close to your brand voice as possible. And it’s going to be as creative as possible within this formal box that you’ve already set for it. So you might not see a lot of variations if the temperature you set versus the tone you set are opposing to each other.

Alright, so we’ve talked about quite a lot. Let’s talk about some takeaways from this conversation. So on the next slide, one of the things that we’ve talked about is this being a premium channel and making sure that we are approaching this channel with intention, right? So make sure that we’re not delivering just any message — we’re delivering something that hopefully leads to meaningful moments with the client or a call to action that is profitable for us.

Once again, we talk about this whether it’s two-way or whether it’s agent driven. We want our experiences to be guided, right? We have a little bit more freedom with the agents, but it’s still curated. It’s still guided. We’re still going to close the loop at some point, right? This isn’t an indefinite string of messages that we want. I mean, I guess you could do that, right? But that’s not necessarily maybe the best way to use it or the best way to spend your dollar. So make sure that we’re designing a guided experience that gets somebody to our end goal. Whether that goal is, hey, we want to create an experience where our messages don’t kind of fall into a black hole and we can give somebody a positive experience if they’re asking us off-the-cuff questions, or if it’s, hey, I’m trying to get somebody to place an order — whether that’s a product from a health company or a pizza — we want to make sure we’re driving them towards some sort of action, whether that’s an experience or something that drives revenue.

Build trust. We’ve talked about this, I feel like, in droves. I feel like I’ve mentioned it a couple of times, right? Make sure they know who we are. Make sure we’re being concise and clear and not vague. Make sure that our brand voice is in there. Make sure we have things that are common like opt-outs and make opting out easy. Make sure if we’re going to time box, we time box things so people can see that we respect their time, and make sure we’re following legal requirements so our messages actually get to where we’re trying to have them go. So build the trust and make sure your brand’s in there.

And then another thing is capture data, right? We’ve talked a lot about getting somebody to an action, but we can also collect data. We can profile that individual and capture data points on them through this channel. And that’s whether we’re using something more static like planned out SMS messages or if we’re using something a little bit more flexible like an agent as well.

And lastly, I just want to get into some industry inspiration, some industry examples of where you guys can see this at work. The first one we’ll talk about here is retail. One of the last things I talked about on the last slide was capturing data points. So an example of progressive profiling where we’re sending a message and understanding like, hey, are you more casual and comfortable, or are you trying to be on the runway, right? And we can understand their style, capture that data, and that data gets written to a profile, right? And then the next question, like, what are the colors you like? Do you like brights? Do you like earth tones? Whatever it may be. Now we know what colors they like, and we write that to a profile and then we can use that for targeting. So when we’re actually trying to get them to some sort of call to action, we can specify and personalize it like we all want to do in our messaging.

QSR — the text to order, kind of similar to the example I gave you guys before, but we can leverage this to get somebody to an order, actually facilitate that order, and give them a confirmation.

And then I’ll let Bobby speak to a gaming example here.

Yeah, I think gaming is really interesting because especially for games that have multiple seasons, like Call of Duty for example, or even sports-related games, there’s a huge opportunity to continue the conversation in SMS. So one scenario that recently came through was Call of Duty: Black Ops 7, where they had this whole SMS campaign that was all around Morse code. So you had to decode the Morse code that was being sent. And as part of that, if you got it correct, then you got gameplay rewards inside of Call of Duty: Black Ops 7, all driven through Braze. So a couple of really good examples of how we can leverage SMS across the board and especially two-way SMS.

Another question we got, specifically for you, Brett. Hey Brett, Arjun here — really enjoyed our conversation last month and the strategy walkthrough. Quick question: for two-way SMS powered by multi-source events, what identity resolution approaches have you found most reliable, and how do you balance real-time personalization with low latency for high volume SMS, MMS, and RCS sends?

That’s a great question, and I’m not sure I captured all the essence of that there. But yeah, so for the first question, let’s kind of break this down because it’s a two-parter — what identity resolution approaches have you found most reliable in SMS?

So typically from an identity resolution standpoint, a lot of these messages and the examples that we talked about today are being sent to customers and users in the database that have been identified. This is not necessarily an anonymous SMS channel or SMS campaign. So the expectation would be that the identity resolution has already happened at some point upfront. We’re aware of who these individuals are. We’re aware that these numbers link to individual profiles and we’re sending those messages down to them. Bobby, I don’t know if you have any insight outside of that for that part of the question.

Yeah, I think the one area we’ve come across is that maybe someone is an SMS subscriber, but we don’t quite know that they relate to someone who’s also an email subscriber or a customer themselves, because maybe they walked into a store and saw a banner that said opt-in, something like that. So one thing we always really like is when you do opt-in for SMS, providing some kind of identifier like an email address, so that way we can put that onto your Braze profile and bring those two together versus having two separate profiles. The other exciting thing coming up is probabilistic identity resolution by Braze, so I think that will help to solve that as well.

The second question was how do you balance real-time personalization with low latency for high volume SMS, MMS, and RCS sends?

Yeah, so there have been times where we’ve actually had to create methods to essentially reduce the size of the people going through — I’m blanking on the exact word for this right now. But we’ve done this in several different ways. Obviously we can leverage frequency capping on the amount of messages that are coming through. And in the canvas itself, we’ve actually used feeder canvases as well, right? Because when you think about some of these things, there are also throughput considerations. Sometimes, especially if you’re using a long code versus a short code — which, believe it or not, still happens — we’ve used feeder campaigns to temper the amount of messages that are getting sent into the live canvases to ensure that we’re not hitting any of those thresholds or overstepping on any of those throughputs in order to keep the messages going smoothly.

And then through a lot of testing, we found out how to actually time the messages as well. There were cases where everything was cleared, we got the message through, we weren’t hitting any caps, but for some reason certain people’s phones were delayed in receiving messages and other people got them right away, right? So we have also leveraged time buffers within our actual canvases to allot a little bit more time. Typically through testing we find out what that correct time buffer is to make sure that even if there is latency in that message sending — because those messages have to route through carriers and things of that nature — we can prepare for those situations and be ready for them.

Also, a great callout by Vinca, who’s a technical producer here at Stitch. She mentioned that Braze introduced dynamic messaging using Liquid back in January, which makes things simple and fast to get your SMS messages up and running. So you can assign a customized response to an inbound keyword, so it’s more personalized and it feels much less like a broadcast. So that’s a really great callout. Thank you, Vinca.

Well, thank you all very much for joining. We really appreciate it. Hope this was helpful. And stay tuned for our next Innovation Series webinar coming up in a couple of weeks. Thanks everybody.

You might also like …