---
title: "Uniform Product Meetup"
description: "Personalization Basics: Intents and signals"
date: "2024-05-31T18:33:26.000Z"
url: "https://timbenniks.dev/videos/live-uniform/000-5qx4fmkkh_m"
youtube_url: "https://www.youtube.com/watch?v=5qX4fmKKh_M"
playlist: "live-uniform"
image: "https://i.ytimg.com/vi/5qX4fmKKh_M/maxresdefault.jpg"
tags: ["composable-architecture", "cms", "api-design", "personalization", "frontend"]
---

# Uniform Product Meetup

Personalization Basics: Intents and signals

Watch on YouTube: https://www.youtube.com/watch?v=5qX4fmKKh_M

## Transcript

hello everybody do we have lars yes we have everyone so um this is our first live stream and we are live i was just hearing myself back through the actual youtube video anyways thank you for watching if you are watching in fact um this is the live stream of uniform about our product meetup as you can see here in the corner and so i am joined by lars and gum our two wizards of personalization and code and cool stuff so um in this meetup we actually want to go and talk about about like you know the basics of personalization because we have so much stuff to say technically but why not first start with the basics and then roll into it a bit later so we might wait a little bit for some more people but i think we actually have a bunch of viewers already so what do you say lars maybe introduce yourself and after that cam and then we just rock and roll basically that that sounds great um thanks tim and and thanks to everyone who is watching our first live stream this is a super exciting and obviously something we we want to repeat we go a week so um so hi everyone my name is lars peterson i'm co-founder of uniform and before co-founding uniform i have been working with personalization analytics for since 2009 and working with different enterprises agencies on implementing personalization and i'm super excited in terms of what we are building in uniform and also talk more about how we envision making it easier for both developers and marketers doing personalization at scale awesome come hi i'm cam figgy i'm a veteran cms implementer i've been working on sitecore and other stuff since about 2004 and took a short stint on the sitecore product team built a bunch of sitecore open source libraries that got pretty popular in that community and now i'm here building game stack personalization that's quite the leap and you know what i am one of those who actually used all those tools because you did like unicorn and some others and so it's super cool anyways let's not talk about that stuff let's talk about personalization so lars how about you share your screen and we kick this off sure thing uh let me just sorry click the right buttons here click the right buttons all right share screen here we go and here we go perfect and then let me there it is perfect cool yes alrighty so um so in terms of how we have architected personalization with the with uniform we um we want to make it as simple as possible for for anyone who is using a concept management system built on modern tools to do a personalization so essentially to to help drive personalization we come up with this paradigm that you have a site or you have an app and on that site on app you have different visitors and those different visitors they have different intents so essentially the mission of uniform for personalizing experiences is identifying in real time what is the intent of the visitor you have on your side now and of course as you scale out and have millions of visitors we need to do all of that in real time so the first thing we really need to focus on is identifying intents so so an example would be we have a effective conference website and on that fixtive conference website we might have visitors that have the intent for marketing talks we have other visitors that have an intent to speak at the conference so they are essentially um reacting for call for papers etc and it could also be you have a other visitors that have the intent of wanting to attend the conference but primarily focused on developer talks so first of all what is the intent of the visitors the way we identify what is the intent of a visitor is through signals so um so for instance if we look at the um the folks that have the intent to submit a talk there could be different signals identifying that this is in fact someone with that intent um but not all see signals are equally important so you could have some signals that have a strong strength towards a certain intent and that means that if this signal is triggered it's almost certain that that they have this specific intent other signals are more weaker but it's still a signal and the more weak signal that essentially points to an incent makes that incent uh stronger so we um we essentially have architected uniform so we can identify these different signals but not only identifying different signals we can also set the different strengths so an example of that would be if we have a three different signals towards an intent of submitting and a talk for the conference a strong signal here could be you're coming from an email and that email have a big call to action click here to submit a paper for the conference that's a super strong signal so that means that if you come from that then we have a a pretty good um measurement for you have this specific intent other signals could be you you go to the uh the website and you consume content and part of that content you're consuming is about speaking at the conference so so the more of that content you consume in real time the stronger you have the intent of speaking at the conference and a third signal that is a week could be something about the classification on the visitor so it could be that you are classified as being a tech expert and we know for the defective conference website that having more tech experts speaking at the conference is a good thing and the typical take expert would also be more likely to turn in a paper towards speaking at the conference so when when we make personalization simple we talk about this paradigm of first identifying intents and when we have identified intense then we can begin to attach different signals to an intent and then in real time we measure what intent do you have a strongest preference for and that's where the personalization starts kicking in so lars would you mind explaining why this is so different and so much easier to use than the other systems that we're used to yeah um great question um if we look at personalization and how we have been doing personalization for the uh for the past 10 years essentially at one end we started with rule-based personalization and rule-based personalization is where you go in and then you set up a rule if this is true and all this is true and this is not true show this specific piece of content and typical rule is is bound to a component on the side so that means that someone have to manage these different rules and if your rules is also changing on dynamic factors like a email campaign or a new ppc campaign you are doing you have to constantly change those different rules then you need to change it for the different components you have across the different side so while rules is simple to get started with on one component if if the dynamic variance doesn't change that much it quickly becomes um operational nightmare to maintain on a larger site because you have to maintain it across different pages on a component level across the side and then with different dynamic data that changes over time so what what uniform simplifies there is there's no rules involved essentially you set up intense signals and then you use that along with content and now uniform on the edge does the magic of um of identifying what is the real-time intent of a visitor and that real-time intent can change in real time as the visitor is consuming more content or sending more signals and then essentially uniform maps that to uh to the right relevant content that gets personalized for the visitor so essentially uniform helps you skip that complexity of getting out of the rules engine and more have a semi-automated approach to it cool yeah that's my question because i've been in projects where we started to make like personas that we could then attach two components but then we had a lot of versions of those components based on those rules and if the components were used in different places we had to change the rules again so it was almost not the operational aspect of it was almost insane so you never really did it and that's why i'm so interested in asking this because if it's semi-automated and it just calculates those points it's a very interesting prospect so yes and then and essentially you manage it centrally so so you can set up as dynamic data changes like you are launching a new campaign you are doing a super bowl advertising for folks with a specific intent you just add it in and then the different places where you use that intent is all is automatically updated so it's um it's very easy to manage so you get out of that complexity with operational uh overload and overload to essentially maintain a site at scale exactly because then content management becomes the issue where actually code is also complicated right so if you can take that part out of the equation that's awesome sorry i interrupted you so maybe continue with your slides no i i think this uh this helps that the the scene for for the paradigm we have around in sense and signals uh obviously if there's any more questions around it i'm happy to dive into more details here yeah sure so we've asked the chat if they have any questions so i think once we go into a little bit more um things that actually show how we do it there might be some questions because we have 14 viewers which is awesome that that's not bad for uh for our first stream yeah exactly and we get to uh to learn the the tool here as well okay perfect exactly because i've streamed for one person which was me for months a while back so there you go yeah so um yeah let's go into this okay perfect so if i'm in uniform here and and essentially i i have a couple of different things i can uh can show and then um any questions that comes in we can uh answer them along the uh along the way so so first of all when i'm in uniform i have the notion of of different teams and then a team i have different sites here so so one of the site i have is is this one consent for demo site and and here i have my dashboard and i have the personalization so this is where we manage um the different intents so for instance we can see that on my site which i just deployed this is the effective demo site that looks like this um on this demo site we have a couple of different personalization scenarios so for instance if i click on a campaign that mimics that i'm interested in them in speaking at the conference so now the homepage gets personalized if i go to marketers that's real-time behavior if i go back to home we see a marketing hero kicks in if i go to developers i get profiled as a developer we see developer hero kicks in and we also see that talks begins to be personalized so this is actually using search with uniform as a context on top so we can see that the most relevant talks for me by having the behavior of um of both the market side developer is this james like 101 and then it's um it's different talks both in the marketing and developer area so so that that's an example of the um of the outcome how we are personalizing experiences in terms of managing this here are my different intents so we can see i have a call for papers developer marketer and for instance if i go into marketer i have a signal and this signal is behavior so that means that essentially what i'm doing here is setting up the building blocks that gets integrated into the stack the rest of the ecosystem so if i go into for instance contentful then i can use these different intents and signals to essentially attach it to content so i know when i visit specific content i get tracked as this behavior which is a signal into my intent if i wanna create new intents and new signals here then essentially i can go in create a new intent which could be thanks for attending the conference and then here i can add x number of signals so for instance one of them could be based on a query string let's say you are sending out an email and in that email link to the site you you pass a youtube campaign so i can just do query string and then we do utem underscore campaign equals thanks and then here i can set what what should happen if this is triggered we want to increase the score towards this intent um here's my signal strengths as well so i can set this to be a very strong and then i can also set if i want to do this for all time just to visit what's the trigger frequency if we are in a session and we open the email multiple times and click then it should only count uh once per visit but all of that is controlled here so as i'm building up my different intents and signals that becomes accessible within the content management tools so if i'm in this case if i'm connected into contentful and i go to a page my home page which is the uh this one here we can see i have different components and if i go into the homepage hero here that is where we have the different variants we are showing so we can see developer markets are called for papers and if i want to create new personalization to be displayed here essentially i create a new hero and i can say thanks uh for attending so lars while you're at it um i put on the screen um a question from robert about what what signal types are there so maybe while you create this content you can actually also select one of the signals we have created for this yeah definitely different thanks robert for that question um so you can see here that that's how i'm mapping to uh to my different incense right so the one i'm just creating thanks for sending is now available here so as i'm publishing this uh and since this is a jam stack site this gets built on netify and then if if that signal is triggered it will use the signal strength towards this intent and now if the visitor match this intent this is the content we will be using um so if i go back to uniform so this is my intent i set up a query string and this is the free version of the uniform i'm i'm showing here so in the free version you have a behavior behavior is that real-time behavior of of content you are consuming cookie can be any cookie value event can be a event value so a specific event categories event actions event labels that is triggered landing page is the specific landing page you're landing on ages could be you have viewed more than five pages a specific page visited is another signal query string really opens the door for any inbound campaign and then you can also create a shared signals that are shared among um different incense here as well um if i have a premium signals so those are more paid signals so for instance if i go back to my team and i have a site here this is with the content stack and the salesforce marketing cloud and here i have a salesforce marketing cloud which is a premium signal so here it will essentially look up um a connector to a salesforce marketing cloud and here i can see different emails um that i have in salesforce marketing cloud so what i'm doing here is is a looking up what are all the um the marketing emails that my team is sending out in salesforce marketing cloud and then i can map that to an intent so if somebody is coming clicking from one of those email that serves as a as a signal here as well so um can we have a look maybe how all this works in like maybe not specifically die hard codes but how does this connect to the website because maybe like right now what we were looking at on the website that was actually a jam stack site so it's a static site but it was still dynamically updating itself so i can kind of assume that people wanna maybe know how that works i feel like maybe come are you would you be willing to to show us something uh sure uh lars do you wanna you have the site that you just set up there do you wanna run through the netlify stuff and i can just talk about it kind of along the way of how things work since you already have the tabs open there and we can use the same site definitely let me uh just bring it back up perfectly but that to to introduce that topic though like that is a key difference between like the way that uniform works and the way that almost every other traditional personalization service uh works is um that we're designed around the idea of jam stack or static publishing like we aren't pulling in any third-party javascript um we are entirely first party we're storing the data in the user's device by default um so we're very privacy first we're ready for all the privacy changes coming you know the death of third-party cookies and that sort of thing you know that is not going to affect uniform whatsoever um and in fact because of the way that we do this the the intents and signals what we do is when you click publish like ours if you do a publish there in the the dashboard um so like click on that last on the publish there where it last published a week ago there we go like back in the back in the dashboard there like there's a link next to published ah yeah yeah click that so basically what we do is we actually publish the the man we call this the intent manifest this is the data that defines the intents and signals that you use and we basically publish it out to an s3 bucket so um this data then is pulled into your app at build time you don't absolutely have to do that but that's the way that we encourage people to do it is to pull that manifest into your app at build time and that lets you run the personalization completely independent of anything we run so like if uniform is down or um you're not at all dependent on our systems like the this is the only system that matters to run personalization is that your site is deployed and your site is working um and because of that it's very jam stack friendly and it's extremely fast like we don't have to hit any origin we don't have to load any javascript outside your own standard bundles to actually execute this personalization and the effect on the bundle size is actually very very small i think it's about 6 or 8k for the the tracker that processes all this stuff and executes the personalization so actually this this took me a while to figure out when i joined our company and basically the one sentence version of that is all the personalization information that you have in the dashboard that you see now is actually stored in a json file that then goes into the bundle of your software when you hit build in netlify for example which means we don't have to query uniform at all to know about personalization stuff because you did that on build so once i realized that one is like oh okay so we now have a tracker and we have all the information for for personalization it's just a match to see which which score is highest and that's what i'm going to show you but it's all on hydration because it's all in your javascript bundle so i just wanted to lay on that that sentence because for me that took a little bit to get in my brain but now it's there and it's suddenly everything is so easy yeah and that's the the publishing of the manifest is one of the key uh advantages that we have i mean i've seen you know in my former life being an implementer i mean i've implemented a lot of different third-party personalization solutions and you know especially the ones that are server-side based you know it can be 300 500 milliseconds up to you know even two or three seconds if you're doing a lot of heavy personalization with you know very server-driven server-side rendered stuff and that ends up causing problems because especially these days you know google is pushing performance as a key metric for you know search engine optimization now as well and if you you run into this weird inversion layer where your performance ends up being so bad that you're personalizing that you completely erase the benefit of your personalization by your performance you know killing your seo you know killing your visitor happiness like it it there's a definite um split there where you need both to make personalization successful you need both a performant website and personalization if personalizing your website kills your performance it doesn't actually help you at all to personalize no not even close shall we maybe have a look at how um that this tracker works does that make any sense how this tracker works well there's so many ways to train there are many ways to track so yeah um there's kind of three major ways that that we start running uh tracking uh one of which is to uh to do client-side tracking which is sort of the default and the most easy way to do it and that works with react and view in several flavors like we support next and nuxt and gridson and gatsby out of the box um but it's everything is basically reactor view uh and then the on the client side you know there is a very short load time you know it's like 20 milliseconds or so where it it does have to spin up and load things before it can render them um and so to combat that there's two other ways that you can do that there's also server side rendering support where you can actually do like a reactor view server side render which in the jam stack community is kind of looked down upon because it is much harder to scale server-side rendering you know it requires a lot more node servers um even if you're going serverless like the response times aren't quite as good um and so that that's an option for an app that is already ssr that will give you the markup already at load time in the browser that has the personalization applied to it and so it has absolutely no load time basically it's already loaded when it loads up and the other one is we can do stuff at the edge and so that's using uh edge compute resources like cloudflare workers uh netlifyedgehandlers uh to actually take your statically rendered site and sort of rewrite it at the edge time at delivery time with a very low latency to have the same effect as server-side rendering but the same scalability as a jam stack site yeah i'm totally into that so before we dive into that amazing story there um let's let's let's um look at robert's question it's like kind of like if you have that manifest how does it go into the code sure let me grab some food here yeah sure we could potentially show the netlify build because there you can also see it's grabbing it true that is a good point but i can't show the um uh let's see i have not shared screen on this before can you see vs code okay yes there it is okay um so this is our zoom in a little okay better there we go perfect thanks um so this is our standard uh this is our contentful for the cms and next.js uh starter kit and essentially it's the way that it works to download the manifest is we actually have a little cli tool here um so we actually have a command here to tell it to download your so uniform optimize manifest download you tell it where you want it you give it your api key that you set up during the initial setup of your uniform site and that will essentially grab the file for you and then the default scripts just wire it in when you're doing uh like the dev script for example has the generate and generate intense run as part of it before it starts next up so essentially when you start up it grabs the manifest um and then once the manifest is downloaded then uh we're ready to go with baking it into the bundle and then at that point it's just an import in your tracker initialization here and there's this file is longer than it needs to be because it's showing a few options of the way that you can do things but essentially all we're doing here is we're actually importing the intent manifest as a json file here and then passing it into our tracker where we initialize it here and this is essentially the crux of how you start up the tracker um just passing it the uh intent manifest yeah so robert it's basically any action you do to run your code it will download the manifest and put it in your bundle basically exactly it's that simple and maybe you can show the js file the json file so the json file itself um you know it has a an array of intents in it each of them has you know an id and then the signals themselves are defined in here with their metadata so it's nothing insanely complex um in fact we have a javascript starter where we use this with a pure vanilla javascript solution so no react no view you know if you're doing a a solution that is not going to be a single page app that you still want a static generator you still want to personalize like this does run with just straight up you know browser javascript without any of the fancy components and things like that that we get when we dive into reactor view yeah like what i really enjoy about this approach to it is like even if you don't have like a cms connected it's kind of you use this tracker so it figures out your behavior based on those intent manifest json file right and then it just selects variations for you and so i could actually just write some vanilla javascript so if something has three variations within 10 texts connected i can just trigger something here and there to track me and then certainly i'm personalizing all in my local javascript which is pretty cool that that's a new concept for me personally and so that's it's nice for developers because you can basically control everything yourself yeah and if you have a cms it's even cooler because then in the cms you can have variations of a component and add the intent deck that we have to track exactly and like the intent tagging like in the cms you saw the uh when lars was doing his demo he was doing the um uh to adding an intent tag onto a content entry inside of contentful and essentially under the hood this is what that does like the you can get the tracker instance either from having an instance or if you're using react or something like that there's hooks or context or whatever in view as well um so you get a get a hold of the tracker instance you can actually call programmatic activities on here so you can add behaviors um you can add scores programmatically so if you're doing some very dynamic stuff where signals aren't exactly what you're after but you still want to track it using the the intent structure that uniform provides you can do that programmatically through whatever you want by setting scores dynamically and there's also the event signal type which gives the you the ability to basically pipe google analytics style events into the tracker and then switch on them to create signals for different intents through the dashboard so that gives marketers that ability if you feed your google analytics events or whatever other analytics tool you're already probably tracking visitors on into our tracker it lets you decide on exactly how you want to do that yeah so actually what i just realized i'm learning every day so a lot of projects already have google analytics set up so you could potentially look at your implementation and add the local tracker to add behavior yourself based on those events exactly so if you already know what events you're pushing into the tracker you just make it so wherever you call like whatever you know adapter you have to call google analytics you basically push it at our tracker instance as well there's like an ad event we have typescript typings on all this so there's an add event uh method as well on the the tracker that you can call sorry function we're not see sharp here um so you can add you just call add event on here and you pass it an object that looks very much like you know you got the label category and value just like the events that you would pass off to google analytics so essentially if you just make your whenever you log to google analytics you log to the tracker as well then you can use uh matches on any of these so you can say you know where the label equals this and the category equals this and the value contains this then that's a signal that adds strength to an intent defined by a marketer in the dashboard instead of doing it here cool so i do have a question because we everybody loves ecommerce nowadays right so there's all these extra things on top that we can do also with personalization so for the hackathon or the makathon i don't know that's a nice word we did this super cool website and maybe come you can show that site and then talk a little bit about how we personalized it with all the products and the selecting of stuff and then maybe at the same time show our um like maybe in the in the console or something the way to show the scoring so people can see how that was how that information is actually um you know written down basically right so this is our mock demo site um and uh out of the box the track or the uh the starter kits will have um console logging enabled so it will give you a bit of information about what the tracker is doing um so for example you can see what our our scoring here is and if i do an activity like if i go to four developers here um the the four developers page has a this is powered with uh contentful and it has an entry inside of contentful that gives us uh behavior like it's tagged with the developer intent and so when i am shown that content from contentful it gives me developer scoring so you can see here in my scoring my vector now has 50 strength and developer um and then based on that we make choices about can you zoom in a bit so can you zoom in a little yes absolutely yeah i think i can see it now yeah so i'm just also checking on youtube to see how that looks but i think it's it's more clear now okay in the chat let us know if this is good yep sorry to interrupt continue that's okay so then for example if i go to for marketers um you know we'll see more stuff in here um and our next release we're gonna have a chrome extension that lets you also visually diagnose all of this stuff and see exactly what's going on and figure out how things are changing and let you actually even have specific scenarios so if you want to set your scores programmatically then you can change them through the the chrome extension as well uh and so now i've got developer and marketer 50. so if i go back to the the home page here you can see that now it says mock for marketing technologists whereas before it was very generic and that's actually something that we do with intense you know lars mentioned earlier what your strongest intent is it's not actually just what your strongest intent is it's actually what the most relevant intent is so this marketing technologists here i've got equal strength and developer and marketer in fact i have strengthened both which is the key thing here and so we can actually tag content in contentful like this marketing technologist hero that we're seeing here with more than just one intent tag we're tagging it both as developer and also marketer so it's relevant to both and because i have score in both it's more relevant to show me this then for example if i clear my score by clicking forget me and go back to developers and then head back now it just has a developer hero right or if i forget and go back to marketers like there's just a marketer one but as soon as i have both now it can figure out what the most relevant uh option is to show what the most relevant variation is to show for my my personalization so in the options in the cms you actually have one component now with two intent tags added correct so there's there's there's three variations here one of them is tag developer one is tag marketer and one is tag developer and marketer and you can also disambiguate between them because inside the cms you can not only tag something that there's also options of how you want to tag like you can tag this as being an override for example so if i go to for example shop and i grab an item here and add it to my cart what this does is it's actually it's programmatically adding strength to an intent called cart so now i have 30 strength and cart um and you'll see here with my scoring like i've got 30 strength and cart because that's equal to the sum of how much i have in my cart um so we're setting that intent programmatically it's not directly through a signal and then we've got 75 developer and marketer and you'd think normally if i went to the home page i'd probably see the developer and marketer uh the marketing technologist hero because i have score in both developer and marketer and they're stronger than what i have in cart but that's not actually true because the cart is set up to be an override so if i have any strength in cart it will give me this ready to checkout prompt so you have a lot of options in terms of how you can manipulate when and where you want to show these variations based on strengths including bypassing those strengths if you want to and then one other thing that we get on here so ahead what do you want to say oh no i was just i'm just thinking about hey you can also forget yourself because this is a lovely demo site yes um i think when we look at the interest of time let's let's have a look also at the commerce features but maybe lars uh wants to take that one yeah lars do you want to take over here and do the the first commerce and colors and things like that yeah sure um did we lose lars we might have we might have lost lars okay let's wait for a sec if he's not back we'll just continue us i see hello back in business yes i don't know what happened there let me share my screen here um so what what cam showed was more focus on how we use intent on that side um besides this one here i have the uh the same so so a couple of things we are connecting we are connecting consent from a cms we are connecting that with the content also from the cms that is search driven so we're using algolia for these different lists here and then what we have here is coming from bigcommerce so that's a products from hitler's commerce so we so we have different listings we have like this one merch for the conference if i go to a shop we will just see um all the different products but we don't know what the intent is of the visitor so we just we just throw them in there right same as if i go to a sessions um we will just sort them alphabetic because we don't know if you're a developer markets are and so forth so um as cam showed if i'm showing interest in being a marketer then of course we see the personalization starts to kick in here if i'm also a developer we see a different personalization kicks in with the mac for marketing technologies but that is also used to sort um products so now real-time behavior if i go back to my shop here we can see that i'm seeing the marketing technologies 2d i'm seeing the marketing technologies back the bottle and so forth if i go back to my sessions we can see that those sessions that are most relevant are those for both and if i go back to the home page again we see this is personalized and we see this is personalized as well so so that's intent driven one of the advanced use cases when you have these multiple systems is sharing data among those different systems so what we actually are doing further here is that we are able to grab into a taxonomy coming from the commerce system and we um we call that enrichments so an example of enrichment when we are connecting with big commerce if i go uh into my site here that is a powering this demo site and i have my settings then i have a enrichments so enrichments uh shared data among the different systems so in this case we are sharing product categories among the different systems so that means that this is coming from big commerce but it's also shared for instance in the cms um in the search and on the tracker we have running on on the cdn we also sharing a variant a product variant in this case its color so so now we can take those enrichments and essentially add them into the mix which means that if i go back to my demo site where we ended up here this is all based on real-time intent if i'm beginning to show a preference towards a product category or product variant like clicking in on the hoodie that will give me preference towards the product category of hoodies and if i like that the hoodie to be gray now i'm also having a preference in the color very end so if i go back to shop now and i go here we can see i'm seeing gray hoodies if i go back to my homepage again marketing technologist marketing technologist all my hoodies here are marketing technologists but now they are also kicking in with oh it's product category and it's color so it's gray and then of course as cam showed if i'm adding this to uh to my basket and beginning to click around then we're also picking up on on those events in real time and if i go in and delete this from my basket we can see that it's updating in real time here as well so so it's it's really multi-faceted personalization that we are making super simple across different systems because the management of this is super simple um but but it's very complex personalized use cases we are showing here it's shopping experiences um it's on mac technologies and it's across commerce cms search cdn uh orchestration from uniform next years etc and it's um super fast 100s on lighthouse yeah exactly what can you run one just so we have it recorded i'll remove the overlay so we can see it now something will be 99 or something always the same but like while um lars is running this i'm thinking that whole commerce story we were just showing you we almost can do a whole meet up just about that bit and see how we did that let me just remove this overlay for a sec okay so of course this lighthouse is on large locals machine it's it's it's we never know because he has other tabs open yeah it's going to be an average let's see it might be a super high score i think i have too much going on here um let's see let's see 80. okay i have not seen it that yeah i've never seen it that low before i'm thinking you might want to go um anyways well look if you if you see behind the pop-up there's actually an error message that says there may be in issues with performance due to whatever you have open on your browser yeah there's a whole bunch of stuff going on but anyways i guess if you guys try this at home you'll see different results so let us we can maybe put this in the chat this url let me see if i can find that there it is put it in the chat and to be fair this was also a hackathon project there's a lot of things that we could do to actually optimize this template as well sure and i think having this is really good fun for for our audience also to to to have a look um at this because you see like um i've clicked around in this website learning about what we did for this hackathon for example and even now in the demo that lars just did i saw new things coming up with those use cases of the personalization and what i love about it is also the fact that i didn't realize our uniform.dev website was personalized because it fit me exactly i didn't actually know and that's of course the best use case right hopefully that people will just experience the website as we haven't have intended without noticing it's personalized it's just for them and having the technology that works so well that's awesome um let's see so we have reached the 46 or 47 minute mark we still have a bunch of people watching is there anyone who has a question or potentially something else they want to want us to talk about or maybe ask maybe we can show some code let's wait for a bit and see if anyone has sort of a question or not and otherwise i think we're going to call it a day for our first live stream and i just did a new benchmark on a clean browser i still have the index db so we can see it now it's in the green but i'm still interested why it's not higher but anyways this is web vitals and all that stuff it's volatile and complicated how about that yeah i've noticed i mean even if you have something that's scoring straight 100s on your machine like it's pretty easy to bounce it around you know if you run run it three times you might get 98 198 yep and then you remove it you hit all those other things are very precise excellent as i said that template itself there's a couple of things i mean it's it looks like it's the lcp that's causing problems and i think i know exactly what that is and it's not due to uniform it's due to some stuff that's in that template we used for our hackathon project well big images that load slowly lays in a lazy way can have a high lcp sometimes based on how much waiting time there is it's i think that would be a whole different um meetup that we could do potentially about how performance works in all of this yeah that would be totally awesome yeah right oh wait there is a comment here we go from sebastian do i get it right that information which is tracked about visitors is stored in client-side in cookies uh who wants to take this one i can take that so it depends on figured um it's plugable so um out of the box the default actually would be stored in indexeddb and the starter kit that we have configured uses cookie by default because it wants to do support for server-side rendering and of course you can't read indexeddb or local storage on the server uh and so what we end up with uh is uh you know we're hot plugging cookies in for that but we are also working on off-board storage as well as an option but essentially right now we are we're defaulting to storage on the client device because it is you know exactly what sebastian just said it is very gdpr friendly because it is exclusively on the customer device we are not tracking this or scoring it uh but it does have analytics support so if you want to track your personalization uh we can we push that off we have a google analytics connector out of the box for that but like everything else in the tractor we make it easy to create a default tracker that has you know settings that will be good for most folks but it is almost entirely hot pluggable like how it does storage is changeable how it the scoring is changeable the way that it calculates like score decay over time is changeable and it has a whole plug-in system that you can use to write custom you know analytics plug-ins or you can use to do custom storage or uh react to scores changing in different ways uh within your app if you want to do different kind of reactivity you have those those eventing options by writing a tracker plug-in which is a pretty simple interface to do yeah i just want to say everything is a plugging in the system so yeah all the stuff we built are also plug-ins it's it's like the webpack approach where exactly yeah like even the cookie signal or query string signal like those are plug-ins that load in and use our standard plug-in architecture so there's pretty extreme options for changing this to be the way you want or configuring it for your specific you know regulatory requirements or whatever that you need yeah and the beauty of it as well by the way i i just removed all my data i have in local indexeddb that it was complaining about and then we have good lighthouse but in terms of privacy etc you actually have the options to run it fully um privacy first because your users own that data so so you can essentially borrow that data in real time but that data doesn't have to leave your users device um obviously you can save it to other collection and then you can have the right consent in order to do so that that of course the users have to to to accept and and you have to comply if they accept it or if they don't accept it then you can store it somewhere else but but you have the option to create something that is fully privacy first where you just tap in borrow the data that is on the user's device and then you personalize the experience based on that without focusing on on getting all that data into different databases and collections or stuff like that so so if you really want to go the full line and be fully compliant and and privacy first you can do it that's the beauty of of of how it's architected yeah and one really interesting trick actually is even if you don't have consent to store permanent data on a user's device you can actually still run in memory personalization as long as you're using you know single page app or you're not refreshing the page it'll actually store your intent scores in memory of course after you refresh the page they'll be gone but you can actually do personalization with absolutely no persistent storage on somebody's device at all there you go um so i don't think we have any extra questions anymore thank you sebastian for that one it allowed us to talk a little bit about that um you know gdpr related stuff that's awesome um do you guys have anything else you wanted to discuss or shall we wrap up for the day well for me it's end of the day for you guys it's just starting i got bugs to fix exactly um okay i don't think we're going to get any questions anymore yeah lars maybe what we can do is one last thing to say um if people are still watching the easiest way to get started with uniform if you're interested after this stream maybe lars you can show like the simplest guide or we can share a url also maybe you want to share your screen yeah definitely let me just do that again here okay um so in terms of getting started uh that's there's a couple of um of things you can do to get that are you able to see my screen um there we go okay but you're still on your uh there we go now we have it okay perfect so um so one way to get started if you go to uniform.app sign up for uniform.app and then you will get a a team and in that team you can essentially create a new site so if i call this stream here you have option you can start from scratch where you essentially are connecting the different tools or you can deploy a starter and if you start with deploying the starter you essentially select your stack here and as you select your stack that will connect to the cms to the cdn it will get you set up with the starter side we have based on these different statics side generators and then if you also have analytics you can wire in the um the code the token there from from google analytics so uh so try it yourself it's it takes 10 minutes to get a site up and running um the other part of getting started we um we have a let me do this which we have a a board game we use and this is more for the um strategy part of what should you actually personalize for who and what are the different signals so the intention here is that we we focus on what are the different top intents we are personalizing for then for each intent we map out what are the different signals that will help us map according to this intent we also set the personalization objective what are we actually trying to achieve with personalization what is the um strategic objective our business objective with this once we have this laid out then we for folks with this intent we essentially identify the different journey stages that they go through so that could be awareness research onboarding etc and for each of those stages we highlight what is the objective of that stage so if you have someone in the awareness stage most likely they are not ready to to buy the service from you or talk with sales if it's more business to business but the stage objective for your site might be to get them to consume more content or watch a specific video and as we go further in the journey it might be much more transactional you sign up you complete this form you you do these different actions things like that so when we have this frame with journeys and objectives then we can start to map out interactions and the interaction essentially what what is the personalized content so this could be specific content that we want to show for folks with this intent could also be a different transactional goals that we want to attract that we have this sales form completed but the way we present the sales form is much more appealing to folks with a specific intent so once we have filled out this frame here we have a really good understanding about what content do we need to present across the different journey stages to a folks with a specific intent and then we can start going from from strategy to enabling it with the different technologies that we are we are using so i hope you started you need to play this game i'd love to try that actually i wish i had that when i worked at the agencies it's really fun and it's fun doing with different stakeholders from the business because they also it's healthy discussions to have with those different stakeholders right because we we all know who we are targeting we all know our objectives but the journey to actually get there that that is cluttered for many uh and now we make it more actionable uh by showing specific content that should be relevant for those users and then obviously that that is what we need to turn into personalization awesome that is the perfect bombshell to end this stream thank you very much kam and lars for all this super insightful stuff and we still have eight people watching which is super nice for our first stream so thank you all for our the people that are watching even though you might work at uniform we realize that but thank you very much for watching um thanks everybody yeah um i will put on our thank you for watching slide for like a minute and there it is first stream in the back cheers everyone thank you so much you
