Tips and Tricks to Unlock the Full Power of Adobe Journey Optimizer

[Music] [Chris Stolz] S522. So this is AJO Tips and Tricks. We are Chris and Ivan. We'll introduce ourselves in just a second. I want to do a quick-- Really quick show of hands. Who saw this session last year? One guy at the back. - [Ivan Mironchuk] All right. - Perfect. - The one guy at the back-- - You're repeating the whole thing. You may remember this moment from last year. This was Russ and I.

Unfortunately, I do have some bad news. If you're wearing a hat please remove your hats.

We are remembering Russ Lewis.

Yeah. He's fine but his best T-shirt got destroyed by the T-Rex in the accident. He's at Summit somewhere so don't worry about it. All right. - But now-- - Welcome aboard. That music will stop in a second.

That was a past. We're about to head to the future so buckle up. Today's presentation is going to be quick. We've got a lot to cover. We're going to do a ton of tips and tricks. Have a seat. Come on in. Ton of tips and tricks. We'll save time at the end for questions if we can but I figured you'd rather learn more stuff you can do on Monday than learn two things and ask questions for an hour. Anybody, you in agreement with me? - All right. All right. - We'll just pack the [CURSING]. Awesome. So let's start talking about who's in front of you. So my name is Chris Stolz. I'm the Enterprise Architect on the Consulting side. I'm the guy on the left side. Maybe you haven't figured that out already. I'm on the Consulting side. I help customers stand up Experience Platform, AJO, CJA all of the app services. I'm from Niagara Falls, Canada. I've got my moose socks on today. And this is my friend Ivan over here. Hi. Ivan Mironchuk. I'm a Product Manager on Journey Optimizer. Been with that product since its early inception there and I'm based out in New York. And again, if we don't have time for questions we'll be around. I'll be at the booth after this so we can always meet up there. Yeah. And as you probably learned already we're here to take this presentation incredibly seriously all of the way through. So we're going to start by talking a little bit about Journey Optimizer for anybody who's not super familiar with how it fits into our world. And so I'm going to cover five quick pillars. We're going to rip through this real fast. So the first thing I want you to notice is actually what's written at the bottom of the slide. AJO is built natively on top of platform. What that means is that all of the capabilities of Experience Platform are available to Journey Optimizer. That means all of the measurement with CJA that means all of your audiences all your profile attributes all of that good stuff. Meaning unified customer profile, of course, that's what we activate through most of the time. We may show you a couple of tips that break that rule a little bit today. We can deliver at scale through channels upon channels. And for channels that aren't native then we get into things like custom actions, where we can fire that API out to some other system that you might have to fire messages out to different things. We'll talk about that today as well. Content design. You're all familiar, many of you are familiar with AEM and the gorgeous content you can build there.

In some cases even better in AJO. Kicks [CURSING]. Real-Time Journey Orchestration. So this is where we get into the Journey Canvas. This is where we get into making splits, decisions, weights all of that good stuff in the journey. We're going to talk about using that to our advantage pretty soon. And then finally, of course, we get into the intelligence stuff where we can identify things like next-best-action, next-best-offer, etcetera. So let's get right into it with number one. All right, Chris.

As you know or may or may not be aware of there is a limit to the number of streaming segments you can have inside of AJO and inside of Experience Platform. So help me figure out a way to keep my streaming segments lean and mean. So this is great. So often times we've got Journey Optimizer we've got journeys, we've got offers, we've got all of these things running. And we're trying to power as much as we can using streaming audiences. We see this across customers a lot. But this is almost a reminder more than a individual feature. Your Journey canvas has the ability to look at things like audiences, look at any attribute, look at events, look at all of the stuff on the profile that's available to you. So use it within the context of the journey. We don't have to build streaming segments for everything that's going to happen along the way because the canvas has a lot of that decisioning just built right into it. For everyone taking pictures you're welcome to. I'll also tell you the deck is available after the session-- - Yeah. - If that saves you any work. There will be a QR code for something at the end that you might want your phone for. All right. Let's rock. Ivan, I want to make sure I can move profiles along a journey if they time out. We've got the situation where someone's moving along a journey it makes a call, it makes a check something times out and they're dead. - Fix it. - All right. So what we can do is you have the ability on any action, any condition, any event to set a timeout path, timeout or error path. In many cases you may want to drop those profiles from the journey you may want to create an alternative branch but in some cases you want to actually just continue them along the path, right? So it's not super intuitive that you can do this or not, but you can click that box there add timeout path and then drag your subsequent action over top of it so that if any errors or timeouts occur that user will just continue along the way.

All right, Chris.

