Your Personal Remix!

Rate this content
Bookmark

Here and there, people talk about "Personalization". Content creators, marketers, designers, and product owners evaluate the possibilities and alternatives to handle custom scenarios while offering powerful experiences to the users. And we, the developers, have some ways to help with that. Let's talk about personalization, the benefits, the challenges, and how we can manage and offer personalized experiences in our Remix projects.

24 min
18 Nov, 2022

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Today's Talk discusses Remix and Personalization, highlighting the benefits of personalized experiences in websites and web applications. Different types of personalization are explained, along with the steps to implement a personalization strategy. The use of Remix and Storyblock to implement personalized experiences on a website is demonstrated. The structure of a page with personalized content for different user types is shown, along with the use of cookies to identify user interests. The implementation of a personalization strategy using React components and the Storyblock API is explained.

Available in Español

1. Introduction to Remix and Personalization

Short description:

Today, we're going to talk about Remix and Personalization. Personalization is the ability to offer exclusive experiences to personas based on existing data. Web personalization delivers content granularly and offers exclusive experiences in websites and web applications. Examples include online retailers providing target offers based on user behavior and news platforms offering specific content based on user location. Personalization improves user experiences, generates better qualified leads, and enhances brand affinity.

Hello, everyone. My name is Facundo, and today, we're going to talk about Remix and Personalization. First of all, I want to introduce myself. As I said, my name is Facundo, Facundo Giuliani. I'm a developer relations engineer at Storyblock. I'm also one of the organizers of React Buenos Aires, the biggest React community in Argentina. And we also organize monthly in-person meetups in Buenos Aires, the city where I live in. And I'm also an Auth0 Ambassador, Prisma Ambassador, and Cloudinary Media Developer Expert.

You can find me on Twitter. My user is Facundo Surdo. So, has it happened to you that sometimes you go, well, not sometimes, but you go usually to the same coffee store and the waiters refer to you by name, or they already know what you are going to order, or probably you go to local breweries and the people working at the brewery, they recommend you new beers that are on tap based on other beers that you ordered in previous visits? If that happened to you, then in those scenarios, you are experiencing what we call personalization, which is the ability to offer exclusive experiences to personas based on existing data.

Probably the term data sounds kind of technique. But the truth is that based on things that we see, things that we can learn about the people, things that we can discover about them, we can offer these exclusive experiences to them and to satisfy their needs. Let's say we will talk about some of the benefits of personalizations later. But as we are talking about web development, we are going to talk about web personalization, which is this ability to deliver content granularly and offer these exclusive experiences in websites and web applications. Again, based on existing data, data that we are able to collect from the users and the people that are visiting our websites.

So examples of web personalization would be online retailers that are providing target offers to the people that are browsing their website based on their behavior. To give you an example, you can go to Amazon and you will see a section on the home page of Amazon with suggestions of articles that may be interesting for you based on previous purchases. Or for instance, you can go to news and media platforms and you can get specific content that may be interesting for you based, for instance, on where you are living. An example of that would be Netflix, where you get the top five TV shows and movies in your country. I live in Argentina and these are the shows that are trending right now. As you can see, the top one is related to soccer. That's because the soccer World Cup is just about to start. But you'll receive these suggestions and this specific content for you based on different details that the website, or the developers, or the product designers were able to get from you, from your behavior and from your environment.

So we talk about personalization, why we want to personalize our products, why we want to offer personalized experiences to the users. So first of all, we want the people that are visiting our websites to get great user experiences. If we offer personalized experiences to them, we are going to make them happier, they will get a better time when using our products and visiting our websites, for instance. And that will also help us from the sales perspective, because if we want to sell products, if we want to offer services, we will get better qualified leads, because the people that will be clicking on our call to actions, or visiting our catalogs, will be people that are actually interested in the products and the services that we offer, or the ones that we actually want to offer to them. Also, as I said, we can optimize our landing pages and call to actions on our website, because the people that are clicking on them, we have a way of identifying them and offering what they are looking for, or what we think is interesting for them. And finally, it will help us, our brand, to have a greater affirmity, because as a brand, we are going to be offering best experiences to the users, and our users will recommend us our services and products, and they will enjoy being part of the experiences that we offer.

2. Types of Personalization and Steps to Implement

Short description:

