# Using Profiles to Power Personalization

### About this export

| Field | Value |
| --- | --- |
| **content_type** | course |
| **platform** | contentstack-academy |
| **source_url** | https://www.contentstack.com/academy/courses/data-insights-using-profiles-to-power-personalization |
| **language** | en |
| **product_area** | Contentstack Academy |
| **learning_path** | lytics-practitioner-certification |
| **course_id** | data-insights-using-profiles-to-power-personalization |
| **slug** | data-insights-using-profiles-to-power-personalization |
| **version** | 2026-08-24 |
| **last_updated** | 2026-09-08 |
| **status** | published |
| **keywords** | ["Contentstack Academy"] |
| **summary_one_line** | This course focuses on putting your unified customer profiles to work through sophisticated audience building and personalization capabilities. You'll learn to create dynamic, real-time udiences and deploy personalized e… |
| **total_duration_minutes** | 30 |
| **lessons_count** | 9 |
| **video_lessons_count** | 8 |
| **text_lessons_count** | 1 |
| **linked_learning_path** | lytics-practitioner-certification |
| **linked_assessment_ref** | LMS_UNCONFIGURED_COURSE_ASSESSMENT |
| **markdown_file_url** | /academy/md/courses/data-insights-using-profiles-to-power-personalization.md |
| **generated_at** | 2026-09-08T13:39:11.098Z |
| **intended_audience** | [] |
| **prerequisites** | [] |
| **related_courses** | [] |

> **Academy MD v3** — companion `.md` for Ask AI. Quizzes and graded assessments are **LMS-only**; this file never contains answer keys.

## Course Overview

| Metadata | Value |
| --- | --- |
| Catalog duration | 30m 14s |
| Released (if known) | 2026-08-24 |
| Product area | Contentstack Academy |

### Description

_This course focuses on putting your unified customer profiles to work through sophisticated audience building and personalization capabilities. You'll learn to create dynamic, real-time udiences and deploy personalized experiences across multiple channels._

### Overview

### What You'll Learn

This hands-on session teaches you to transform unified profiles into actionable marketing campaigns through:

*   advanced audience segmentation
*   cross-channel activation
*   web personalization.

You'll master the tools needed to deliver relevant, personalized experiences at scale.

### What We'll Cover

We'll start with building sophisticated audiences using real-time computed attributes, including complex time-based logic for use cases like cart abandonment and rule sets with AND/OR logic for precise targeting. You'll learn how our audiences differ from traditional static lists by functioning as living, breathing computed attributes that update in real-time. We'll cover exporting audiences to hundreds of marketing platforms including ESPs, CRMs, and ad tech, and integrating Cloud Connect data seamlessly into audience definitions. You'll explore the reporting system to gain insights into audience composition and overlap, then implement web personalization using the Pathfora SDK to deploy campaigns like modals and forms. Finally, we'll cover the Experiences interface for creating personalized campaigns without coding.

### Learning objectives

1. Follow each lesson in order.
2. Practice in a training stack using placeholders **YOUR_STACK_API_KEY** and **YOUR_DELIVERY_TOKEN** in local `.env` files only.
3. Validate API responses against the official documentation.

### Topics covered

Contentstack Academy

## Course structure

```text
data-insights-using-profiles-to-power-personalization/
├── 01-data-insights-course-4--building-an-audience · video · 595s
├── 02-data-insights-course-4--audience-mechanics · video · 96s
├── 03-data-insights-course-4--leverage-warehouse-data-in-audiences · video · 56s
├── 04-data-insights-course-4--activating-audiences · video · 67s
├── 05-data-insights-course-4--save-time-with-actions · video · 76s
├── 06-data-insights-course-4--unlock-insights-with-reports · video · 534s
├── 07-data-insights-course-4--web-campaign-personalization-sdk · video · 212s
├── 08-data-insights-course-4--streamline-campaigns-with-experiences · video · 178s
├── 09-data-insights-course-4--quiz · quiz (LMS only) · 3 min
```

## Lessons

### Lesson 01 — Building an Audience

<!-- ai_metadata: {"lesson_id":"01","type":"video","duration_seconds":595,"video_url":"https://cdn.jwplayer.com/previews/LVm9uAFn","thumbnail_url":"https://cdn.jwplayer.com/v2/media/LVm9uAFn/poster.jpg?width=720","topics":["Building","Audience"]} -->

#### Video details

#### At a glance

- **Title:** 24-data-insights-building-an-audience
- **Duration:** 9m 55s
- **Media link:** https://cdn.jwplayer.com/previews/LVm9uAFn
- **Publish date (unix):** 1752889734

#### Streaming renditions

- application/vnd.apple.mpegurl
- audio/mp4 · AAC Audio · 113453 kbps
- video/mp4 · 180p · 180p · 127895 kbps
- video/mp4 · 270p · 270p · 135135 kbps
- video/mp4 · 360p · 360p · 143562 kbps
- video/mp4 · 406p · 406p · 148506 kbps
- video/mp4 · 540p · 540p · 163364 kbps
- video/mp4 · 720p · 720p · 187010 kbps
- video/mp4 · 1080p · 1080p · 260143 kbps

#### Timed text tracks (delivery)

- **thumbnails:** `https://cdn.jwplayer.com/strips/LVm9uAFn-120.vtt`

#### Video transcript