You talked about streaming segments, events, audiences but what happens if I enter a customer into a journey with an event and I want to use maybe a second event or something like that to keep them going along the path. This is good one. This is another one we use segments for a lot, right? We'll build a segment or a streaming audience for anybody who has placed that other purchase. But what I want to do in the context of the journey is I want to keep the original cart ID and then see if they placed that purchase as opposed to a different one. So what I can do in cases like this is I can actually look for a second event. And so we often think of events as something that kicks off a journey but I can actually use it halfway through if I want. I can use a bunch, right? And so I can listen for additional events so I can get along the way and say if they place a second purchase they go this way and if they don't they go that way. And then I can orchestrate those journeys using an additional event. Or an audience qualification. Or an audience qualification. If I want to stick them in to an audience qualification in the middle. Yep. Yep.

All right. We're rocking through. I don't know what number but we're kicking [CURSING]. Here's the deal. I've got people that I want to pull out of a journey. So we've already talked about conditions, right? Along a journey I can have a condition that says, "Blue eyes goes this way, brown eyes goes this way, and green eyes they're going to time out or exit the journey." But what if I want to do this at a more global level? I need an easy button to say, "Get the heck out." Yep. So as Chris mentioned we had, we were looking at you can have events or audience qualifications midway through your journey and that's a great way to check and see how do I pull somebody out if they've now redem-- Did a ticket redemption or something of that sort. But there are cases where you may have long running journeys that span over the course of multiple days and things like that, and you may say, "I don't care where they are in that journey just if this particular event happens or this attribute is true, pull them out." And so this global exit criteria that you have on the right rail of the journey there allows you to specify an audience, an event, or an attribute to say if this is true, exit hatch pull them all of the way out.

All right. But Chris sometimes I have customers that appear in multiple journeys. How do I determine what's the most important one? How do I prioritize something? Hands up if you've been waiting for some conflict management tools in AJO. I like those hands.

So I can set conflict rules. And so I can set up a capping rule. So I've got one here set up for luma journey capping. I can set priority so I can look across my campaigns and across my journey and I can decide which ones are more important to me so I make sure my customers get in the right ones. Real simple but packs a ton of power. I think a lot of us in early days of AEP, we were using update profile nodes and using all kinds of different things to try to cheat this and calculate it on our own. Now AJO just does it real easy. Two buttons and we're done. Yep and you set the priority. Let's go back to that one. You set the priority so if it's like number one that's going to be the most important. And so this works really well if you have multiple campaigns, multiple journeys all running across the same audiences. We can highlight the ones to the same audience. Highlight with my cool space age clicker? You got it. It's right there. Yep.

All right. I love this one so much, you guys.

I use AJO for everything including things product doesn't like that I'm probably not supposed to use it for. And I use custom actions like crazy, right? Custom action meaning, I want to fire a call off to some other system. Maybe I've got an external push vendor, maybe I want to send a message through some a messaging system, etcetera. But you typically would have to build a journey and go run test mode and test that in the journey and I don't enjoy it, Ivan. Yeah. - So we heard you, Chris. - Thank you. And as of, I think maybe two weeks ago we came out with a new feature to allow you to test that custom action inside the configuration, right? So it's a huge pain in the [CURSING] before where you have that custom payload that you want to try out in the custom action you throw it in a journey, doesn't work right, doesn't give you the right response, and then you go, "Okay, let me go reiterate over that custom action." And it says, "Hey, guess what? You can't modify this because it's used in a journey." Right? And so to avoid that we can go in to define the custom action, test out the different parameters, see the response, and then make sure that before we put it into a journey or give it to anyone to use it's going to work properly.

Give it to them. Whoo! It's the little things. Yeah. Give the product applause. Look at that beautiful image of Chris. - So-- - It's real. It's real by the way. That's real. Speaking of custom actions, "When I test messaging, I want my entire team to see the result versus sending a push to a phone." If you want to ask what my favorite tip and trick is in the session today it might be this one. It's so simple. It's ridiculous but oftentimes I'm on a call we're doing, "Okay, did you get the push?" And I'm holding my phone up to the camera in the meeting or telling people, "I want a way to test together as a group." So this is a little hack I came up with a long time ago. We did this last year too. If we do this next year, I'm going to do this again because it's my favorite.

So internally at Adobe we use Slack. You may be using, we use Teams as well and other things. So set up a channel with-- And you go grab that webhook and we go set up a custom action that's called Stolz Slack that goes to a Slack channel and I can invite anybody I want. Now what I can do is I can go test all my journeys and all of those messages are actually getting posted into the chat. So in this case I'm just playing around with I'm showing time stamps and customer IDs and stuff just to make sure I'm getting what I want and who I'm looking for. But instead of just sending it to my phone only which I can do I can test as a team. Little pro-tip, if you do want to test push outside of your mobile app this one isn't on the slide. I'm going to give it to you anyway. Android and iOS both have apps. The Android one I use is called Push Tester where it just gives you an endpoint and you could just go set it up and just get random push messages on a super light app. It's really easy. That's a great little resource too, but I love this. It's a great way to troubleshoot, right? Yeah.