We have different types of personalizing experiences based on how we show personalized content and retrieve data. Explicit personalization uses data provided by users, like filling out a form. Implicit personalization uses user behavior and previous purchases. Interrupted personalization offers unexpected interactions or offers, like push notifications. Seamless personalization is integrated into the user's overall experience, like personalized music recommendations on Spotify. To implement a personalization strategy, we need to collect data, create customer profiles, set goals, and plan and implement the strategy.

We have different types of personalizing experience based on the way that we show the personalized content or how we personalize the experience of the users, and on the other hand, on the way on how we retrieve the information or the data that is going to help us to offer these personalized experiences. For instance, we can talk about explicit personalization when these experiences that we offer are based on data that was provided, well, explicitly by the users and visitors of our website. To give you an example, when we ask the user to fill a form or we ask them about their interest, we are getting explicit details of their interest.

On the other hand, we talk about implicit personalization when we get this data or these details based on the behavior of the users, previous purchases, where they are browsing our site from, where they live, et cetera. We are talking about an interrupted personalization when these experiences that we want to offer to the users, they are like some kind of interaction or offers that they are not expecting. To mention an example, an example of this interrupted personalization would be a modal in a website or a push notification on the phone offering, for instance, special products or offers based on where you live or the restaurants that you prefer to go or you usually go.

And the seamless personalization is the experience when it's a part of the whole application or the whole visit of your users when they are actually visiting our website or they are using our application. To mention an example of seamless personalization, it would be, for instance, when you are using Spotify and you have the section with recommended music based on your interest or what you were listening to the last week or the last month, for instance. That's something that you are expecting from the product and you expect it to be personalized based on your interest.

So, let's say that we want to implement a personalization strategy or a personalized experience for our users, we have some steps to follow. The first step would be collecting data from the visitors. We have different ways of collecting data. We can explicitly ask the visitors about details that will help us to offer them better experiences. We can map the customer journeys, we can track information with cookies or with marketing emails with URL parameters in the links that we include on our emails. We also can use company records, I mean records that we have on our company from the different customers that we are having or that we have contacted in the past.

The second step will be creating customer profiles. We are going to define the customer personas. These personas are going to be individuals that we are going to name, an age, description, and interests and on the other way that will help us to identify how to personalize their experience. I mean what will be the best way of offering them a personalized and custom experience when using our product.

The third step would be setting our goals. I mean what we want to get from these personalized experiences. We can for instance want to increase our conventions or reduce our bounce rate, or probably we want to improve ourselves, or we want to increase the retention of the people talking about our product or our website itself.

Finally, we need to plan and implement this strategy that we are taking. We need to identify the involved areas of our product, and the ones that we are going to modify or that will be involved in this process, in this campaign that we are going to create. We are going to draft a campaign to launch this personalized experience. We are going to prioritize the different campaigns that we may come up. For instance, we can think about different ideas on how to personalize the experience of the users. These ideas, they will have different impact. Some of them will have a bigger impact, but probably, they will take more time to implement. So, that's something that we can use to prioritize them and think on what would be the best strategy or the best campaign that we can go on and we can implement at this time.

3. Implementing Personalized Experiences

Short description:

After implementing a campaign, we test and iterate to improve it. I'll demonstrate how to implement personalized experiences on a website using Remix and Storyblock. By tracking user preferences, we can change the homepage and banners to offer personalized content. Storyblock is a headless CMS that provides a real-time visual editor and component-based content creation. We'll use Remix and React components to integrate Storyblock into our application.

And after we implement one of these campaigns, we are going to test it. We are going to measure the success of the campaign, and then we are going to iterate to see how we can improve this campaign.

I will show you a quick demo on how to implement a personalized experience on a website. Well, of course, using Remix because we are in Remix conference.

So what I wanted to show you now is this simple website where I have my home page. In this home page, I'm offering some generic content, and I have a banner with discounts of the products that I offer. As you can see on the top of my page, I have a toolbar with different links to the catalog, which will be the general catalog of my website. And then I have the sportswear category and the elegant clothing category. If I visit one of these categories, you will see that I can see the products for that category in particular. Sportswear, if I go to the general catalog, you will see all the different products that I offer on my website. And if I go to elegant clothing, you will see only the products from the elegant clothing category.