Audience building in Lytx at the core is super easy. Just go into audiences, you'll see all of your existing audiences. Lytx comes pre-built with a number of audiences out of the box. So like if you expand it, you'll see things like anonymous profiles and highly engaged users and some of those kind of things. That's what you'll see in a brand new account on day one without doing anything. And then obviously you can go in here and create any number of custom audiences based on your data, based on your specific use cases. When you go into the audience builder, so when you go to build audiences, there's really only two things to keep in mind kind of at a high level. One, you can build Lytx audiences on existing audiences. So usually we'll call those building block audiences. You can think about a use case where, you know, maybe I have a consent audience or audience of high value users in the U.S. or audience of users who have an email address or whatever it may be. You don't want to redefine that logic every single time that you build a segment that uses, say, your consent rules. So you can go in here, build an audience, and then when you come to build a new audience, you can select essentially any of the existing audiences to include in that logic. So for instance, I can search for, say, like known email, which is one of our out-of-the-box audiences, click that, and it'll add that logic to your segment definition. And then you can stack additional rules and ands and ors and all that kind of stuff on top of it. So keep in mind that you can build audiences on top of other audiences. We try to keep the, like, the depth of those includes. Within reason, customers sometimes can do some crazy things and have, you know, an audience that includes an audience that includes an audience that includes an audience that includes an audience. And sometimes that makes the logic difficult to understand. So I wouldn't go terribly deep on those inclusions as a best practice, but there's not really any hard limitations. When you add either a rule, which we'll do here in a second, or an audience, you'll always be presented with included by default. You can toggle it to exclude. And then these counts on the right hand side are real time. The one thing to note about these counts is under the hood, this gets pulled from Elasticsearch. So sometimes, like, if you're doing live testing and pushing a profile in and then building an audience, these numbers will be slightly delayed compared to the profile view, which reads directly from the actual entity store in Bigtable. So just keep in mind that there's some caching, some delay in the actual calculation of these numbers while the data sort of makes its way to Elasticsearch and whatnot. It really only impacts you if you're, like I said, doing a thing in the UI to collect data and then going to build a segment and expect it to show one. It won't always show one right away or whatever that user number is. But for the most part, the counts are pretty close to real time. I think in my testing last week, it's like 10 to 15 minutes and all of the numbers in the audience query should be up to date. And then the other thing you can do, as long as there's users that come back in the audience, is you can sample recent users. So this will pull up a bunch of anonymous profiles because they don't have names yet, but you can click on one of these and actually go to explore the profile just as you're trying to sort of play with and understand the system. The segments at the core in the UI, at least I should say, are built up of rules and rule sets. So rule sets, just think about it as a group of rules, and then rules are the individual logic. We'll probably in a follow-up conversation, maybe go in under the hood how segments are built and touch on filter QL and some of that, which is like the code, the language, the query that the UI builds. But I think we'll save that for a more technical deep dive. But as an example, if I delete this rule, I can go, one thing I would ignore is this content affinity tab is legacy. You're going to open it and there's generally not going to be any content affinities. This thing's going away in the new builder because we don't use it anymore. So just as you see that sort of ignore and pretend that it's not there. The other thing to be aware of is the custom rules. So this is where all of the attributes that we have walked through how to add and change and manipulate and create on the profile, you can ultimately access them and build whatever logic you want. So if I wanted to, for instance, say like, you know, anybody that has had a page view ever, I could add that condition. And then you could add additional rules to the rule set. So like if I did email exists, these two rules in the UI are essentially linked together. So I can switch it and say I want it to be an or or an and pretty basic sort of stuff. I can include or exclude one of them. And then if I were to add another rule set, it's another group of rules that you can then and an or against that top set of rules. So if I did like score frequency is greater than 10. So now you have this rule set, which contains these two rules that have their sort of independent and or switcher. And then I can adjust the logic of this rule set. If I were to add another rule, say like score frequency is exists, whatever bad rule because they're the same ones. But so now these two things work together. These two things work together. And then you can toggle if you want to use both rules or whatever. So it's it's creating this big essentially like and or statement under the hood, which we can show, but just know that you have rule sets so that you can group logic together. And then you have rules which represent the individual rules to be applied. So then the other thing that I wanted to touch on that will definitely come up. Actually, there's two things. So one, you'll see the show unpopulated fields is automatically checked. So it should be on for everybody. If you happen to uncheck it, it's going to hide all of the fields that don't yet have user data on them. So like if I do this, it's going to hide a bunch of fields that maybe we haven't collected first name, last name stuff that doesn't have information yet. So almost always you're going to want to make sure that this is checked. It should be checked by default, but it's a total gotcha of like, I don't see my field. It's not there. How do I build a segment? It generally means that you don't have any users with data on that yet. And then more importantly, field info, which is sort of a background job, hasn't ran yet to update some of those stats. So just kind of a foot gun to always make sure that that's checked. It's going away in the new builder and it's just on. And then the other thing that is a little bit hairy, we'll say, is it's really, really powerful, but it's also a little bit confusing in the UI to use some of that date calculation logic. So if I choose a field first and foremost, that is a time field. So for instance, like event last time seen is a map of the event name and then the time stamp that you last saw it or the time stamp that you first saw it. So if I go in here, for example, and say I want to look at page view, it's going to bring up the sort of date math calculator for lack of a better term. And the first thing to notice, you can do it based on a relative date. So one that slides with you versus specific date. So if a specific date is I want to evaluate this on June 13th, 2025, I can do that and it does it one time. The relative date allows you to do things like I want to reevaluate this an hour in the future for every user based on that date. What I did, because this is always really complicated to explain, I built a picture to try and explain this, which I can share afterwards as well. But essentially, in this UI, if I go back here just real quick, so there's essentially the relative date and there's after, before, or exists. Exists is super easy in that it just evaluates that that key exists. It doesn't care about the time stamp as long as that key's there. So that's just sort of like a check of I've ever made a purchase as an example. But there's after and before and there's in the past and in the future. So this picture sort of breaks down that logic. So for instance, if I say, after one hour in the future, let's say it's 3 p.m. right now, the green, it's going to look at 4 p.m. for my time and then have any time after that, which probably doesn't have any use cases, but technically you could build it. After one hour in the past is going to look an hour in the past. So 2 p.m. in this case, and then look forward from there, essentially. The before one hour in the past is going to look an hour behind and then any time before that. And then before one hour in the future, goes in the future an hour and then looks backward. All of this is horrifically complicated. One of the things that we're working to do, which you'll see in some of like actions and that kind of thing, is like for cart abandonment, we want to pre-build a segment for you that says, okay, we wanted to pull in anybody that has abandoned a cart in the last 30 minutes and hasn't made a purchase in 24 hours, which is a super simple use case, really difficult to build with this particular logic. So you'll see it in the UI, know that this is one of the big focuses for us and one of the reasons that we're rebuilding the segment builder so that we can simplify a bunch of this logic and make it a little bit more human friendly. However, the power of it is super, super cool and that it can do sort of these forward date calculations to reevaluate in the future to see when you're in that segment or not in that segment versus relying on events to come into the stream.