All right, so let's go back to that cart abandonment use case just for a minute. So I don't want to just say oops you forgot something. And if anyone saw my YouTube video on this subject you'll know it drives me nuts. When you just tell someone they forgot something it's a little bit condescending. Let's give them a reason to come back to checkout and sometimes that reason is products. But I don't want to put that stuff on profile, right? I want to do this on an external list or something. - Ivan, what do you got for me? - All right. Profile richness is a problem, right? You end up trying to work around different things by shoving it all into the profile and then it gets bloated with things that actually have nothing to do with that individual. So we have new capabilities that are currently in beta available to anybody to use and what it allows you to do is define a record-based dataset and you can or don't have to enable that dataset for profile. And what that allows you to do is put in things like product SKU information, product catalog information, subscription products, whatever. You can have reservations, booking information things like that. You could have-- We have one customer who may or may not be in this room that's using it for branding values, right? Match this brand, pull in things like specialized logos, links, colors, and other content that way. And so it's really easy. You enable that dataset for lookup and then when you go into your message personalization you call that dataset and you determine what fields of data do I want to bring into that message for personalization? And the way that you perform that lookup you can either provide a static value, right? So if exactly I want to pull this product or this subscription product or something of that sort, I can say, "Pull the value as an array from a profile." So if the user has like save for later products, you could pull that array. Or I can bring it in from contextual event data. So that's super powerful because then I can say the user abandoned the cart has an array of SKUs on there. I don't want to have all of that product information anywhere else. I just have it in this catalog, return all of the values for it.

We're sorry.

Wrong meeting. - Wrong one. - Wrong one. I don't even know an AJO.

Okay.

All right. Chris, I want to test variations of personalization but don't seem to have a set of test profiles to cover all use cases. How many people have had this problem, right? It's like, yeah, I know we have an issue with test profiles. I know. We're trying hard to fix that. And it can be very difficult to try and proof and see every variation that you have. You have conditions, you have dynamic content running in your email and you're like, "I don't know how to see all of the different use cases that could happen." So we do have a really good solution for that. - Yeah. - You guys want a tool for that? And show. Now? Okay. You guys want a tool for that? [Woman] Yeah. [Man] Yeah. I'm just going to try to wake you guys up. I'm just going to make you yell stuff. So custom values test proofing. So I can do this and I'm going to show you a demo so it's going to play an animation in a second on the next slide. But I can go and I can manually go set all of the values that I want or I can do it in a CSV file. Thank you, product. And I can go upload the values and test all of the stuff that I want. That guy over there is happy. So if you take a look I'm going to stand up here so I can see it. So inside of our email we've got all of our personalization that we've set up, right? We've got the name and the address and all of that stuff set up in our Luma demo account email. So what's going to happen is we're going to go up to simulate content and we have simulate with CSV.

It's going to take a second to load because we recorded this on hotel Wi-Fi which is super-fast. I don't know if you all have noticed. There we go. So you can download a sample, right? So it'll give you that sample file. Now what I can do is click in here and I can sit here and I can go play around and I can go build them in a form, right? But that's not quite as fun. So what we're going to do is we're going to download the CSV template and we're going to go save it.

There it is. And now we'll upload that thing. Actually, it's going to open it first. We'll give you a look at that. So it's pretty simple, right? I can just add rows for each of my customer personas that I want to test and all my different combinations for personalization.

We're giving you this one in real-time because I want you to be able to go back and look at it and watch it. So Upload Input data. So we'll go select our CSV file.

We'll throw it in.

There's MOCK_DATA. There we go. Watch the magic. So now I've got all of the variants essentially every row in that spreadsheet. Down the left-hand side I can click-through and as I click through I can now preview my email with all of my different variants of personalization do it out of an Excel sheet in the UI and it's gorgeous. Yeah. Whoo!

- Practical use cases, right? - That's right. All right. Let's stick with the CSV file theme. So I want to do cut lists, right? I want to be in a cut list world for certain things. There are things where I want to build audiences and send emails because that audience is useful. I can build it once and send it to all my channels that need it. But there are times when I just need to be able to use a CSV list to do this thing out-- That's right. That's right.

Okay. This one's a little weird so stay with me here. There's some steps you have to follow. So the first thing you're going to end up doing is you're going to create a new channel configuration that uses a special identity map for the execution field and then we're going to import our CSV audience and it doesn't-- I'm going to actually walk through this here.

In this recording I wanted to make sure that you all know it is documented. We have it in on Experience League. It's documented. You go to the Audience activation, Custom upload section and you'll see a spot there that calls out that you can use the identity map coming from the spreadsheet as your execution because we're not actually creating fully fledged profiles at this point.