But what I'm doing in this website is considering that the first category that the user is visiting, which in my case was sportswear, is my preferred category, I mean the products that I like the most from the website. So what we are going to do to offer this personalized experience is change the homepage and change the banner that we in the homepage. And now as I visit this category and I show interest on the sportswear, the banner that I'm getting, as you can see, is different and it's not the generic one that we displayed before, it's a banner about discounts and offers related to specifically sportswear, which is the type of product that they prefer, right? Because that's the criteria that we define for the users.

So for this simple demo project, I've used Storyblock. Storyblock is a headless content management system that will help you to create and manage the content for your website. The cool thing about Storyblock is that it has two main benefits, let's say, one is that it offers a real-time visual editor, so the users and the content editors can, well, enter to this visual editor and have a real-time preview of how the content is going to look like before they publish the content. And on the other hand, the users can interact with the content that they are creating and the components that are part of this content that they are creating. Because Storyblock also offers a component approach. You will be able to create reusable components that are called blocks. And these blocks, you will have them in different pages and in different parts of your pages and you can reuse them as different content entities. The cool thing about Storyblock as it's a Headless Content Management System is that we can use it with any framework, any programming language, any particular programming language that you prefer. In our case, we will use Remix for our example and all the different features that Remix offers us. The cool thing is also that we are going to use React components to link to these Storyblock components. So, we will have the visual representation of our Storyblock components using React components in the front end of our application.

So let's go now to the demo. Again, I want to show you first Storyblock visual editor that I mentioned before. As you can see, I have the page, I mean my page inside this real-time visual editor. I have the possibility of clicking on the different components or blocks of my page and I have the possibility of editing these values and seeing in real-time the content that I'm creating and editing. I can, for instance, as you can see, I can add some text here and it's appearing in real-time because this is the real-time visual editor of Storyblock.

4. Page Structure and Personalization

Short description:

I'll show you the structure of my page, which includes personalized content for different user types based on their interests. We have variants for generic, sportswear, and elegant clothing. The catalog page displays products from specific categories, and the store block contains all the products. We use cookies to identify user interests and render personalized content.

What I wanted to show you is the structure of my page. I have this rich text block or component that is displaying some generic text but on the other hand, I have this personalized content that is a block that has other components inside of it and we have the different variants based on the type of user that we want to identify and this type of user will be based on the interest that they are showing.

We will have a generic content variant which has the banner with the call to action for the generic case, the user that didn't show any interest on any particular category. We have here the headline, the text and the image that we are showing and the link to that page. But we also have some variants for the sportswear and the elegant clothing. So if I go to sportswear, you will see that I have the user type of this variant and then I have the call to action which is a headline, a text, an image and the link to the actual catalog page for the sportswear with the discounts that we want to show.

This page is the home page where we are, well, displaying the logic, the personalization experience that we want to actually show to the users. If I go to the catalog page, let me go out of the visual editor and I wanted to show you again that in my personalization example, I can go to the content and I can show you the catalog pages that we have here. What we are doing in the catalog, I will show you the sportswear as an example. We are displaying all the products from a particular category. So this category, I mean the page that we are showing for the catalog, we have only the body of this page and the body has one block of type catalog. This catalog, the only thing that we are storing is the category of this catalog. Then in the front end of our application, we are implementing the logic that we want to use to only display the products from that category. The same happens with elegant clothing. In the case of the general catalog, we're going to show all the products from our website. Speaking about the products, I will show you that we have a folder in MySpace in a store block with all the products that I'm offering. These products, they don't have a particular visual representation, but if I show you, for instance, this snow jacket, you will see that I'm storing all the information related to the product. I'm storing the image, the price and the category, and this category is the one that we are going to use to filter them based on the catalog that the user is visiting. So this is the content structure of my project that I have in store block, and this is what I'm going to use, and I'm going to consume from the store block API from my Remix frontend. So if I go now to my Remix project, as you can see on the left-hand side, I have the typical structure of a Remix project. I have two routes. Basically, one is a generic route at the top level of the routes folder, and then I have a catalog route for the actual catalog page. I want to show you first the catalog page because here is where the magic of identifying the users is happening. What we are doing is getting a cookie with this React use cookie library that's been installed for this purpose. We are going to see if the user already has a user type. This user type will identify the interest of the user. If the user didn't visit any catalog page before, we are going to set a new cookie based on the category that the user is visiting. If we are visiting the sportswear page and the user doesn't have any user type cookie on their browser, we are going to set that as the user type and we are going to consider this user as interested in sportswear products. Here we are actually rendering the content of my page. We are going to display the title of the category and the list of products based on what is coming from the serve log API.