#### Key takeaways

- Connect **Building an Audience** back to your stack configuration before moving to the next module.
- Capture one concrete artifact (screenshot, Postman call, or code snippet) that proves the step works in your environment.
- Re-read the delivery versus management boundary for anything you changed in the entry model.

### Lesson 02 — Audience Mechanics

<!-- ai_metadata: {"lesson_id":"02","type":"video","duration_seconds":96,"video_url":"https://cdn.jwplayer.com/previews/XqZ5gtQA","thumbnail_url":"https://cdn.jwplayer.com/v2/media/XqZ5gtQA/poster.jpg?width=720","topics":["Audience","Mechanics"]} -->

#### Video details

#### At a glance

- **Title:** 25-data-insights-audience-mechanics
- **Duration:** 1m 36s
- **Media link:** https://cdn.jwplayer.com/previews/XqZ5gtQA
- **Publish date (unix):** 1752893435

#### Streaming renditions

- application/vnd.apple.mpegurl
- audio/mp4 · AAC Audio · 113683 kbps
- video/mp4 · 180p · 180p · 133750 kbps
- video/mp4 · 270p · 270p · 143402 kbps
- video/mp4 · 360p · 360p · 147302 kbps
- video/mp4 · 406p · 406p · 150798 kbps
- video/mp4 · 540p · 540p · 165708 kbps
- video/mp4 · 720p · 720p · 190716 kbps
- video/mp4 · 1080p · 1080p · 258939 kbps

#### Timed text tracks (delivery)

- **thumbnails:** `https://cdn.jwplayer.com/strips/XqZ5gtQA-120.vtt`

#### Video transcript

So, that's the basics of segment building. The only other thing I guess to touch on, we've touched on this a few different times, but we think of audiences very different than most marketing platforms and that most marketing platforms are building an audience, that audience is static, I'm going to sync it to my email tool and we're going to send one email blast to that audience. Linux audiences, or segments as we call them in the API, are living and breathing, they're actually far closer to like a computed attribute, or I present them as facts on the profile more times than not. So you're creating a set of rules to evaluate each time that event comes in, and then you're surfacing the result of that on every single individual profile. So instead of just having this list of people, you actually have this fact whether I am in or not in a segment on every single user's profile, like a computed attribute. It's one of the things we, like, that's one very unique difference of our segments is they're fundamentally the kind of basis of how you can trigger actions, right, entering into a segment, exiting a segment, updating a profile. So they're much more living, breathing, calculated in real time, not this like fixed static thing that doesn't change that you push to a tool, then you forget about it.

#### Key takeaways

- Connect **Audience Mechanics** back to your stack configuration before moving to the next module.
- Capture one concrete artifact (screenshot, Postman call, or code snippet) that proves the step works in your environment.
- Re-read the delivery versus management boundary for anything you changed in the entry model.

### Lesson 03 — Leverage Warehouse Data in Audiences

<!-- ai_metadata: {"lesson_id":"03","type":"video","duration_seconds":56,"video_url":"https://cdn.jwplayer.com/previews/ti1OfDR6","thumbnail_url":"https://cdn.jwplayer.com/v2/media/ti1OfDR6/poster.jpg?width=720","topics":["Leverage","Warehouse","Data","Audiences"]} -->

#### Video details

#### At a glance

- **Title:** 26-data-insights-cloud-connect-audiences
- **Duration:** 56s
- **Media link:** https://cdn.jwplayer.com/previews/ti1OfDR6
- **Publish date (unix):** 1752893441

#### Streaming renditions

- application/vnd.apple.mpegurl
- audio/mp4 · AAC Audio · 114446 kbps
- video/mp4 · 180p · 180p · 140379 kbps
- video/mp4 · 270p · 270p · 154849 kbps
- video/mp4 · 360p · 360p · 153389 kbps
- video/mp4 · 406p · 406p · 158945 kbps
- video/mp4 · 540p · 540p · 177952 kbps
- video/mp4 · 720p · 720p · 205252 kbps
- video/mp4 · 1080p · 1080p · 287467 kbps