So what I'm doing now is I'm going into the channel config I'm creating a special one for my email cut list and then all the way at the bottom instead of using personalEmail.address I'm going to change it to identityMap, right? And so it's saying don't look to the profile for this look to the CSV. And I got a little error there because I had a comma so you can see it's actually checking to make sure I have it right. We keep the mistakes in. Yeah. We keep the mistakes in. We're real. So you hit Submit that processes through, takes a little bit of time. It's not like a three-day thing it's like a few minutes. And then I'm going to go over to audiences and I'm going to hit Import audience and I have my spreadsheet of profiles. And these can be profiles that exist in the system in which case it would map any values from that CSV into that profile to merge up that data. Or they could be brand new non-existing profiles. And when I come in here it's going to ask me, "What is the primary identity field in that spreadsheet that you want to use to activate on?" This could be phone number, email, ECID something like that. But it's important for me to specify that the email address I have in my CSV is going to map to the identity name space of email. And once I've do that, I hit Next. Let that finish processing. The CSV import audience is not a 24-hour materialization, right? This is going to just take a little bit of time to process all the way through. It's going to be 30 minutes something like that. You'll get the little processing light there and then after a few minutes that'll change to success. I think I fast forwarded the video so that we weren't waiting for that. And you'll see that it'll say existing profile fragments and it's called a fragment because it's not a fully fledged profile. So then once that's done I go back to my campaign, and inside of my campaign-- Let's go back to Journey Optimizer.

Yep. I'll go create a new campaign and when I select my-- Yeah, I got to give it a name here. Should've just left it time stamped.

My Welcome Campaign sure. I'm going to add the email action and I want to make sure I choose the right config. Because if I don't it's going to use that that profile address and it's not going to find any profiles. So I'm choosing the cut list config. I'm going to select my audience which is the audience I uploaded, and I'm going to choose the name space as email, and then I'm basically off to the races. And what I can do is I can, the audience that I've imported any other columns of data in there I can use as personalization fields, right? So if I have like a referral code, maybe it was a sweepstakes list that I got, maybe I have different promo codes in there or like sales agent that was part of it. Something like that. So I have all of those different values available in audience enrichment and this demo goes on a little bit longer and shows how I activated and sends all of the emails, but for time's sake I think we could just skip through. - So go ahead and hit Next. - Ciao. We're going to make Ivan keep talking for a minute. Yes. So Ivan I want to do geo stuff. I've got physical locations. I want to send people messages when they get close to my stores.

Yes. Okay. So a lot of people come to our team and they ask, "Can you do geofence-based push? Can you do location-based engagement for push?" And I say, "Yes, we can do that." It's not hard.

But as important if not more important is to develop a strategy to do location-based in-app messaging. And the reason for that is most consumers of your brand's app are going to give location permission for while in use, right? So that means any push notifications that I send means that the user has their app open and that push is either going to be suppressed into the background or is going to appear over top of my app as a little banner, right? So what I want to do is I want to think about pivoting towards or using in addition to an in-app message strategy based upon location. How many here are aware that we have a location service called Places that is available to all of you at no extra charge? Not many people are. It's brand new information. Okay, so we do. We have a location service. I'm going to walk through it now. So you see here I have Places Service for POI management up on the map. I can define as many POIs as I want. They can exist in different libraries. So I can have libraries of my retail stores, library of my offices, libraries of potential competitors, things like that. I can have them all in different libraries and each POI that I have I can have the location data about it address, lat long, etcetera. But I can also throw key value pairs of metadata attached to each POI. This was really helpful back in the COVID days when we were using-- We were working with different pharmacies that wanted to say, "Do they have COVID tests? Do they have the vaccines?" Things like that. So I can have all of those different metadata values, and then when I come into AJO and I go to create an in-app message I can use all of that information as triggers. We build it all in. There's no integration work needed. It just comes over here and it says, "I want to use enter POI as my trigger." And then I can have any of the metadata values there as additional conditions. So in this case I want to create a in-app message for all of my locations where they're offering an onsite class, right? I can have another set of ones that are like this one has an active promo or not. And then I'm going to go publish that campaign and review to activate. So I'm showing the summary here. That's the in-app message that I want to appear when I hit the Geofence. And then for all of you that haven't used this tool before we have this other tool called Assurance which is great for web event debugging, mobile event debugging, tracking analytics, things like that. I scan my phone, hit the QR code, I'm inside of Assurance, and then within Assurance, I have down at the bottom a whole set of features that help you test your location-based engagement. So I come down to the bottom I have map and simulate and you can see I can move around my app and I have my iPhone up on the right side here and I'm going to simulate an entry event. There goes the in-app message. So it's showing that it worked. And then you'll see on the right-hand side here if I look in the Assurance log it's saying you process an entry event for that particular location, right? And I can do an exit event. I can zoom over to the POI that I have over in Hoboken. Do the same thing, simulate the load of the POIs, try an entry event. So I see the same thing, get 10% off your first purchase. And this was all using different metadata keys. And then I can go over to the Brooklyn store and say, "Does this one have anything?" And I can test the entry event there and that one has the class associated with it. So what this is showing is that I have a really tight connection with place of service and AJO that it becomes super easy to create in-app based engagement with geofencing.