5. Implementing Personalization Strategy

Short description:

I will show you later. I don't want to go super into details of the different React components that I created. What I wanted to show you is how to implement the actual personalization strategy. In the loader function of my root of my catalog group, I'm going to get from the URL, the category, because it's I mean we can identify the type of catalog that we can see in our URL. We are going to set some filter queries to call the store block you can see that we are going to filter products and the products that we are going to filter and bring to this catalog are based on the category. If we are visiting a particular category, I mean not the generic component, sorry the generic catalog, we are going to filter the products and bring only the products from that category. And now that we created all these filter query object, we are going to add that as the param to the parameters that we are going to send to the storyblock API to retrieve all the products from the storyblock space that we have connected and that we are working on and we are using for our product. So as you can see, we are initializing the connection with the storyblock API and we are getting all the stories which are the items from storyblock based on the products that we want to retrieve and the category that we want to display. And based on that, well, we will get all the products from our category and the category title that we are using to render the page. The generic, sorry, the home page.

I will show you later. I don't want to go super into details of the different React components that I created. What I wanted to show you is how to implement the actual personalization strategy.

In the loader function of my root of my catalog group, I'm going to get from the URL, the category, because it's I mean we can identify the type of catalog that we can see in our URL. We are going to set some filter queries to call the store block you can see that we are going to filter products and the products that we are going to filter and bring to this catalog are based on the category. If we are visiting a particular category, I mean not the generic component, sorry the generic catalog, we are going to filter the products and bring only the products from that category.

And now that we created all these filter query object, we are going to add that as the param to the parameters that we are going to send to the storyblock API to retrieve all the products from the storyblock space that we have connected and that we are working on and we are using for our product. So as you can see, we are initializing the connection with the storyblock API and we are getting all the stories which are the items from storyblock based on the products that we want to retrieve and the category that we want to display. And based on that, well, we will get all the products from our category and the category title that we are using to render the page. The generic, sorry, the home page.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

React Summit Remote Edition 2021React Summit Remote Edition 2021
33 min
Building Better Websites with Remix
Top Content
Remix is a new web framework from the creators of React Router that helps you build better, faster websites through a solid understanding of web fundamentals. Remix takes care of the heavy lifting like server rendering, code splitting, prefetching, and navigation and leaves you with the fun part: building something awesome!
React Advanced Conference 2021React Advanced Conference 2021
39 min
Don't Solve Problems, Eliminate Them
Top Content
Humans are natural problem solvers and we're good enough at it that we've survived over the centuries and become the dominant species of the planet. Because we're so good at it, we sometimes become problem seekers too–looking for problems we can solve. Those who most successfully accomplish their goals are the problem eliminators. Let's talk about the distinction between solving and eliminating problems with examples from inside and outside the coding world.
Remix Conf Europe 2022Remix Conf Europe 2022
23 min
Scaling Up with Remix and Micro Frontends
Top Content
Do you have a large product built by many teams? Are you struggling to release often? Did your frontend turn into a massive unmaintainable monolith? If, like me, you’ve answered yes to any of those questions, this talk is for you! I’ll show you exactly how you can build a micro frontend architecture with Remix to solve those challenges.
Remix Conf Europe 2022Remix Conf Europe 2022
37 min
Full Stack Components
Top Content
Remix is a web framework that gives you the simple mental model of a Multi-Page App (MPA) but the power and capabilities of a Single-Page App (SPA). One of the big challenges of SPAs is network management resulting in a great deal of indirection and buggy code. This is especially noticeable in application state which Remix completely eliminates, but it's also an issue in individual components that communicate with a single-purpose backend endpoint (like a combobox search for example).
In this talk, Kent will demonstrate how Remix enables you to build complex UI components that are connected to a backend in the simplest and most powerful way you've ever seen. Leaving you time to chill with your family or whatever else you do for fun.

Workshops on related topic