#### Timed text tracks (delivery)

- **thumbnails:** `https://cdn.jwplayer.com/strips/ti1OfDR6-120.vtt`

#### Video transcript

Cloud Connect audiences or audiences that are built on Cloud Connect data, all of your rules, all of your Cloud Connect attributes are going to be under custom rules. They just get prefixed with CC underscore under the hood. So the other day when we were meeting and we went through and pulled that big query data in to create the first name, last name, and pull in the annual revenue, all of that data lives and exists on the profiles. It functions just like a normal attribute. So this is where you would then go and build an audience. You can combine them with the sort of standard streamed attributes versus the Cloud Connect ones.

#### Key takeaways

- Connect **Leverage Warehouse Data in Audiences** back to your stack configuration before moving to the next module.
- Capture one concrete artifact (screenshot, Postman call, or code snippet) that proves the step works in your environment.
- Re-read the delivery versus management boundary for anything you changed in the entry model.

### Lesson 04 — Activating Audiences

<!-- ai_metadata: {"lesson_id":"04","type":"video","duration_seconds":67,"video_url":"https://cdn.jwplayer.com/previews/rczEmn3z","thumbnail_url":"https://cdn.jwplayer.com/v2/media/rczEmn3z/poster.jpg?width=720","topics":["Activating","Audiences"]} -->

#### Video details

#### At a glance

- **Title:** 27-data-insights-activating-audiences
- **Duration:** 1m 7s
- **Media link:** https://cdn.jwplayer.com/previews/rczEmn3z
- **Publish date (unix):** 1752893445

#### Streaming renditions

- application/vnd.apple.mpegurl
- audio/mp4 · AAC Audio · 115224 kbps
- video/mp4 · 180p · 180p · 146308 kbps
- video/mp4 · 270p · 270p · 165890 kbps
- video/mp4 · 360p · 360p · 172603 kbps
- video/mp4 · 406p · 406p · 181778 kbps
- video/mp4 · 540p · 540p · 214555 kbps
- video/mp4 · 720p · 720p · 262770 kbps
- video/mp4 · 1080p · 1080p · 396645 kbps

#### Timed text tracks (delivery)

- **thumbnails:** `https://cdn.jwplayer.com/strips/rczEmn3z-120.vtt`

#### Video transcript

So from there, we won't touch too much on this because we've covered a lot, but one of the things obviously you can do with a segment is export it. So if I go into any of my segments like this No6Sense data, I can hit Export. It's going to pull up all the different export channels that we support. You can push it to MailChimp, to a Webhook, to Adobe, to anywhere on the planet, essentially, that you want to push to. And it's going to push those members to it. Most of the exports have the option to backfill, like Eric was just talking about, to where you can sync all of the users that are currently in it. Or if you just want all of the new members that join it, that's usually an option in most of the exports as well. I think we've covered imports and exports in pretty decent length, so we won't spend too much time there.

#### Key takeaways

- Connect **Activating Audiences** back to your stack configuration before moving to the next module.
- Capture one concrete artifact (screenshot, Postman call, or code snippet) that proves the step works in your environment.
- Re-read the delivery versus management boundary for anything you changed in the entry model.

### Lesson 05 — Save Time w/ Actions

<!-- ai_metadata: {"lesson_id":"05","type":"video","duration_seconds":76,"video_url":"https://cdn.jwplayer.com/previews/mlweezyZ","thumbnail_url":"https://cdn.jwplayer.com/v2/media/mlweezyZ/poster.jpg?width=720","topics":["Save","Time","Actions"]} -->

#### Video details

#### At a glance

- **Title:** 28-data-insights-actions
- **Duration:** 1m 16s
- **Media link:** https://cdn.jwplayer.com/previews/mlweezyZ
- **Publish date (unix):** 1752893452

#### Streaming renditions

- application/vnd.apple.mpegurl
- audio/mp4 · AAC Audio · 114467 kbps
- video/mp4 · 180p · 180p · 138041 kbps
- video/mp4 · 270p · 270p · 149652 kbps
- video/mp4 · 360p · 360p · 154910 kbps
- video/mp4 · 406p · 406p · 161100 kbps
- video/mp4 · 540p · 540p · 180955 kbps
- video/mp4 · 720p · 720p · 214918 kbps
- video/mp4 · 1080p · 1080p · 311057 kbps

#### Timed text tracks (delivery)

- **thumbnails:** `https://cdn.jwplayer.com/strips/mlweezyZ-120.vtt`

#### Video transcript

Actions, what they allow you to do is essentially has a pre-built template that you basically fill in the blanks. So if I wanted to go and build an abandoned cart, we have a template. It asks you the questions. So I want to use event last timestamp. Use the cart event name. We recommend cart add. You say cart add, purchase. We recommend purchase. You can choose those windows. So how long do you want to wait before you assume that they've abandoned their cart? How long do you want to wait until they have sort of that window of purchase before you reset them? And then you can name it. You create the audience and it does all of that logic for you under the hood. It creates the rule. It sets up all of that kind of stuff sort of like just in a few clicks. So we're trying to make big steps to making things easier and easier and kind of more prepackaged but also still have support for the complexity and the value that the CDP can offer to an enterprise customer that wants to define everything on their own.