All right. That's nice. But you're the location guy so let's amp it up. So I don't know who's in the room, but I do know a little bit about which logos we've got. I know we've got some sporting. I know we've got some airlines airports things like that. So I want you to imagine for a minute I'm in a world with physical locations where I'm in there for a while, right? If I'm watching a game, if I'm in the airport I'm in there for at least a couple hours. And so it sure be nice if I know you're in that geofence to not only just send you messages but literally change the experience itself. Yeah. That's great. So if you think about it we can get those location signals and we can not only use them in campaigns to trigger in-app messages, but we can use them as events in the journeys. Super easy. We stream all of the events up to platform automatically and so what I can do here is I can say I'm going to use the PlacesEntry event to kick off the journey pop-up an in-app message, and then inside that in-app message I can promote, "Hey, we have an in-store mode." Right? Maybe it's like I want to surface the shopper's club card. Maybe I want to offer a retail specific map of that particular location. Maybe I want to completely change the entire experience of the app to become like an in-store scanner or something like that. So there's so many different things you can think about saying, "I want to personalize and change the app experience based upon the location context." And so in this case I'm using the in-app message to then drive users into a code-based experience. The code-based experience channel for those that you haven't used it before allows you to pipe JSON or HTML into any endpoint that you have inside of your mobile app or your website, right? And so I can pipe that over and say this is the location context. I'm in this POI, I'm in this store, and then use the code there to then change the app experience itself.

All right. Chris, what about SMS? Before I do because we're making him talk so much give my pal Ivan a round of applause. We're making him work for it today.

It's like let's just get the product guy to do all of the talking.

All right. Let's shorten some links. So you may not know you could do this. You can do this. I think there's an animation that'll make it go. - Nope. - Nope. - Went too far. - Animation now. This isn't the one with the cool animation that I was thinking of. It's okay. So I can automatically shorten mobile links. Now one of the things that you need to know is you need to have the subdomain set up. That's one of the pre-reqs. So a lot of people don't see this because they don't have that properly set up in your channel config. And so you want to set that subdomain up in your channel config. And once you've done that then you have the ability to do your URL shortening, right? And so now I can go in and I can personalize my message with that URL helper function and it'll shorten that thing for me and keep all my tracking and all of that good stuff in there. Real quick real easy. But the key is to make sure you have the background steps set up first which I think is why a lot of folks miss it.

All right. This is a big one.

I want to send messages to my customers that don't just come from a random phone number that nobody has ever heard of. I want it to look slick. I want it branded. I want it super cool. This is new and cool. Hit us. All right. Okay. How many in here have heard of RCS or understand what RCS is? Awesome. That's a good it's a pretty good show. Okay, so for those of you who don't know or want to learn more about it, RCS is Rich Communication Services. Think of it as the next generation of SMS, right? So no friction with downloading apps or anything like that. You have the user's phone number on a profile and you can set up agents through your SMS provider to then configure it so that it comes across as a branded, trusted, verified message, right? And so in the very basic sense you're going from what we're seeing on the left as a little basic text message to something like this on the right where you can have multimedia in there, you can have action links, call to actions, link previews, things like that. I would much rather trust and see a message like this on my phone than one on the left. So how do we do this? Okay.

Little animation here. There's a couple different things we can do. Number one today, meaning you could go do this today...

If you are a Sinch customer this is super easy to set up. Infobip, Twilio, and other providers we have some support coming for that at a later date, but what we can do is we can set up that RCS agent and then we can auto up-scale the message to that RCS channel if the user's handset is compatible. So there's some little dependencies in there meaning that the user has to have an Android device or an iOS device that's 18.1 or later on the OS side and they have to be on a carrier that supports RCS. Now out in EMEA they're much further along. The US we have a couple different carriers that are coming up to speed, but by the end of the year or within the next couple months all of them will be on board, right? So you can start doing this immediately.

You'll see in this little journey example here what we're doing is we're doing a little check out to the SMS provider and we're saying, "Is this user have a handset that's compatible with RCS?" Yes or no? If yes, send them the good stuff. If no, send them the old basic message, right? So we have the auto up-scale or we have the ability to branch them in that journey.

And then we're going to go further with this, right? So that's that first step that auto up-scale. You'll see that we also have, later this year, the ability to do rich messaging, right? So getting those links in, those carousels, add to wallet type stuff all of that would be available through our what we call our BYOP or Bring Your Own Provider SMS configuration and what that-- It's a little technical, but what it means is that you have to go into the SMS vendor and get the sample JSON block of that multimedia message that you want, and then you're going to shove that into the channel config so that when you go to author against that channel it knows what fields to expect. So it's a little technical but it can 100% be done starting later this year. And then eventually we're going to go further out and we're going to create a really nice native experience and make it super easy to start working with these different channels.