React Summit 2022React Summit 2022
136 min
Remix Fundamentals
Top Content
Featured WorkshopFree
Building modern web applications is riddled with complexity And that's only if you bother to deal with the problems
Tired of wiring up onSubmit to backend APIs and making sure your client-side cache stays up-to-date? Wouldn't it be cool to be able to use the global nature of CSS to your benefit, rather than find tools or conventions to avoid or work around it? And how would you like nested layouts with intelligent and performance optimized data management that just works™?
Remix solves some of these problems, and completely eliminates the rest. You don't even have to think about server cache management or global CSS namespace clashes. It's not that Remix has APIs to avoid these problems, they simply don't exist when you're using Remix. Oh, and you don't need that huge complex graphql client when you're using Remix. They've got you covered. Ready to build faster apps faster?
At the end of this workshop, you'll know how to:- Create Remix Routes- Style Remix applications- Load data in Remix loaders- Mutate data with forms and actions
React Summit 2023React Summit 2023
106 min
Back to the Roots With Remix
Featured Workshop
The modern web would be different without rich client-side applications supported by powerful frameworks: React, Angular, Vue, Lit, and many others. These frameworks rely on client-side JavaScript, which is their core. However, there are other approaches to rendering. One of them (quite old, by the way) is server-side rendering entirely without JavaScript. Let's find out if this is a good idea and how Remix can help us with it?
Prerequisites- Good understanding of JavaScript or TypeScript- It would help to have experience with React, Redux, Node.js and writing FrontEnd and BackEnd applications- Preinstall Node.js, npm- We prefer to use VSCode, but also cloud IDEs such as codesandbox (other IDEs are also ok)
Remix Conf Europe 2022Remix Conf Europe 2022
195 min
How to Solve Real-World Problems with Remix
Featured Workshop
- Errors? How to render and log your server and client errorsa - When to return errors vs throwb - Setup logging service like Sentry, LogRocket, and Bugsnag- Forms? How to validate and handle multi-page formsa - Use zod to validate form data in your actionb - Step through multi-page forms without losing data- Stuck? How to patch bugs or missing features in Remix so you can move ona - Use patch-package to quickly fix your Remix installb - Show tool for managing multiple patches and cherry-pick open PRs- Users? How to handle multi-tenant apps with Prismaa - Determine tenant by host or by userb - Multiple database or single database/multiple schemasc - Ensures tenant data always separate from others
Remix Conf Europe 2022Remix Conf Europe 2022
156 min
Build and Launch a personal blog using Remix and Vercel
Featured Workshop
In this workshop we will learn how to build a personal blog from scratch using Remix, TailwindCSS. The blog will be hosted on Vercel and all the content will be dynamically served from a separate GitHub repository. We will be using HTTP Caching for the blog posts.
What we want to achieve at the end of the workshop is to have a list of our blog posts displayed on the deployed version of the website, the ability to filter them and to read them individually.
Table of contents: - Setup a Remix Project with a predefined stack- Install additional dependencies- Read content from GiHub- Display Content from GitHub- Parse the content and load it within our app using mdx-bundler- Create separate blog post page to have them displayed standalone- Add filters on the initial list of blog posts
React Advanced Conference 2023React Advanced Conference 2023
104 min
Building High-Performance Online Stores with Shopify Hydrogen and Remix
WorkshopFree
I. Introduction- Overview of Shopify Hydrogen and Remix- Importance of headless e-commerce and its impact on the industry
II. Setting up Shopify Hydrogen- Installing and setting up Hydrogen with Remix- Setting up the project structure and components
III. Creating Collections and Products- Creating collections and products using Hydrogen’s React components- Implementing a Shopping Cart- Building a shopping cart using Hydrogen’s built-in components
VI. Building the home page with Storyblok- Cloning the space and explaining how it works- Implementing Storyblok in the repo- Creating the Blok components- Creating the Shopify components- Implementing personalisation
React Summit 2023React Summit 2023
154 min
Localizing Your Remix Website
WorkshopFree
Localized content helps you connect with your audience in their preferred language. It not only helps you grow your business but helps your audience understand your offerings better. In this workshop, you will get an introduction to localization and will learn how to implement localization to your Contentful-powered Remix website.
Table of contents:- Introduction to Localization- Introduction to Contentful- Localization in Contentful- Introduction to Remix- Setting up a new Remix project- Rendering content on the website- Implementing Localization in Remix Website- Recap- Next Steps