#### Key takeaways

- Connect **Save Time w/ Actions** back to your stack configuration before moving to the next module.
- Capture one concrete artifact (screenshot, Postman call, or code snippet) that proves the step works in your environment.
- Re-read the delivery versus management boundary for anything you changed in the entry model.

### Lesson 06 — Unlock Insights w/ Reports

<!-- ai_metadata: {"lesson_id":"06","type":"video","duration_seconds":534,"video_url":"https://cdn.jwplayer.com/previews/oZ8MuLnl","thumbnail_url":"https://cdn.jwplayer.com/v2/media/oZ8MuLnl/poster.jpg?width=720","topics":["Unlock","Insights","Reports"]} -->

#### Video details

#### At a glance

- **Title:** 29-data-insights-reports
- **Duration:** 8m 54s
- **Media link:** https://cdn.jwplayer.com/previews/oZ8MuLnl
- **Publish date (unix):** 1752893458

#### Streaming renditions

- application/vnd.apple.mpegurl
- audio/mp4 · AAC Audio · 113541 kbps
- video/mp4 · 180p · 180p · 134102 kbps
- video/mp4 · 270p · 270p · 144724 kbps
- video/mp4 · 360p · 360p · 155602 kbps
- video/mp4 · 406p · 406p · 161454 kbps
- video/mp4 · 540p · 540p · 183782 kbps
- video/mp4 · 720p · 720p · 218070 kbps
- video/mp4 · 1080p · 1080p · 313442 kbps

#### Timed text tracks (delivery)

- **thumbnails:** `https://cdn.jwplayer.com/strips/oZ8MuLnl-120.vtt`

#### Video transcript

So, reports sounds simple. I would say that our reports are very different than sort of a traditional analytics tool. We're not like a Google Analytics where you're going to go in here and it's the best place to see page views and, you know, click paths and some of that kind of stuff. You can get at some of that data, but we're not an analytics tool. We're really more of an insight and personalization tool. So what our reports focus on are helping you uncover sort of new facts, new aspects, new information about users, the relationship between audiences, the things that they're interested in, that sort of stuff, far less about like how many pages have they viewed and how many sessions have they had, and like that stuff's still there, but it's not necessarily the core goal. So we'll go in and we'll create a report, and then I will show you a report that we built with Actions that shows a little bit more information. To create a report, it's super easy. You just go create a report. We only have one type right now, which is a custom report. Just name it demo. There are some controls around like privacy and sharing, so if you want to create a report only for your boss and share it with them, that stuff is kind of built in. We won't do that for now. We'll just create a new empty report, and you're presented with this blank screen. Reports are built of components, and we have four different types of components supported today. We'll show each of these other than Dataflow because it's off temporarily due to some technical challenges, but composition essentially allows you to understand and compare how your audience is composed, so you're able to go in, for instance, and say I want to create a composition report, and we'll just say we'll call it interest overview as an example. I can then go in here and say pick any number of audiences. I think it's limited to three or four right now, so we'll just choose all for demo purposes, but you could choose multiple audiences if you want to compare two audiences to each other, and then you can choose any of the fields to understand the distribution of values across those segments, across the users in those segments. One of my favorite things to demo is if you go to Linux content, which is the content scores, the interest scores, you can build a component on that, and what it's going to do is it's going to break down, obviously for Petsy, sandbox site, ignore the sort of like usefulness of the topics, but for Petsy, it's going to break down the top interest topics, the top interests essentially for each of those audiences, so in the case of the all audience, you can see that more people are interested in dogs than outdoors than parks than bulldogs and Frenchies, whatever, so again, ignore the data, it's arbitrary sort of test data, but you can think about somebody like a big customer could use this and understand not just interests across their core audience, but you can understand how interests are different between, you know, multi-purchasers versus new users who have never made a purchase, and then you can uncover maybe the overlap in topics and interests that help sort of engage them and get them to make their first purchase. That's one of the ways that you can use composition. You can do this with any of the fields, but the reason that I always demo the content is you can actually take it a step farther. If I build another component, we will just say interest, we'll just do the all audience for demo purposes, we'll do Linux content again, but if you notice, it also asks for an optional subfield, so if I go in here and put in dog, you can pull in essentially the distribution of scores for any of your topics in this case, so I can see that a lot of people are interested in dogs, but are those people just a little bit interested or are they super interested, and if they're super interested, maybe you want to target this cohort of people who are heavily interested in dogs with new dog products or whatever, so if I do the distribution on that particular topic and save it, it's going to not just show the breakdown of the top interest for the audience, it's going to actually show, and again, demo accounts, so ignore the weird data, but it's going to show the distribution of specific interest scores for that particular topic across those audiences, so you can then determine if they're high or low. You can do the same kind of a thing, but anyway, you get the idea, so it's super useful in looking at source, where they came from, it's going to show you a distribution of those values. If you have actual user data, you can do by location and understand, are the people in the US have different levels of interest than some other key origins, so composition to me are one of the most useful types of score or types of report because it allows you to really understand how the values for that particular field are distributed across users for a particular audience, it allows you to really drill in and dive. The other ones are pretty straightforward as well, so there's a size component, so if you just wanted to compare the size of, say, the all audience and the whatever frequent users audience, you can save that, and it's going to give you a breakdown of the sizes, there's a few different ways to sort of visualize this, it could be stacked, you can do hiding the trend lines, you can visualize by just numbers, so there's lots of different ways you can build your own dashboards to analyze the size and the growth and the movement. I'll show you a more pretty sort of built report, but that's what size does, it allows you to compare the size over time along with the size compared to other audiences. Audience overlap allows you to see how much the audience membership for one or more audiences overlaps with each other. So if we do like all and known, this is going to be a very silly example, but you can, so how much the known users overlap with the all audience overlap with the known users, and some of the overlap, like this is overlaps in the actual chart, but there's no user, so builds a Venn diagram that shows you the overlap, and then the cool part about all of these, maybe the most powerful part about all these reports that's different than a traditional analytics tool, is you can actually go into these, and you'll notice how it calls out the users and has a little curvy arrow, it'll actually take me into the segment builder to build an audience of the users that match that criteria, so for instance, if I wanted to go in here and just build a cohort, an audience of the users that are both known and in the all audience, again, silly example, because everybody's going to be in the all audience, I can click it, it takes me into the segment builder, and it pre-populates the rule that selects that specific group of people, so that you can then target them with emails with whatever it may be. Most analytics tools allow you to sort of get insights, activating those insights down to the individual user is extraordinarily difficult, you'd have to either export things or go look at your warehouse, or Google Analytics can't do it at all, so that's where we differentiate heavily from a traditional analytics tool, it's not so much about just like getting numbers to report on, it's getting insights and then being able to activate those insights at the individual human being level, all sort of in real time. Real quick to look at a not terrible, sort of like hacked together report, one of the actions that we've created builds an audience comparison report, so you choose any number of audiences, in this case, I just wanted to compare the 30 day profiles to anonymous profiles, the first anonymous profiles that are more than 60 days, and see how they evolve and change, this is how you can sort of visualize the size over time, this is the breakdown of the interests across those audiences, this is the overlap, and then the bottom ones are essentially a distribution of all of our behavioral scores, so you can see not just which scores are in those audiences, but how high or low particular scores are across those three audiences and compare them sort of in a stacked chart, so lots of ways that you can start to compare information, uncover insights or sort of like little facts that you can then build an audience on and activate, for instance, you know, a lot of these audience members are interested in dogs, but the interest are low, so maybe we don't want to target them with a campaign, we want to do something else that has a higher sort of per capita interest.