Chris, I want to send messages to individuals from a personalized contact such as a sales rep. This is a little data model cheat that I like to do. I think we actually did it with you sir first.

And we have this situation where we got this could be B2B, this could be B2C, in a lot of cases where there is a sales rep, right? When you get into sporting you get into season ticket holders. So there's somebody that's normally communicating with them as opposed to just general brand communications. And so I like to stick it on the profile. I like to put the name of the sales rep, the contact information, and pop that into an object in the profile so that I can use it. And so we can set up header parameters for all of the reply to and all of the usual stuff that you would expect from an email. So now at scale in AJO I can go we've got a sales rep, yes or no? If the answer is no, great. It's from Luma. If the answer is yes, well now it's from Greg at Luma. - Yeah. - Right? By the way, Ivan, we're doing great on time.

Good. I could have waxed poetic about place to look. You could have gone on and on for days and days. All right, talk to us about headless. All right.

So who here has used headless campaigns before? Awesome. - New territory. - There's one. There's one. Great. Excellent. Okay, so inside of AJO I can do marketing or transactional headless notifications both either to an audience or to an individual. And this can be in any of the outbound channels. So push, SMS, email all are supported. And so what I'm going to do and I'm going to walk through an example in a minute is I can go create that campaign and what's interesting about this is when I go to craft the message, I can choose how much of that content I want to be dynamic, right? I could say, "This push is just a complete shell and I want to push all of the content in from the payload, from the API payload." Right? So that would give me a super versatile SMS channel or a push endpoint or an email I could make as much of that content as I want personalized. So I'm just hitting it with context.title context.body. And after I publish that campaign, it gives me a sample cURL command. And if I'm familiar with Postman, I'm just going to bring Postman up here on the left and you'll see I'm just going to type in whatever this is simulating me connecting up with one of my external systems that's ultimately going to be delivering the push or the SMS or the email. Think about high throughput transactions. Think about I want to put game scores in. I want to do whatever I want to do I can use this to instantly trigger those. So it's like a hot trigger. The API is always on, it's always published, and I can map in profile attributes, audience attributes, things like that, or just make it completely dynamic through the payload.

And I guess now I'm just showing that it's not completely baked so it's not cooked here. - So I'm-- - It's like watching a guy type over here.

There we go. Hit Send. Next one comes up. So we have a lot-- We do have a number of customers that are like I want to use this for one-time pin passcodes. I want to use this to show order status updates. All those things are possible through this mechanism here.

All right, Chris.

We are fine. Yeah, we're coming to the end, my friends.

We'll have time for Q&A, I guess. We'll see. Who does happy birthday campaigns? Couple of you? Just Steve. Okay.

Well, there's a clever way to do this and I'm going to use that as my use case, but there's a lot of different potential use cases for this. So...

We often refer to this as dynamic segmentation, okay? I don't know what day your birthday is. It's on the profile. But I don't want to build an audience for-- I don't want to build 365 audiences going-- - Yeah. - "Is your birthday February 1st? Is your birthday February 2nd?" What I want to do is I want to use a very simple function that says equals today. So if you look on the right-hand side, I've got attributes that I'm including birthday equals and I've simply set it to today and I'm just going to ignore the year. And now every single day I've got a campaign that I've built that's going to wake up every single morning. It's going to pull in that audience and that audience is only going to be everybody whose birthday equals whatever today's date is. Obviously, at midnight it's going to change. And whenever that audience runs based on whenever my batch audiences are running unless you're doing it in real-time, I can send that happy birthday message. And I have some other things to think about with this, right? So we've all seen-- We've got like a number of journeys that you can have live, right? There's a limit there. There's a counter, right? And so what we often find is that people are like I maxed out the number of live journeys I can have. And then I go back to them and say have you thought about using campaigns for some of these things? Because I can set up recurring campaigns to check that audience on a daily schedule and if the criteria is met send it to those profiles, right? So in that case I don't have to take up a journey for that happy birthday message, right? If I have something that's your cruise departs in five days and every day I want to send out an email to those users reminding of their upcoming crews but I don't want to have a journey for that. I just want to create an audience that's checking the event to say, "Is the event within the next five days?" Yes. You qualify for that audience. Now put them in that recurring campaign that I'm sending every morning at 9am. So there's a lot of really great use cases of thinking about using recurring campaigns and mapping it to a dynamic audience. And if nobody qualifies on that day, that's okay. Nobody gets the message and it just waits till the next day to do the same check. Yep. I like subscription and dates too, right? Subscription services or tiers, right? Your gold tier expires in a year unless you get so many points. Great use cases there. - All right. - We're releasing a calendar. So if anyone hasn't seen this yet we have an activation calendar feature coming up. If any of you guys want to participate in this we have a beta probably at the end of March, early April. But this is great because it allows you to see all of your activations laid out on the Calendar. So now you can see where everything is, right? You have that inventory list, right? And it's really hard to tell where things are falling, right? Where have I activated in the past? "Maybe I forgot. I wanted to send something out on Tuesday at 9am." So this is a great way to visually see all of your-- My God, these glasses are going to-- Visually see. You see what you did there? I like this.

