 Alright. Hey everybody. Welcome. And I know some of you, but some of whom I've even stood next to in real time when people met face to face, I think in a formal... But for those of you who don't know me, my name is Scott Massey. I'm the Managing Director for International Markets for Pantheon. And Australia and New Zealand is where I've been spending a lot of my time. Currently, I'm based in Tokyo. So when you come up, let me know and we'll grab some food. I promise like my only caveat is I'll take you to a seasonally appropriate place. So we're not eating ramen in 35 degree summer heat. But yeah, nice to meet you. And it's a pleasure to be here at the event. And it's a pleasure to introduce Murray. So just briefly, yeah, I work for Pantheon. We run a couple hundred thousand Drupal sites. We've been around since 2011, providing great performance and dev workflows for primarily agencies. And it's been fundamental that agencies and developers never have to pay to use our platform. We offer command line tools and integration, along with security and governance and things that universities and organizations really value. So yeah, while I'm trapped in Tokyo, I'm always available to chat about that or our partner program or demo our stuff or, you know, feel free to demo it yourself. I definitely drink our Kool-Aid, but we can always have a frank discussion about where we fit in and where we don't in your agencies go to market or where we can help drive creativity and results for your org's web strategy. So having spent the last decade running Drupal sites myself and helping customers launch and run them and basically thinking about Drupal every day for the past decade, like, let me just start by saying I'm super excited about where Drupal is and maybe more so than I've ever been. I just helped an agency in the NT launch a government on Drupal 9. And yeah, I'm really optimistic. Like, I feel like Drupal 8 and 9 have lifted, like I feel the mantle of like the major version upgrade lifting and I'm adapting to what a world looks like without that. And I think the confidence in my confidence in Composer and sort of the maturing workflows has been really encouraging and the integration with JavaScript and decoupled and things that others have talked about is really sort of exploding in an exciting way. And, you know, and then finally just to say out loud, I think most importantly, Drupal, just Drupal core and contrib is really awesome by itself, you know, and it's always good to remember that because I think we always sort of gravitate towards new features and that kind of thing. But even recently just messing around with views and what it can do. It reminds me of what an exciting, you know, and fun experience it is to work with Drupal. And so yeah, like any open source intimate relationship, I've had my ups and downs, but one thing that has never wavered for me is my affection and hope and excitement for the Drupal community and the community that surrounds Drupal. And before my time in Tokyo, I lived in San Francisco and I know that open source is open sourcing. The code base is kind of a business model, but it's not always a really successful one. And supporting an open source and that's largely because I think supporting an open source project is more than just contributing to the code base. It's about building a community that embraces it and having run meetups and Drupal users groups in both Chicago and there's a special place in my heart for the next speaker Murray and guys like him and Vladimir and others who really create the fundamental initial awareness of what Drupal is all about in Sydney and kind of all over. So I'm excited to welcome Murray. And then secondly, he's talking about something that is really of interest to me and something that I've been following really closely for the last several years. I think like Drupal, like Dries said, Drupal is a leader in the enterprise market for content management. But I think that enterprise means different things to different people and it also is different in each region globally and in A&Z and I think that the thing to consider is that like a lot of the problems that enterprise is trying to solve are really the same problems that's SMB and smaller business are trying to solve. And so I think that there's a real opportunity for agencies to provide a partnership that combines both like the flexibility of Drupal and the creativity and thought leadership that's part of the agency bloodstream and part of the agency's team's special secret ability. And so I think there's opportunities to collaborate kind of like Dries said but also maybe specialize. And one of the things that I think is emerging as a real opportunity to specialize for agencies is in marketing tech and in integrations and none of those is more talked about than personalization. So with that, it's my pleasure to introduce Murray and I'm super interested to hear what he has to discuss about personalizing your Drupal website. Thank you so much, Scott, for that introduction. I'm really looking forward to taking up on your invitation there to go out in Tokyo one night. So thank you for that. Hey, welcome everyone to 13 ways to personalize your Drupal website. In this presentation today, I'd like to show you some practical steps you can take to take your Drupal website to the next level. And that is to personalize and customize the content for anonymous users. A little bit about how I got to be giving this presentation today. You know, I've been working with Drupal for a long time and I've really enjoyed the content modeling capabilities of Drupal. But you know, content management systems, they're a solved problem. And the next phase of the web is all about integrating in with other systems. And that includes, you know, personalizing content and basically, you know, serving the best content you can for your users at that particular time. Before I jump in and show you some of these practical techniques that we're able to use, I'd just like to outline a few rules of the game. These are some of the ideas that, you know, we've been keeping in mind as we've been developing a lot of the components we'll be showing you today. You could summarize it as don't be evil. That's one way to say it. But basically, for what we're looking at today, we'll only be using first party cookies. We're not going to be pulling in data from external systems, which have been tracking a profile on you. So we're only going to be looking at information you've gathered on your own website, or indeed, maybe in your CRM or marketing system. We're also taking a loosely coupled approach. And by that, I mean, we are not buying into a monolithic stack of, you know, someone else's one solution to fit them all. We really want to be able to knit together different services and different approaches to suit your requirements and, you know, the tech stack that you're attracted to. So by loosely coupling things, we're able to achieve that. And of course, that allows us to use best of breed services. So, you know, if you have a service that you wanted to use, you're able to pull that in and integrate it with your website. And we are taking a Drupal centric approach. And you may think that it's obvious, but I think when you look at the marketing technologies that are out there, a lot of them are storing content inside them and then targeting that content into the site, whether the CMS is really just a dumb repository to show that dynamic content. On the contrary, here, we're taking a Drupal centric approach and using the CMS capabilities of Drupal to manage that content. Personalization is difficult. There's just a lot of things you've got to manage in order to, you know, deliver a great solution. And I think when you look out on the web and you read about personalization, you'll find a lot of people talking about it, how great it is, how important it is. But there's very little practical information about how you can actually achieve that. And that's one of the things I want to address today. But in order to do that, you do have to have a strategy as to how you're going to roll that out. And I really consider this a UX problem. It's not just about technology. It's also about the user experience. Now, at the start of any project, you're going to have a discovery phase and a design phase usually. And during this process, you'll be looking at the types of people using your site, the audiences, the personas, what goals they might have, and the journeys they'll undertake to get there. And usually, this would mean defining a structure and sort of directing users to where you want them to go. But with personalization, this is magnified a whole lot more because you really have to think much more clearly about what those pathways are going to do, what they're going to be, and how the users are going to progress along them. You also need content as well. So you need content to support the user as they're going through that journey. So that may be some introductory content, some more informational things, and then, you know, all the way through to the conversion process at the end. So you need that content there. But you also need to have content that's kind of going to prompt the user and guide them. So in the demo, I'll be giving a bit later, you'll see different promotion blocks that are being used to sort of guide users along the path. So really, yeah, sorting out your content is a huge part of the problem as well. Drupal does offer a lot of great tools to provide the foundations to support a personalization system. You know, no doubt we're all familiar with all this Drupal-y goodness here. We've got our content types and taxonomy for providing the structure. We've got blocks and views for, you know, presenting that information back to the user. And it's funny in the two presentations I've seen today, people have commented on views. So yeah, still obviously a very important module. We have JSON data from other services and JSON API within Drupal. So this is really a key part of the puzzle as well. We have metadata. It's one thing to have the structure inside Drupal, but being able to reflect that structure out in metadata is also important because it allows client-side logic to consume that and basically start deriving some more information about the things the users are interested in. So for example, we have a demo page here about Harry Potter. And this is some of the metadata we have on that page. And you can see we're focusing in on things such as audiences and topics here. And these are a couple of the concepts or the categories that we'll be using to drive the personalization. You can see we also have a really strong concept of subject identity here. We're using identifiers rather than just strings or labels. Really having a clear idea of what you're talking about and having a persistent identifier like this also allows us to aggregate across systems. So if you're trying to build systems across multiple sites to run personalization or other things across that, having keys like this is helpful. So yeah, this metadata is consumed by client-side logic and we'll see how that's working a little bit later. During this presentation, I'm going to be talking about a few different Drupal modules and all of these are contrived and you'll be able to download them and play with them as you will. The first one I'd like to mention is smart content. This is a module by Elevated Third. And smart content basically allows you to do customization with blocks. So it is able to take local storage or basically the state of that user and it is able to do conditional logic based on that to display different blocks. So that block is pulled in asynchronously and plonked on the page depending on the conditional logic. So on the right-hand side there, you can see a little snippet from the block configuration. In this case, we're saying go into local storage, pull out the UTM source value that's there and if that equals EDM, go display this block. So this is a really sort of flexible and straight forward way of pulling in dynamic content that's personalized to what that user is doing. And if you're looking for a way to get up and running, I definitely recommend taking a look at smart content. I think it's a bit of a sleeper in the Drupal community and it's certainly one of the main techniques I'll be using today. There is another module which is very similar, operates on similar ideas and that's personified. This is a module we've developed at Morft. Personified takes a very similar approach. We're using the local state, local storage. And in this case, we're going into that and pulling out a value. And we're going to use that value as a parameter on an endpoint. So you could imagine you could set up a view that's serving JSON and that view takes a parameter where we're able to use the local state and basically customize the result set that's coming back. What's coming back, we're getting JSON back and that JSON can then be transformed with another module we've written called JSON template. And JSON template is able to use something like handlebars to transform that JSON into HTML which is put on the page. So if we have a look at what a personified block looks like, you can see here we've got a screen where we're trying to get back some seasonal promotional block. So you can see we've got the endpoint there, data promotion, that's just a view serving JSON. We have a template that's called the promotional hero template. This is JSON templates exposing a number of different templates and the editor here is picked that they want to display a hero. And you can see here we've got parameters. So you can pull your parameters out from a few different places. It may be a cookie or your local storage. So you can see we're pulling out the season and we're going to be sending that through as an attribute value. And if there's nothing defined there, we're going to set a default value. That's also important just to make sure you're going to get some data back if there's nothing in local storage. So yeah, the personified data is very flexible and basically we're utilizing client state and the power of use to pull back different content. We have JSON templates as well and I've just mentioned that that's what personified is using. JSON template transformed JSON client side and it's been designed with a plugin architecture and we have a transformer for handlebars but you could easily implement other transformers if you wanted to. It's used in a couple of places in this presentation. We're going to be using it for Sejari and Rekombi as well as with personified. Now when we designed JSON template, we wanted to do two things. We wanted to make sure it's going to be thema friendly. So that means that themas can define the handlebar templates, drop them into their theme and they're discoverable in there because they're plugins. So we're really trying to make it easy for themas to define templates that are going to fit in with whatever component library they're using. We also wanted it to be editor friendly. So you saw there the editors could just pick out a nice sort of template for them to use. So yeah, basically JSON template is a key part of the puzzle here. Another really key part is the logic that's going to be driving this. So as I've mentioned a couple of times, we're using local storage a lot to configure the personalization and so basically you have to get data into local storage somehow and that means you're going to have to have some client side logic there in JavaScript that's going to sort of work out what the user has been doing and write that information in. So that's a key thing that you can write to adapt to your own business requirements. Okay, so that's an overview of the Drupal modules. We will be getting into a demonstration and for this I've chosen the subject domain of a bookshop. Bookshops are quite a nice sort of domain because we have books and they can be classified or categorized a number of ways. So here we've just got a really simple schema where a book can have topics, audiences or a person as an author. We'll be really concentrating on topic and audience here because these are the two things that we'll be using to drive the personalization. We do have a demo site here as well and I've put the links for this into the discussion forum if you'd like to have a look at those. I encourage you to click on and just have a click around and see what happens. On this screen here we've basically got two different states. The first time someone comes to the site and what the site looks like after someone's been there quite a number of times around a thousand times. You will notice that each part of the, even though the pages look the same or similar, they actually have different content. So what you are seeing here is a homepage that is 100% personalized. From the heroes to the blocks, the recommendations to even some of the widgets in the footer, they're all personalized and that was a design goal here is how can I design a homepage that's 100% personalized. I'm just going to tab across here into the demo here. So this is the site after I've been to it a thousand times and if you look down the bottom here we've just got some information that's been echoed out just so you can have an understanding as to what's going on. So this is the behind the scenes. So you can see the site knows I've been here a thousand and 29 times. My experience level is high. That's because I've been here quite a few times. I'm currently in Australia. The daytime is, well, that's not true. I'm going to refresh that. Daytime is afternoon. The season is winter and my favorite topic is sci-fi and I'm also interested in the adult audience. So all of this information has been derived from things I've been doing on the site and we'll get into the details of how that has been done soon. I come across to an incognito tab here. You can see this is the first time I've come to the site and it's a lot less personalized. It doesn't really know too much about me at this point in time. So I've only been to the site once. I've really got no experience and I really should refresh that again. The daytime is going to be the afternoon and because I've refreshed that now it knows where my GOIP is and it's actually worked out. I'm in Australia and it's winter so you can see it's adapting as I go. So hopefully you can see that, yeah, there's just information being gathered as I go and basically all of that has been stored into local storage. I'm going to come back into the page here where I've been here a number of times and we're just going to have a look at how some of these blocks are being done. So this first block here is based on the number of times I've been to the site. So I've got high experience and it's pulling in a personalized personified data block. So this is the view. It's pulling out a promotional hero and it's displaying that. These blocks down here are driven by my favorite topic in audience. So it knows I'm into sci-fi so it's going to say, hey, do you like Star Wars or Star Trek? And this once again is a personified data block where we're doing a view and pulling out that promotion. This one over here is based on the fact that I have an affinity for the adult's audience. The next block down here is quite interesting. This is a Rekombi block. So Rekombi is a third party recommender as a service and basically it is able to track the clicks I do on the site as well as the track the clicks that everyone else does. It's like the wisdom of the crowd. So they're able to use a combination of algorithms to come up with recommendations that are going to suit me. And so these recommendations you see here are just for me based on the 1000 clicks I've done across the site. So for example, if I click on Lord of the Rings and I look at that book and then I come back to the homepage, you will see that Lord of the Rings has now disappeared from this recommendations list. And that's because Rekombi knows I've already seen that content and so it's going to remove that. Rekombi is awesome for when you have a large corpus of material and you don't necessarily know the paths that people are going to take through your website. Coming down to the bottom, we've actually got some interesting things going on here as well. Firstly, I'm just going to simulate coming in from an EDM. You can see up here in the top I've got the UTM source of EDM and we're able to use that information to show another block here with thanks for being a subscriber block. This block is done by smart content. So we're basically saying if the user has the EDM UTM tag, show this particular block. And in a similar way, we can simulate a click on an ad, for example. So up here we've got the UTM source is ad and we can see we've got a little block down here just saying, hey, we know books. So the user may have an intent to come in for a specific ad, but why not show them some more general content so that they can feel comfortable with your offering. Another thing we've got here is this little newsletter sign up form down here. If I click on sign up, I'm going to simulate that I've signed up to a newsletter. I've come back to the thanks for subscribing page and you can see I've got a little goal up here called the subscribe goal. So that's a parameter that's come through in the query string. And if you come down the bottom now, you can see that the sign up form has disappeared. And that's because the site knows that I've already signed up. Why should I be annoying people with a sign up block? So this is another example how smart content is able to sort of drive off that local storage and decide what blocks to show. So yeah, I've shown you a few different different techniques there, not all of them, but a number and hopefully that will give you a good understanding of just some of the things that's possible. So moving along, we're just going to get into the 13 techniques now. That's the name of the presentation after all. And here they are spoiler alert. We've got 13 of them. The 14th one down there, third party profile, we are not using third party data for this presentation. All of the things you'll see are going to be based off information that you've gathered from the client on your website. So the first one is explicit opt-in. And this is where just a user interacts directly with some content on your site, such as clicking a link. And classic cases of this, I am a, I want to, I'm interested in all of these kinds of questions. They're quite common UX patterns. When the user clicks on that, really you should be saving that information into local storage and using that to provide context. So this is probably the most straightforward way that you can gather information from your users and make the most of it. The second one is recommendations. You saw how Rekombi was basically providing a list of recommendations just for me based on what I have done and what other people have done. This probably is the most powerful thing I'll be showing today. There's a lot of smarts behind the system that's driving that. We've also built modules for search API integration, and that basically allows your Drupal site to tell Rekombi a little bit more about the content. So it's able to do recommendations based on item similarity, as well as the click patterns of the users. And as I said here, the pros of this is that it's very scalable and it's able to show content that you may not even know is relevant. Users may be taking paths through your site that you are not aware of. So you don't need the editors to be expert in everything. This is basically uncovering interesting insights and bringing them up to your users. Sejari search number three. I haven't demonstrated Sejari, but it's definitely worth mentioning. Sejari is another offering which provides search results, and what Sejari will do is it will track the user clicks on the actual result items, and it will use that information to promote the results that are clicked. So you can think of a click as a positive upvote. And so what you're getting then is sort of search results that are optimized according to the wisdom of the crowd or what people like to do. Sejari also has some other advanced techniques where you're able to send context through for a user so that their search can also be sort of boosted or altered depending on what their preferences are. The fourth one, campaigns. Now, you know, the personalization efforts are often going to be driven by the marketing department, I would say, because they would like to communicate in the most direct manner with the users. So if someone has, you know, clicked on a campaign and coming through to the site, that is really important because the user has clear intent at that particular point in time. You know what they are interested in, and you may as well collect that information. And we have found that if you time limit that, maybe to, you know, an hour or six hours, something like that, you're able to sort of keep that intent with that user for a small period of time but not forever. So that can be very handy for, you know, providing support information of when that user comes through and hopefully, you know, keeping them on the site longer after they've read that initial bit of content. We have location as well. When a user comes to the site, they're going to have an IP address. It's possible to use GOIP lookup services that are able to do the best guess at what country or city that person is in and also provide a lat-long GO coordinates. You saw, after I refreshed the page there, it worked out I was in Australia. Now, this data is always not going to be 100% reliable because you don't quite know how an IP might resolve. But nonetheless, it is a really good way to personalize if you want to sort of localize the content you're serving. A really cute offshoot of that is once you have the GO coordinates of someone, you're able to work out what hemisphere they're in, and then you're able to work out what month of the year it is, and then you can work out what season it is. So that was just a fun little thing we were able to do where you saw it could work out. I was in winter based on my coordinates. So this could be really handy if you're running a shop that serves, you know, sells content for different products for the season, for example. The time of day. Using JavaScript in the browser, you're able to work out what the local time is for the user, and this can be then mapped through to, you know, daytime or the afternoon or evening, that kind of thing. And once again, this can be helpful if your website is in need of that kind of thing. The number of visits is another really sort of simple and obvious one. And I would say this is probably where the easiest way you can get started is just every page view you can increment a counter to see how many times a user has been to the site. So you can find out if they're a total noob or if they're, you know, have got a really strong affinity with your website and your organization. I call it a blunt instrument down there in the cons. I think, you know, it's great knowing how many times someone has been to the site, but you don't actually really know what stage of the journey they're at. So, you know, people may go through your site quite quickly or some may take years to finally get to the end point. But nonetheless, it does give you quite a good signal, especially around welcoming people into the site and helping them get set up with, you know, the initial content you may want them to read. Affinity, I love this one. This is one of the main things I wanted to solve with when we started out with the personalization side of things. Affinity is really how much attractiveness someone has for certain subject matter. So you saw that we've got topics and audiences and each bit of content is marked up with that. Once that structure is echoed out into metadata, we're able to use that metadata to keep a track of the kinds of things the user is interested in. So for example, you know, if I was to go to the Harry Potter page, you would know I'd be interested in certain kinds of things and that can just increment a little counter. And then once you know that, you can derive some summary statistics from that and work out what your favorite topic or audience is. And then of course you can use that to drive those blocks. The really cool thing about this is that the user doesn't have to explicitly opt into saying, you know, I'm interested in sci-fi. You can basically derive that as they're going around. This is really simple. I think if you were to look at it, you may say it's a little bit naive because you're just doing counts. It's by no means as sophisticated as something such as Rekombi. But it does give you a very clear signal as to which segment a user might fit into. We have goals as well. You saw, you know, when the user came back from signing up to a newsletter, we're able to capture the end of that journey and store that away. And that's, you know, just a really simple way to build adaptive interfaces. For example, or maybe, you know, serve the user the next step after they have achieved that goal. So this is a pretty simple way to organize a staged kind of progression through your website. 10 minutes ago. Okay, profile sync. So we've got the, it's possible to sync up with third-party services as well. This is a more sort of tight integration, you could say, which will require you to write some more custom code to pull that profile down. But the benefit of this approach is that we're using, we're able to speak to your users in the most direct way and use the tagging or whatever in your CRM system. It's also possible to use the device and the user agent string to work out if something is mobile or desktop, that can be helpful if you want to serve client to users on the go and maybe, you know, bias it towards showing some more sort of location-based content. Dark mode. This is an interesting little one. Not everything has to be done with JavaScript. I just threw this in because it's great to try to think about this problem in as broad terms as possible. What can we derive from the current user context? And so if the user wants to have a dark mode, why not display it to them in the theme? And finally, third-party data. So none of the stuff we're using here is pulling in third-party profiles from anywhere else. It's really been about deriving information from the users when they're on your website and making the most of that. I've also got to say that the emphasis of today's presentation has been about serving better content and improving the user experience. So when you hear personalization, don't necessarily think nasty ads and privacy breaches. You can think of it as just a better way to improve the user experience. There are all the links. I've provided those in the chat there. So please feel free to have a look at those. Okay. And just sort of wrapping up now, I really want to emphasize that Drupal has a bright future for the next phase of the web. I think Drupal has just got an awesome foundation there and things such as JSON API and the integrations we're able to do with it will allow us to take it to the next level. And personalization and customization of content is just one part of that. What we have tried to do at Morft is release a number of modules there that the rest of the Drupal community can use. And I really hope I've given you some practical tips and guidance there as how you can get started with your personalization journey. So yeah, thank you very much. If you're interested, feel free to hit me up and I'm more than happy to chat about these things. And I think that gives us some times for questions now. Thank you. All right, that was awesome, Murray. Great presentation. And yeah, super interesting. Before we get... Yeah, feel free to ask any questions and I'll sort of go in order and pose them to Murray. But maybe I just wanted to start off like the... I had sort of made a mental note about the seasonal aspect of personalization, me being in the middle of you know, 35 degree summer currently and like the immediate kind of potential that a customer could grasp. Like how do you... Do you have any thoughts on demonstrating the overall value of personalization, especially for those who think that like your last item, the third party data is personalization? Like how do you recommend presenting it to customers and clients? Yeah, I think it's going to come down a lot to the individual customer or client and what their use cases are. I've tended to show a content sort of focused approach here today where we're trying to optimize the content that we're serving. Certainly there are use cases there for e-commerce as well and a lot of the techniques we've shown there could equally apply to that domain as well. So I think in different domains you're going to have different ways of demonstrating the value. I think in e-commerce obviously that's easier to measure on more content-based sites. It may be harder to measure that in many cases because you don't really quite know how well users are going there. But in terms of engagement from users and sign-ups and those kinds of things or whatever the journey is, I think that they're going to be the metrics that drive your success and that will depend on the use case. Right. And I think maybe overall there's kind of... Maybe the client isn't thinking about dark mode versus light mode, but there is a case to be made about just having a 5% more comfortable experience overall. And these are the little tweaks that contribute to that. That's right. I mean, when I sat down to write this, I really just wanted to try to come up with anything that I could there. So I was going for the big ones and the small ones there. So it's good to try to apply everything you can. Yeah. Yeah. So I have a question from Joshua. Is it possible to reliably sync a CRM if the user is not authenticated and is there any value pushing anonymous user data to a CRM? Yeah. Well, yeah, everyone says great question, but I think there are really pertinent issues there. I personally would not really want to push data to a CRM. I don't think it's safe enough to have like a weak identifier on a website and then use that to reliably push data into the CRM. I mean, you could try that. I don't really think you could rely on it from a security point of view. I think if you are syncing stuff from CRM or a marketing system, you can get an identifier coming through and you can then pull out information in a secure way by a client side, sorry, a server side script. I think so long as the data you're then presenting is not personal, then that would be okay. So I'd be thinking you could pull back different tags out of a CRM or marketing system. You know, like this is a hot prospect. I think that kind of information would be totally fine to pull that out. You're not leaking any personal information, but definitely because you've got anonymous users, those security aspects are vital to consider. Got you. Awesome. Thanks, Josh. We have two minutes to go. If you have any questions, throw something in there really quickly and I'll stop talking and jump right to it. The other thing that I wanted to kind of, one thing that I've gathered is that the implementation is one aspect of doing it, but really it's the ongoing iteration and experimentation. Do you have any thoughts about how to go about experimenting and any of the things that you talked about, sort of iterable, improvable, but still kind of manageable algorithms for maybe a team that doesn't have a data scientist on board? Yeah, so first off, Sejari and Rekombi will take care of a lot of that sort of hard thinking, if that's what you're thinking about. But what I didn't really get to show here was just the way the editors would write those promotional blocks. So we do have that concept of the promo block and editors are easily able to go in and create those and then assign them to different tags, if you will. So the whole editing interface for editors is very important, so that will allow them to easily experiment with that. So if you had a new sci-fi promo block, you could create that and the view should just be pulling the most recent one off there. So you're kind of using the same content management tools that Drupal editors are used to and then that's the way they interrelate with the system. I probably wouldn't want them going into smart content and doing if-then-else things. That's why I've really gone across to try to use views with Personified, because that's falling into much more of a content editor workflow of just managing content. Cool. The last question kind of addresses that point, like what's the balance with too much personalization, like very narrow content topics for the risk of just getting the same content? Yeah, well, that's right. I think you've probably got to have a mix of things. Okay, we just got one minute, but yes, it's a fine balance and that's up to you to balance that out. I think conversions or whatever you're tracking you test and yeah. That's right. If it gets better, then more. If it gets worse, less. That was the answer you were looking for, Scott. I should have just said that. Hey guys, we've got 30 seconds, but I'd just like to say thanks a lot for everyone coming along today and feel free to reach out if you have any other questions there. And thank you, Scott, for moderating. Appreciate it. Yeah, good to see you all, Murray. See you.