#### Key takeaways

- Connect **Unlock Insights w/ Reports** back to your stack configuration before moving to the next module.
- Capture one concrete artifact (screenshot, Postman call, or code snippet) that proves the step works in your environment.
- Re-read the delivery versus management boundary for anything you changed in the entry model.

### Lesson 07 — Web Campaign Personalization SDK

<!-- ai_metadata: {"lesson_id":"07","type":"video","duration_seconds":212,"video_url":"https://cdn.jwplayer.com/previews/TVahcmxA","thumbnail_url":"https://cdn.jwplayer.com/v2/media/TVahcmxA/poster.jpg?width=720","topics":["Web","Campaign","Personalization","SDK"]} -->

#### Video details

#### At a glance

- **Title:** 30-data-insights-pathfora-sdk
- **Duration:** 3m 32s
- **Media link:** https://cdn.jwplayer.com/previews/TVahcmxA
- **Publish date (unix):** 1752893501

#### Streaming renditions

- application/vnd.apple.mpegurl
- audio/mp4 · AAC Audio · 113545 kbps
- video/mp4 · 180p · 180p · 135576 kbps
- video/mp4 · 270p · 270p · 148797 kbps
- video/mp4 · 360p · 360p · 159979 kbps
- video/mp4 · 406p · 406p · 168022 kbps
- video/mp4 · 540p · 540p · 193598 kbps
- video/mp4 · 720p · 720p · 235130 kbps
- video/mp4 · 1080p · 1080p · 346780 kbps

#### Timed text tracks (delivery)

- **thumbnails:** `https://cdn.jwplayer.com/strips/TVahcmxA-120.vtt`

#### Video transcript

Here's what in our UI we call experiences, the SDK under the hood that powers them is called Pathfora. And then in WordPress and Drupal, they're called widgets. It's all fundamentally the same technology, what it allows you to do. So it's built on the back of our web personalization SDK, which I'm not sure if anybody has seen this and played with it. But Pathfora is just like a pure JavaScript SDK that allows you to surface campaigns on the site super easily. So you don't have to actually go into the source code and create a bunch of things and it doesn't require a huge lift. It is without a doubt one of our most popular features because of the ease of use. It allows you to do things like you've seen probably a dozen times as I've demoed Petsy. This little lead capture in the bottom left corner is powered by Pathfora. So it's just like layered on top. This one is on every single page view, but how you would use it is you would only show that lead capture to users that are unknown, right, as a proxy to sort of gather their email address. It automatically collects inside of Linux when you actually submit those forms and whatnot. So this is one of the things that's powered by Pathfora, but Pathfora can do a lot of different things. So there's examples on here that we can kind of run through depending on time, but you essentially can like surface a modal in the middle of the screen and you can customize the styling and all that kind of stuff to your sort of heart's content. The examples on this demo site are pretty sort of like default. The modal is, so there's basically there's messages, there's forms, there's subscriptions and there's gates. The message is just being able to surface a message on the screen. You can do a bunch of different layouts. There's the modal in the front. There's the slide out in the bottom left. There's this sort of bar at the top, buttons. You can even do inline where Pathfora goes and replaces or injects it into an HTML element like a class selector that you choose. The, without a doubt, the most popular are messages because it allows you to do a sort of promotion or forms, which are essentially lead capture. So as an end customer, I can go in here and we'll walk through some examples and it'll make a little bit more sense, but Linux automatically installs and loads Pathfora for you. And then if I were to go, for instance, to Petsy and just copy this configuration, which is just a simple form, it's going to say, sign up as my headline. The message is going to be submit this form and it's just going to use the default fields. You can customize all the fields, build your own form, whatever you want to do. But just as an example, like if I close this, open my console and paste that. So we do a lot of this stuff automatically, but you can go in and just do it with JavaScript, use Pathfora, trigger this modal. And then if I were to fill in this information and submit it, it's already kind of pre-wired to collect into Linux. So it's going to handle the jstag.send call for you. It's going to send the email, the name, all that stuff. It's already pre-mapped in the common schema. So it makes collecting data and doing things like lead captures super, super simple.