It's a great way to visually see all of your activations and where they are in context of your business events.

Awesome. Check out my cool PowerPoint presentations. All right. This one's neat. This is a little idea that I had a while back I've been experimenting with. They make these things. If you're wondering how I've been running the music for this presentation I've been running it on this little button and I'll tell you the brand name when I'm not being recorded if you want to ask after. But these are little smart buttons. Amazon had the commercials for a while where it would buy things. You can set these things out to do all kinds of stuff. You can also set it to fire an API. You can also run through Zapier, and then you can fire an API to AJO. Then you can take AJO and you can take AJO and have it hit the JavaScript API for PowerPoint and run a PowerPoint presentation if you really wanted to be crazy about it or run music cues. But from a practical use case perspective I think these are really cool for doing things like in a retail environment. So I've got somebody who's in my store and they're going to click the button that's going to notify people that someone's in the electronics department and needs help. Well, let's run that through AJO. Because through AJO I can send push messages to all of the mobile apps in my staff's pocket, but importantly I can also track it with analytics. So now I can look at all of the in-store campaigns I'm running versus where everybody needs help in my stores and start to try and figure out the effectiveness. These are really cool. I'm still finding more uses for it so I'm going to give this idea to you and if you come up with something cool, please let me know because I think these are neat.

All right, what's next? Computed Attributes. How many people knew about computed attributes and where to find them? Yeah. They're lost, right? They're hard to find. So on the Profile tab not inside of AJO, on the Profile tab you go all the way over to the right and you see Computed attributes and you can use computed attributes to check any incoming event and then do things like do a sum, do a min, do a count, do a max count, get the most recent, and it'll look at that and it'll give you the quantifier for over the last number of days, or months, or whatever. And then you publish that and that value becomes automatically available to you for personalization, right? So if you're thinking about I just want to very easily check what was the last product the user browsed before they bounced off my website and I want to feature that product in an email. Computed attribute. You don't have to do anything else. It's just looking at that commerce event, what's the last product viewed get that value, and then use it for personalization.

Customer AI, hands up. Are you using it? Anyone using customer AI? Gosh, this is so easy. Ability to create a very simple, marketer-friendly go give me a propensity to churn or convert. Because if somebody's got a high propensity and they're very likely to convert, they're going to spend the money anyway. Why am I spending paid search dollars on that person to try to acquire a customer that I'm probably already going to acquire? Similarly, if they're too low down on the list and they've got like 2% chance, why am I spending money on a click that's really probably not going to convert? So what it allows me to do is squeeze that band and target, let's say the medium propensity on my screenshot to say, "Let's go after the people that have at least enough likelihood to convert, but not so high they're going to do it anyway and not so low they're not going to do it at all." You can do the same thing with churn. Churn is really interesting when you start getting into people who are going through the help section trying to figure out how to remove accounts. Let's pop up the chat and ask if they're having issues. There's all kinds of interesting things that we can do with churn as well. I see convert use the most because we all think about money, but churn is really nice for retention use cases. And what this effectively does is when I run it and I can apply some filters and things to it. It's not a bring your own model. It's easy mode out-of-the-box. You can bring your own model in other ways too. But what this effectively gives me is a score from 1 to 99, and then auto-creates the low medium high and the 33s but I can change it, right? So I can go set up whatever bands I want. I can also add this to any other audience, right? So give me anybody who bought last year that's got a medium propensity to buy this year. Let's go after them with this campaign. - Yeah. - Super cool.

Dynamic Media in AEM is coming. I think we have a beta that starts kicking off in April but Dynamic Media or formerly known as Scene7, right? So you want to be able to use dynamically generated images in your messaging, whether that's email, push, or SMS, or anything else but being able to pass parameters over to AEM and then return back that asset and that could be just give me a different color variant of a product that can be, I want to render a credit card in the email with the user's name in that stamped font. So what you're doing is you're setting up the variables inside of the Dynamic Media asset as almost like layers on top of that image.

And then when you go into AJO we give you a way to say, "Okay, I'm going to use that that asset, and you're going to see the URL path for it and in that you're going to see the ability to swap those parameters out with your own profile attributes or conditions." I'm going to give you another quick one on this because we've got time. I used this as a customer and we were multi-brand. So one of the things we dig with this is we would-- It allowed us to create assets without the logos on them, but only have one asset and then dynamically add the logo. - Yeah. - Right? And so you can have the lady carrying the blank white shopping bag and then I can actually overlay the PNG with a clear background of my different logos on top of that shopping bag and swap it out for every single image that I have, but only have one instance of that image which keeps things really clean. When you start getting into video which doesn't pertain to email think about overlaying onto that shopping bag and motion tracking it and putting it on top of video. It's super cool.

Fun. What's the next one? We got out of order. Good for us. All right. AI offer ranking. So we have offer decisioning, right? What's the next best offer? And often times we implement this in a rules-based way to say if they've got this and this and this criteria then they qualify for the buy one get one offer. But what if I've got five or six offers and I want to know which one to deliver? So there is the AI offer ranking. So as you can see by my square and I just want to play with this because it's cool. You can click on the magic button and you can set it up. It's actually pretty easy to set up. It takes a little bit of time to learn and train as any of these things do. But as it gets going it starts to figure out next best offer to show. I'm going to give you another little cool thing we did with the very first customer. You worked on this too. We rolled this out. They did something interesting. So they used this transparently with customers to trick them into logging in. Trick them. So what they did is on their homepage they showed three offers that were blurry. And over top of it said, "We have personalized offers to show you, but you have to log in to see them." So they go, "Well, that looks cool." So they log in to see them, right? Or they register to see them in the future. - Yeah. - And so now they're going to log in. What are they going to see? Personalized offers. They were grocery. Their offers were recipes.

So instead of showing you items, they show you recipes and inspire you to buy the items. Yeah. So you go to the recipe on the recipe page there's a button to add everything to cart. You add all of the items to cart now you're making butter chicken tonight. So it's pretty cool. So they use the offer ranking to decide which three to show but they actually initially use it as a way to get you to log in so that everybody's a known customer. It's pretty cool.

iOS Live Activities. Kicking off a beta on this next month.

QR code to sign up so we're looking for people to enter that if you're interested in it. Great use cases for tracking delivery status. Lots of sports entertainment companies want to use it for doing live score updates things like that. So anyone that's interested in potentially joining that beta, scan that QR code, take you to a form. Go to my buddy Robert who's going to be running that beta program and he'll be super excited to have you.

This is the real last one. We're not going to bait and switch and put on new glasses.

Show of hands, who has times when they just want to evaluate an audience now because my boss told me it needs to go out now and I didn't know it yesterday to build it for my batch segmentation to run and I need to run a campaign now.

Welcome flexible audience evaluation or I refer to this as on demand segmentation. So I now have the ability-- It's something you could do in the API previously. Now it's in the UI. - There's some guardrails around-- - Yeah. Yeah. How many times a day you can run this thing so you're not going to run it 100 times a day. You're going to run it a couple times a day when you really need it, right? Going back to my sports example and the game is rained out and I need to evaluate that thing now and tell everybody this is the way to do it. And so what I do is I just select the audience that I want I click the magic button I tell it to evaluate those audiences it's going to confirm it and off we go. And it'll run.

They're like I got you. I didn't do any of it but I'm going to take full credit anyway.

- Thank you all for coming. - Thank you, everybody.

[Music]

In-Person On-Demand Session

Tips and Tricks to Unlock the Full Power of Adobe Journey Optimizer - S522

Sign in
ON DEMAND

Closed captions in English can be accessed in the video player.

Share this page

Speakers

Featured Products

Session Resources

Sign in to download session resources

About the Session

Join Adobe Journey Optimizer experts for a “behind the curtain” deep dive into all the things you didn’t know about Journey Optimizer. Whether you are a seasoned practitioner or just starting on your journey, you’ll gain valuable insight into unlocking value and driving growth in your business outcomes.   

Key takeaways:

  • Strategies to get the most out of journey orchestration
  • Hidden gems of capabilities that are overlooked by many
  • Compelling examples of real-life journeys

Technical Level: General Audience

Track: Customer Journey Management

Presentation Style: Tips and Tricks

Audience: Campaign Manager, Developer, Digital Analyst, Digital Marketer, Audience Strategist, Web Marketer, Operations Professional, Product Manager, Marketing Practitioner, Marketing Analyst, Business Decision Maker, Content Manager, Data Practitioner, Email Manager, IT Professional, Marketing Technologist, Omnichannel Architect, Team Leader

This content is copyrighted by Adobe Inc. Any recording and posting of this content is strictly prohibited.


By accessing resources linked on this page ("Session Resources"), you agree that 1. Resources are Sample Files per our Terms of Use and 2. you will use Session Resources solely as directed by the applicable speaker.

New release

Agentic AI at Adobe

Give your teams the productivity partner and always-on insights they need to deliver true personalization at scale with Adobe Experience Platform Agent Orchestrator.