#### Key takeaways

- Connect **Web Campaign Personalization SDK** back to your stack configuration before moving to the next module.
- Capture one concrete artifact (screenshot, Postman call, or code snippet) that proves the step works in your environment.
- Re-read the delivery versus management boundary for anything you changed in the entry model.

### Lesson 08 — Streamline Campaigns w/ Experiences

<!-- ai_metadata: {"lesson_id":"08","type":"video","duration_seconds":178,"video_url":"https://cdn.jwplayer.com/previews/dRHImNo3","thumbnail_url":"https://cdn.jwplayer.com/v2/media/dRHImNo3/poster.jpg?width=720","topics":["Streamline","Campaigns","Experiences"]} -->

#### Video details

#### At a glance

- **Title:** 31-data-insights-experiences
- **Duration:** 2m 58s
- **Media link:** https://cdn.jwplayer.com/previews/dRHImNo3
- **Publish date (unix):** 1752893520

#### Streaming renditions

- application/vnd.apple.mpegurl
- audio/mp4 · AAC Audio · 114054 kbps
- video/mp4 · 180p · 180p · 132277 kbps
- video/mp4 · 270p · 270p · 141890 kbps
- video/mp4 · 360p · 360p · 149083 kbps
- video/mp4 · 406p · 406p · 154030 kbps
- video/mp4 · 540p · 540p · 170857 kbps
- video/mp4 · 720p · 720p · 197197 kbps
- video/mp4 · 1080p · 1080p · 274857 kbps

#### Timed text tracks (delivery)

- **thumbnails:** `https://cdn.jwplayer.com/strips/dRHImNo3-120.vtt`

#### Video transcript

But what it allows you to do is instead of going into the raw path for a library and doing JavaScript stuff, you can just go in here and add a new experience. We have some predefined examples. If you just want to drive traffic, I want to capture leads, I want to present a message, I want to recommend content. We'll just do drive traffic for a simple one. You can say the URL you want to target, let's do petsy.linux.com, and then anyway, it'll walk you through a wizard of, okay, well, where do you want it to be? I want it to be a slide at the bottom left, and I want to change my headline to purple, whatever, sample headline, sample body. You can change your call to action, you can change the positioning. You choose the audience that you want to target. So I'll just do all for this one, but it has the targeting against the Linux audiences built-in automatically. So it makes it simple to only show specific offers, promotions, lead captures to predefined cohorts that you have in your account. Then there's a number of customization options on like I want to show it only on the first page view. I want to show it after five seconds. I want to hide it after five seconds. I want to show it on 30 percent page scroll or whatever percentage I want. I want to show it basically infinite configurability all the way down till we have an override where you can write code to overwrite it, to do a lot of different things, to tailor it to whatever that customer wants. The end result though, if I hit preview and go to petsy.linux.com, in theory, so now instead of seeing the lead capture, you see my very ugly pink headline sample model. So it's a really, really simple low-lift way to present promotions. We have it built into our content recommendation library. So you can just make a recommendation that pops up. You don't have to go in and talk to your web developer and launch new source code. You can just plop it on top. Like I said, you can put it in your tag manager, you can put it into your source code. It's super, super flexible, but it's without a doubt one of the most common ways to get started just because it is such a low-lift thing. The forms make it dead simple to collect data and that it already just gets mapped, and it's already just going to come into Linux. You don't have to do any sending, you don't have to do any mapping. So those are the biggest features. So that's experiences in our UI.

#### Key takeaways

- Connect **Streamline Campaigns w/ Experiences** back to your stack configuration before moving to the next module.
- Capture one concrete artifact (screenshot, Postman call, or code snippet) that proves the step works in your environment.
- Re-read the delivery versus management boundary for anything you changed in the entry model.

### Lesson 09 — Data Insights: Using Profiles Quiz

<!-- ai_metadata: {"lesson_id":"09","type":"text","duration_minutes":1,"topics":["LMS","Knowledge check"]} -->

#### Lesson text

**This lesson is a knowledge check hosted in the Academy LMS.** This companion Markdown contains **no quiz questions, answers, scoring rules, or explanations**.

#### Key takeaways

- Connect **Data Insights: Using Profiles Quiz** back to your stack configuration before moving to the next module.
- Capture one concrete artifact (screenshot, Postman call, or code snippet) that proves the step works in your environment.
- Re-read the delivery versus management boundary for anything you changed in the entry model.

## Resources & references

| Page | Companion Markdown |
| --- | --- |
| /courses/data-insights-using-profiles-to-power-personalization/data-insights-course-4--building-an-audience | /academy/md/courses/data-insights-using-profiles-to-power-personalization/data-insights-course-4--building-an-audience.md |
| /courses/data-insights-using-profiles-to-power-personalization/data-insights-course-4--audience-mechanics | /academy/md/courses/data-insights-using-profiles-to-power-personalization/data-insights-course-4--audience-mechanics.md |
| /courses/data-insights-using-profiles-to-power-personalization/data-insights-course-4--leverage-warehouse-data-in-audiences | /academy/md/courses/data-insights-using-profiles-to-power-personalization/data-insights-course-4--leverage-warehouse-data-in-audiences.md |
| /courses/data-insights-using-profiles-to-power-personalization/data-insights-course-4--activating-audiences | /academy/md/courses/data-insights-using-profiles-to-power-personalization/data-insights-course-4--activating-audiences.md |
| /courses/data-insights-using-profiles-to-power-personalization/data-insights-course-4--save-time-with-actions | /academy/md/courses/data-insights-using-profiles-to-power-personalization/data-insights-course-4--save-time-with-actions.md |
| /courses/data-insights-using-profiles-to-power-personalization/data-insights-course-4--unlock-insights-with-reports | /academy/md/courses/data-insights-using-profiles-to-power-personalization/data-insights-course-4--unlock-insights-with-reports.md |
| /courses/data-insights-using-profiles-to-power-personalization/data-insights-course-4--web-campaign-personalization-sdk | /academy/md/courses/data-insights-using-profiles-to-power-personalization/data-insights-course-4--web-campaign-personalization-sdk.md |
| /courses/data-insights-using-profiles-to-power-personalization/data-insights-course-4--streamline-campaigns-with-experiences | /academy/md/courses/data-insights-using-profiles-to-power-personalization/data-insights-course-4--streamline-campaigns-with-experiences.md |
| /courses/data-insights-using-profiles-to-power-personalization/data-insights-course-4--quiz | /academy/md/courses/data-insights-using-profiles-to-power-personalization/data-insights-course-4--quiz.md |

## Supplement for indexing

### Content summary

This course focuses on putting your unified customer profiles to work through sophisticated audience building and personalization capabilities. You'll learn to create dynamic, real-time udiences and deploy personalized e… This course focuses on putting your unified customer profiles to work through sophisticated audience building and personalization capabilities. You'll learn to create dynamic, real-time udiences and deploy personalized experiences across multiple channels. What You'll Learn This hands-on session teaches you to transform unified profiles into actionable marketing campaigns through: advanced audience segmentation cross-channel activation web personalization. You'll master the tools needed to deliver relevant, personalized experiences at scale. What We'll Cover We'll start with building sophisticated audiences using real-time computed attributes, including complex time-based logic for use cases like cart abandonment and rule sets with AND/OR logic for precise targeting. You'll learn how our audiences differ from traditional static lists by function

### Retrieval tags

- Contentstack Academy
- data-insights-using-profiles-to-power-personalization
- Building
- Audience
- Mechanics
- Leverage
- Warehouse
- Data
- Audiences
- Activating
- Save
- Time
- Actions
- Unlock

### Indexing notes

Chunk at each "### Lesson NN — Title" heading; copy lesson_id and topics from the preceding HTML comment into chunk metadata for RAG filters.
Course slug: data-insights-using-profiles-to-power-personalization. Union of lesson topic tokens: Building, Audience, Mechanics, Leverage, Warehouse, Data, Audiences, Activating, Save, Time, Actions, Unlock, Insights, Reports, Web, Campaign, Personalization, SDK, Streamline, Campaigns, Experiences, Using, Profiles, Quiz.
Do not embed or retrieve LMS-only quiz items or mastery exam answer keys from this export.

### Asset references

| Label | URL |
| --- | --- |
| Video thumbnail: Building an Audience | `https://cdn.jwplayer.com/v2/media/LVm9uAFn/poster.jpg?width=720` |
| Video thumbnail: Audience Mechanics | `https://cdn.jwplayer.com/v2/media/XqZ5gtQA/poster.jpg?width=720` |
| Video thumbnail: Leverage Warehouse Data in Audiences | `https://cdn.jwplayer.com/v2/media/ti1OfDR6/poster.jpg?width=720` |
| Video thumbnail: Activating Audiences | `https://cdn.jwplayer.com/v2/media/rczEmn3z/poster.jpg?width=720` |
| Video thumbnail: Save Time w/ Actions | `https://cdn.jwplayer.com/v2/media/mlweezyZ/poster.jpg?width=720` |
| Video thumbnail: Unlock Insights w/ Reports | `https://cdn.jwplayer.com/v2/media/oZ8MuLnl/poster.jpg?width=720` |
| Video thumbnail: Web Campaign Personalization SDK | `https://cdn.jwplayer.com/v2/media/TVahcmxA/poster.jpg?width=720` |
| Video thumbnail: Streamline Campaigns w/ Experiences | `https://cdn.jwplayer.com/v2/media/dRHImNo3/poster.jpg?width=720` |

### External links

| Label | URL |
| --- | --- |
| Contentstack Academy home | `https://www.contentstack.com/academy/` |
| Training instance setup | `https://www.contentstack.com/academy/training-instance` |
| Academy playground (GitHub) | `https://github.com/contentstack/contentstack-academy-playground` |
| Contentstack documentation | `https://www.contentstack.com/docs/` |
