# 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** | data-and-insights-practitioner-certification |
| **course_id** | data-insights-using-profiles-to-power-personalization |
| **slug** | data-insights-using-profiles-to-power-personalization |
| **version** | 2026-03-01 |
| **last_updated** | 2026-04-28 |
| **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** | data-and-insights-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-04-28T06:55:50.169Z |
| **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-03-01 |
| 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`

#### 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.

#### Subtitles (WebVTT)

```webvtt
WEBVTT

1
00:00:00.000 --> 00:00:18.000
Audience building in Lytx at the core is super easy.

2
00:00:18.000 --> 00:00:21.600
Just go into audiences, you'll see all of your existing audiences.

3
00:00:21.600 --> 00:00:25.600
Lytx comes pre-built with a number of audiences out of the box.

4
00:00:25.600 --> 00:00:29.600
So like if you expand it, you'll see things like anonymous profiles

5
00:00:29.600 --> 00:00:32.400
and highly engaged users and some of those kind of things.

6
00:00:32.400 --> 00:00:36.500
That's what you'll see in a brand new account on day one without doing anything.

7
00:00:36.500 --> 00:00:40.100
And then obviously you can go in here and create any number of custom audiences

8
00:00:40.100 --> 00:00:43.100
based on your data, based on your specific use cases.

9
00:00:43.100 --> 00:00:48.200
When you go into the audience builder, so when you go to build audiences,

10
00:00:48.200 --> 00:00:53.300
there's really only two things to keep in mind kind of at a high level.

11
00:00:53.300 --> 00:00:57.800
One, you can build Lytx audiences on existing audiences.

12
00:00:57.800 --> 00:01:00.900
So usually we'll call those building block audiences.

13
00:01:00.900 --> 00:01:05.600
You can think about a use case where, you know, maybe I have a consent audience

14
00:01:05.600 --> 00:01:08.900
or audience of high value users in the U.S.

15
00:01:08.900 --> 00:01:12.300
or audience of users who have an email address or whatever it may be.

16
00:01:12.300 --> 00:01:16.000
You don't want to redefine that logic every single time that you build a segment

17
00:01:16.000 --> 00:01:18.500
that uses, say, your consent rules.

18
00:01:18.500 --> 00:01:21.000
So you can go in here, build an audience,

19
00:01:21.000 --> 00:01:22.600
and then when you come to build a new audience,

20
00:01:22.600 --> 00:01:26.800
you can select essentially any of the existing audiences to include in that logic.

21
00:01:26.800 --> 00:01:30.900
So for instance, I can search for, say, like known email,

22
00:01:30.900 --> 00:01:33.000
which is one of our out-of-the-box audiences,

23
00:01:33.000 --> 00:01:36.800
click that, and it'll add that logic to your segment definition.

24
00:01:36.800 --> 00:01:39.400
And then you can stack additional rules and ands and ors

25
00:01:39.400 --> 00:01:40.700
and all that kind of stuff on top of it.

26
00:01:40.700 --> 00:01:46.300
So keep in mind that you can build audiences on top of other audiences.

27
00:01:46.300 --> 00:01:51.000
We try to keep the, like, the depth of those includes.

28
00:01:51.000 --> 00:01:54.000
Within reason, customers sometimes can do some crazy things

29
00:01:54.100 --> 00:01:57.000
and have, you know, an audience that includes an audience

30
00:01:57.000 --> 00:01:59.300
that includes an audience that includes an audience that includes an audience.

31
00:01:59.300 --> 00:02:02.000
And sometimes that makes the logic difficult to understand.

32
00:02:02.000 --> 00:02:07.400
So I wouldn't go terribly deep on those inclusions as a best practice,

33
00:02:07.400 --> 00:02:10.100
but there's not really any hard limitations.

34
00:02:10.100 --> 00:02:15.100
When you add either a rule, which we'll do here in a second, or an audience,

35
00:02:15.100 --> 00:02:18.300
you'll always be presented with included by default.

36
00:02:18.300 --> 00:02:20.300
You can toggle it to exclude.

37
00:02:20.300 --> 00:02:23.700
And then these counts on the right hand side are real time.

38
00:02:23.700 --> 00:02:27.400
The one thing to note about these counts is under the hood,

39
00:02:27.400 --> 00:02:29.800
this gets pulled from Elasticsearch.

40
00:02:29.800 --> 00:02:32.800
So sometimes, like, if you're doing live testing

41
00:02:32.800 --> 00:02:35.400
and pushing a profile in and then building an audience,

42
00:02:35.400 --> 00:02:39.000
these numbers will be slightly delayed compared to the profile view,

43
00:02:39.000 --> 00:02:43.400
which reads directly from the actual entity store in Bigtable.

44
00:02:43.400 --> 00:02:45.500
So just keep in mind that there's some caching,

45
00:02:45.500 --> 00:02:49.200
some delay in the actual calculation of these numbers

46
00:02:49.200 --> 00:02:53.000
while the data sort of makes its way to Elasticsearch and whatnot.

47
00:02:53.000 --> 00:02:55.400
It really only impacts you if you're, like I said,

48
00:02:55.400 --> 00:02:57.900
doing a thing in the UI to collect data

49
00:02:57.900 --> 00:03:00.300
and then going to build a segment and expect it to show one.

50
00:03:00.300 --> 00:03:03.900
It won't always show one right away or whatever that user number is.

51
00:03:03.900 --> 00:03:07.700
But for the most part, the counts are pretty close to real time.

52
00:03:07.700 --> 00:03:11.300
I think in my testing last week, it's like 10 to 15 minutes

53
00:03:11.300 --> 00:03:14.800
and all of the numbers in the audience query should be up to date.

54
00:03:14.800 --> 00:03:15.800
And then the other thing you can do,

55
00:03:15.800 --> 00:03:17.700
as long as there's users that come back in the audience,

56
00:03:17.700 --> 00:03:20.000
is you can sample recent users.

57
00:03:20.000 --> 00:03:23.200
So this will pull up a bunch of anonymous profiles

58
00:03:23.200 --> 00:03:24.100
because they don't have names yet,

59
00:03:24.100 --> 00:03:27.000
but you can click on one of these and actually go to explore the profile

60
00:03:27.000 --> 00:03:30.600
just as you're trying to sort of play with and understand the system.

61
00:03:30.600 --> 00:03:35.400
The segments at the core in the UI,

62
00:03:35.400 --> 00:03:39.100
at least I should say, are built up of rules and rule sets.

63
00:03:39.100 --> 00:03:42.300
So rule sets, just think about it as a group of rules,

64
00:03:42.300 --> 00:03:44.900
and then rules are the individual logic.

65
00:03:44.900 --> 00:03:46.800
We'll probably in a follow-up conversation,

66
00:03:46.800 --> 00:03:49.200
maybe go in under the hood how segments are built

67
00:03:49.200 --> 00:03:50.800
and touch on filter QL and some of that,

68
00:03:50.800 --> 00:03:56.100
which is like the code, the language, the query that the UI builds.

69
00:03:56.100 --> 00:04:00.300
But I think we'll save that for a more technical deep dive.

70
00:04:00.300 --> 00:04:04.500
But as an example, if I delete this rule, I can go,

71
00:04:04.500 --> 00:04:07.400
one thing I would ignore is this content affinity tab is legacy.

72
00:04:07.400 --> 00:04:10.300
You're going to open it and there's generally not going to be any content affinities.

73
00:04:10.300 --> 00:04:13.300
This thing's going away in the new builder because we don't use it anymore.

74
00:04:13.300 --> 00:04:17.200
So just as you see that sort of ignore and pretend that it's not there.

75
00:04:17.200 --> 00:04:19.200
The other thing to be aware of is the custom rules.

76
00:04:19.200 --> 00:04:22.700
So this is where all of the attributes that we have walked through how to add

77
00:04:22.700 --> 00:04:24.600
and change and manipulate and create on the profile,

78
00:04:24.600 --> 00:04:27.300
you can ultimately access them and build whatever logic you want.

79
00:04:27.300 --> 00:04:30.600
So if I wanted to, for instance, say like,

80
00:04:30.600 --> 00:04:36.900
you know, anybody that has had a page view ever, I could add that condition.

81
00:04:36.900 --> 00:04:40.500
And then you could add additional rules to the rule set.

82
00:04:40.500 --> 00:04:50.000
So like if I did email exists, these two rules in the UI are essentially linked together.

83
00:04:50.000 --> 00:04:54.900
So I can switch it and say I want it to be an or or an and pretty basic sort of stuff.

84
00:04:54.900 --> 00:04:57.400
I can include or exclude one of them.

85
00:04:57.400 --> 00:04:59.200
And then if I were to add another rule set,

86
00:04:59.200 --> 00:05:03.800
it's another group of rules that you can then and an or against that top set of rules.

87
00:05:03.800 --> 00:05:10.500
So if I did like score frequency is greater than 10.

88
00:05:10.500 --> 00:05:14.100
So now you have this rule set,

89
00:05:14.100 --> 00:05:18.600
which contains these two rules that have their sort of independent and or switcher.

90
00:05:18.600 --> 00:05:22.300
And then I can adjust the logic of this rule set.

91
00:05:22.300 --> 00:05:29.100
If I were to add another rule, say like score frequency is exists,

92
00:05:29.100 --> 00:05:30.600
whatever bad rule because they're the same ones.

93
00:05:30.600 --> 00:05:32.900
But so now these two things work together.

94
00:05:32.900 --> 00:05:34.000
These two things work together.

95
00:05:34.000 --> 00:05:36.400
And then you can toggle if you want to use both rules or whatever.

96
00:05:36.400 --> 00:05:40.200
So it's it's creating this big essentially like and or statement under the hood,

97
00:05:40.200 --> 00:05:45.500
which we can show, but just know that you have rule sets so that you can group logic together.

98
00:05:45.500 --> 00:05:52.000
And then you have rules which represent the individual rules to be applied.

99
00:05:52.000 --> 00:05:57.100
So then the other thing that I wanted to touch on that will definitely come up.

100
00:05:57.100 --> 00:06:02.500
Actually, there's two things. So one, you'll see the show unpopulated fields is automatically checked.

101
00:06:02.500 --> 00:06:06.300
So it should be on for everybody. If you happen to uncheck it,

102
00:06:06.300 --> 00:06:10.800
it's going to hide all of the fields that don't yet have user data on them.

103
00:06:10.800 --> 00:06:16.100
So like if I do this, it's going to hide a bunch of fields that maybe we haven't collected first name,

104
00:06:16.100 --> 00:06:18.200
last name stuff that doesn't have information yet.

105
00:06:18.200 --> 00:06:22.100
So almost always you're going to want to make sure that this is checked.

106
00:06:22.100 --> 00:06:26.000
It should be checked by default, but it's a total gotcha of like, I don't see my field. It's not there.

107
00:06:26.000 --> 00:06:31.400
How do I build a segment? It generally means that you don't have any users with data on that yet.

108
00:06:31.400 --> 00:06:33.900
And then more importantly, field info, which is sort of a background job,

109
00:06:33.900 --> 00:06:35.900
hasn't ran yet to update some of those stats.

110
00:06:35.900 --> 00:06:39.100
So just kind of a foot gun to always make sure that that's checked.

111
00:06:39.100 --> 00:06:42.300
It's going away in the new builder and it's just on.

112
00:06:42.300 --> 00:06:49.900
And then the other thing that is a little bit hairy, we'll say, is it's really, really powerful,

113
00:06:49.900 --> 00:06:54.800
but it's also a little bit confusing in the UI to use some of that date calculation logic.

114
00:06:54.800 --> 00:06:59.000
So if I choose a field first and foremost, that is a time field.

115
00:06:59.100 --> 00:07:03.700
So for instance, like event last time seen is a map of the event name

116
00:07:03.700 --> 00:07:07.900
and then the time stamp that you last saw it or the time stamp that you first saw it.

117
00:07:07.900 --> 00:07:12.600
So if I go in here, for example, and say I want to look at page view,

118
00:07:12.600 --> 00:07:18.800
it's going to bring up the sort of date math calculator for lack of a better term.

119
00:07:18.800 --> 00:07:22.300
And the first thing to notice, you can do it based on a relative date.

120
00:07:22.300 --> 00:07:25.600
So one that slides with you versus specific date.

121
00:07:25.600 --> 00:07:30.000
So if a specific date is I want to evaluate this on June 13th, 2025,

122
00:07:30.000 --> 00:07:32.000
I can do that and it does it one time.

123
00:07:32.000 --> 00:07:39.000
The relative date allows you to do things like I want to reevaluate this an hour in the future

124
00:07:39.000 --> 00:07:41.500
for every user based on that date.

125
00:07:41.500 --> 00:07:46.300
What I did, because this is always really complicated to explain,

126
00:07:46.300 --> 00:07:51.900
I built a picture to try and explain this, which I can share afterwards as well.

127
00:07:51.900 --> 00:07:57.200
But essentially, in this UI, if I go back here just real quick,

128
00:07:57.200 --> 00:08:02.600
so there's essentially the relative date and there's after, before, or exists.

129
00:08:02.600 --> 00:08:05.700
Exists is super easy in that it just evaluates that that key exists.

130
00:08:05.700 --> 00:08:07.900
It doesn't care about the time stamp as long as that key's there.

131
00:08:07.900 --> 00:08:13.000
So that's just sort of like a check of I've ever made a purchase as an example.

132
00:08:13.000 --> 00:08:17.000
But there's after and before and there's in the past and in the future.

133
00:08:17.000 --> 00:08:22.300
So this picture sort of breaks down that logic.

134
00:08:22.300 --> 00:08:26.200
So for instance, if I say, after one hour in the future,

135
00:08:26.200 --> 00:08:29.100
let's say it's 3 p.m. right now, the green,

136
00:08:29.100 --> 00:08:33.900
it's going to look at 4 p.m. for my time and then have any time after that,

137
00:08:33.900 --> 00:08:38.500
which probably doesn't have any use cases, but technically you could build it.

138
00:08:38.500 --> 00:08:42.600
After one hour in the past is going to look an hour in the past.

139
00:08:42.600 --> 00:08:48.000
So 2 p.m. in this case, and then look forward from there, essentially.

140
00:08:48.000 --> 00:08:52.300
The before one hour in the past is going to look an hour behind

141
00:08:52.300 --> 00:08:54.200
and then any time before that.

142
00:08:54.200 --> 00:08:58.300
And then before one hour in the future,

143
00:08:58.300 --> 00:09:00.500
goes in the future an hour and then looks backward.

144
00:09:00.500 --> 00:09:03.000
All of this is horrifically complicated.

145
00:09:03.000 --> 00:09:04.500
One of the things that we're working to do,

146
00:09:04.500 --> 00:09:06.500
which you'll see in some of like actions and that kind of thing,

147
00:09:06.500 --> 00:09:08.300
is like for cart abandonment,

148
00:09:08.300 --> 00:09:10.800
we want to pre-build a segment for you that says,

149
00:09:10.800 --> 00:09:14.800
okay, we wanted to pull in anybody that has abandoned a cart in the last 30 minutes

150
00:09:14.800 --> 00:09:16.800
and hasn't made a purchase in 24 hours,

151
00:09:16.800 --> 00:09:18.700
which is a super simple use case,

152
00:09:18.700 --> 00:09:21.500
really difficult to build with this particular logic.

153
00:09:21.500 --> 00:09:26.800
So you'll see it in the UI, know that this is one of the big focuses for us

154
00:09:26.800 --> 00:09:29.100
and one of the reasons that we're rebuilding the segment builder

155
00:09:29.100 --> 00:09:30.900
so that we can simplify a bunch of this logic

156
00:09:30.900 --> 00:09:34.300
and make it a little bit more human friendly.

157
00:09:34.300 --> 00:09:37.500
However, the power of it is super, super cool

158
00:09:37.500 --> 00:09:40.000
and that it can do sort of these forward date calculations

159
00:09:40.100 --> 00:09:42.700
to reevaluate in the future to see when you're in that segment

160
00:09:42.700 --> 00:09:46.100
or not in that segment versus relying on events to come into the stream.

```

```transcript
<!-- PLACEHOLDER: replace with real transcript before publish if cues were auto-derived from WebVTT -->
[00:00] Audience building in Lytx at the core is super easy.
[00:18] Just go into audiences, you'll see all of your existing audiences.
[00:21] Lytx comes pre-built with a number of audiences out of the box.
[00:25] So like if you expand it, you'll see things like anonymous profiles
[00:29] and highly engaged users and some of those kind of things.
[00:32] That's what you'll see in a brand new account on day one without doing anything.
[00:36] And then obviously you can go in here and create any number of custom audiences
[00:40] based on your data, based on your specific use cases.
[00:43] When you go into the audience builder, so when you go to build audiences,
[00:48] there's really only two things to keep in mind kind of at a high level.
[00:53] One, you can build Lytx audiences on existing audiences.
[00:57] So usually we'll call those building block audiences.
[01:00] You can think about a use case where, you know, maybe I have a consent audience
[01:05] or audience of high value users in the U.S.
[01:08] or audience of users who have an email address or whatever it may be.
[01:12] You don't want to redefine that logic every single time that you build a segment
[01:16] that uses, say, your consent rules.
[01:18] So you can go in here, build an audience,
[01:21] and then when you come to build a new audience,
[01:22] you can select essentially any of the existing audiences to include in that logic.
[01:26] So for instance, I can search for, say, like known email,
[01:30] which is one of our out-of-the-box audiences,
[01:33] click that, and it'll add that logic to your segment definition.
[01:36] And then you can stack additional rules and ands and ors
[01:39] and all that kind of stuff on top of it.
[01:40] So keep in mind that you can build audiences on top of other audiences.
[01:46] We try to keep the, like, the depth of those includes.
[01:51] Within reason, customers sometimes can do some crazy things
[01:54] and have, you know, an audience that includes an audience
[01:57] that includes an audience that includes an audience that includes an audience.
[01:59] And sometimes that makes the logic difficult to understand.
[02:02] So I wouldn't go terribly deep on those inclusions as a best practice,
[02:07] but there's not really any hard limitations.
[02:10] When you add either a rule, which we'll do here in a second, or an audience,
[02:15] you'll always be presented with included by default.
[02:18] You can toggle it to exclude.
[02:20] And then these counts on the right hand side are real time.
[02:23] The one thing to note about these counts is under the hood,
[02:27] this gets pulled from Elasticsearch.
[02:29] So sometimes, like, if you're doing live testing
[02:32] and pushing a profile in and then building an audience,
[02:35] these numbers will be slightly delayed compared to the profile view,
[02:39] which reads directly from the actual entity store in Bigtable.
[02:43] So just keep in mind that there's some caching,
[02:45] some delay in the actual calculation of these numbers
[02:49] while the data sort of makes its way to Elasticsearch and whatnot.
[02:53] It really only impacts you if you're, like I said,
[02:55] doing a thing in the UI to collect data
[02:57] and then going to build a segment and expect it to show one.
[03:00] It won't always show one right away or whatever that user number is.
[03:03] But for the most part, the counts are pretty close to real time.
[03:07] I think in my testing last week, it's like 10 to 15 minutes
[03:11] and all of the numbers in the audience query should be up to date.
[03:14] And then the other thing you can do,
[03:15] as long as there's users that come back in the audience,
[03:17] is you can sample recent users.
[03:20] So this will pull up a bunch of anonymous profiles
[03:23] because they don't have names yet,
[03:24] but you can click on one of these and actually go to explore the profile
[03:27] just as you're trying to sort of play with and understand the system.
```

#### 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`

#### 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.

#### Subtitles (WebVTT)

```webvtt
WEBVTT

1
00:00:00.000 --> 00:00:19.100
So, that's the basics of segment building.

2
00:00:19.100 --> 00:00:22.680
The only other thing I guess to touch on, we've touched on this a few different times,

3
00:00:22.680 --> 00:00:27.160
but we think of audiences very different than most marketing platforms and that most marketing

4
00:00:27.160 --> 00:00:31.140
platforms are building an audience, that audience is static, I'm going to sync it to my email

5
00:00:31.140 --> 00:00:34.760
tool and we're going to send one email blast to that audience.

6
00:00:34.760 --> 00:00:39.080
Linux audiences, or segments as we call them in the API, are living and breathing, they're

7
00:00:39.080 --> 00:00:43.880
actually far closer to like a computed attribute, or I present them as facts on the profile

8
00:00:43.880 --> 00:00:45.400
more times than not.

9
00:00:45.400 --> 00:00:51.880
So you're creating a set of rules to evaluate each time that event comes in, and then you're

10
00:00:51.880 --> 00:00:55.160
surfacing the result of that on every single individual profile.

11
00:00:55.160 --> 00:00:59.160
So instead of just having this list of people, you actually have this fact whether I am in

12
00:00:59.160 --> 00:01:04.600
or not in a segment on every single user's profile, like a computed attribute.

13
00:01:04.600 --> 00:01:09.360
It's one of the things we, like, that's one very unique difference of our segments is

14
00:01:09.360 --> 00:01:15.320
they're fundamentally the kind of basis of how you can trigger actions, right, entering

15
00:01:15.320 --> 00:01:18.400
into a segment, exiting a segment, updating a profile.

16
00:01:18.400 --> 00:01:23.600
So they're much more living, breathing, calculated in real time, not this like fixed static thing

17
00:01:23.600 --> 00:01:26.720
that doesn't change that you push to a tool, then you forget about it.

```

```transcript
<!-- PLACEHOLDER: replace with real transcript before publish if cues were auto-derived from WebVTT -->
[00:00] So, that's the basics of segment building.
[00:19] The only other thing I guess to touch on, we've touched on this a few different times,
[00:22] but we think of audiences very different than most marketing platforms and that most marketing
[00:27] platforms are building an audience, that audience is static, I'm going to sync it to my email
[00:31] tool and we're going to send one email blast to that audience.
[00:34] Linux audiences, or segments as we call them in the API, are living and breathing, they're
[00:39] actually far closer to like a computed attribute, or I present them as facts on the profile
[00:43] more times than not.
[00:45] So you're creating a set of rules to evaluate each time that event comes in, and then you're
[00:51] surfacing the result of that on every single individual profile.
[00:55] So instead of just having this list of people, you actually have this fact whether I am in
[00:59] or not in a segment on every single user's profile, like a computed attribute.
[01:04] It's one of the things we, like, that's one very unique difference of our segments is
[01:09] they're fundamentally the kind of basis of how you can trigger actions, right, entering
[01:15] into a segment, exiting a segment, updating a profile.
[01:18] So they're much more living, breathing, calculated in real time, not this like fixed static thing
[01:23] 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`

#### 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.

#### Subtitles (WebVTT)

```webvtt
WEBVTT

1
00:00:00.000 --> 00:00:20.000
Cloud Connect audiences or audiences that are built on Cloud Connect data,

2
00:00:20.000 --> 00:00:21.440
all of your rules,

3
00:00:21.440 --> 00:00:24.200
all of your Cloud Connect attributes are going to be under custom rules.

4
00:00:24.200 --> 00:00:28.040
They just get prefixed with CC underscore under the hood.

5
00:00:28.040 --> 00:00:31.880
So the other day when we were meeting and we went through and pulled that big query data in

6
00:00:31.880 --> 00:00:35.480
to create the first name, last name, and pull in the annual revenue,

7
00:00:35.480 --> 00:00:38.040
all of that data lives and exists on the profiles.

8
00:00:38.040 --> 00:00:40.680
It functions just like a normal attribute.

9
00:00:40.680 --> 00:00:43.000
So this is where you would then go and build an audience.

10
00:00:43.000 --> 00:00:47.080
You can combine them with the sort of standard streamed attributes versus the Cloud Connect ones.

```

```transcript
<!-- PLACEHOLDER: replace with real transcript before publish if cues were auto-derived from WebVTT -->
[00:00] Cloud Connect audiences or audiences that are built on Cloud Connect data,
[00:20] all of your rules,
[00:21] all of your Cloud Connect attributes are going to be under custom rules.
[00:24] They just get prefixed with CC underscore under the hood.
[00:28] So the other day when we were meeting and we went through and pulled that big query data in
[00:31] to create the first name, last name, and pull in the annual revenue,
[00:35] all of that data lives and exists on the profiles.
[00:38] It functions just like a normal attribute.
[00:40] So this is where you would then go and build an audience.
[00:43] 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`

#### 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.

#### Subtitles (WebVTT)

```webvtt
WEBVTT

1
00:00:00.000 --> 00:00:18.640
So from there, we won't touch too much on this

2
00:00:18.640 --> 00:00:20.720
because we've covered a lot, but one of the things

3
00:00:20.720 --> 00:00:22.760
obviously you can do with a segment is export it.

4
00:00:22.760 --> 00:00:25.040
So if I go into any of my segments like this No6Sense

5
00:00:25.040 --> 00:00:26.620
data, I can hit Export.

6
00:00:26.620 --> 00:00:28.920
It's going to pull up all the different export channels

7
00:00:28.920 --> 00:00:30.100
that we support.

8
00:00:30.100 --> 00:00:31.840
You can push it to MailChimp, to a Webhook,

9
00:00:31.840 --> 00:00:34.600
to Adobe, to anywhere on the planet,

10
00:00:34.600 --> 00:00:36.400
essentially, that you want to push to.

11
00:00:36.400 --> 00:00:39.040
And it's going to push those members to it.

12
00:00:39.040 --> 00:00:40.680
Most of the exports have the option

13
00:00:40.680 --> 00:00:42.600
to backfill, like Eric was just talking about,

14
00:00:42.600 --> 00:00:46.600
to where you can sync all of the users that are currently in it.

15
00:00:46.600 --> 00:00:49.000
Or if you just want all of the new members that join it,

16
00:00:49.000 --> 00:00:51.760
that's usually an option in most of the exports as well.

17
00:00:51.760 --> 00:00:54.560
I think we've covered imports and exports

18
00:00:54.600 --> 00:00:58.160
in pretty decent length, so we won't spend too much time

19
00:00:58.160 --> 00:00:59.720
there.

```

```transcript
<!-- PLACEHOLDER: replace with real transcript before publish if cues were auto-derived from WebVTT -->
[00:00] So from there, we won't touch too much on this
[00:18] because we've covered a lot, but one of the things
[00:20] obviously you can do with a segment is export it.
[00:22] So if I go into any of my segments like this No6Sense
[00:25] data, I can hit Export.
[00:26] It's going to pull up all the different export channels
[00:28] that we support.
[00:30] You can push it to MailChimp, to a Webhook,
[00:31] to Adobe, to anywhere on the planet,
[00:34] essentially, that you want to push to.
[00:36] And it's going to push those members to it.
[00:39] Most of the exports have the option
[00:40] to backfill, like Eric was just talking about,
[00:42] to where you can sync all of the users that are currently in it.
[00:46] Or if you just want all of the new members that join it,
[00:49] that's usually an option in most of the exports as well.
[00:51] I think we've covered imports and exports
[00:54] in pretty decent length, so we won't spend too much time
[00:58] 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`

#### 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.

#### Subtitles (WebVTT)

```webvtt
WEBVTT

1
00:00:00.000 --> 00:00:21.000
Actions, what they allow you to do is essentially has a pre-built template that you basically

2
00:00:21.000 --> 00:00:22.000
fill in the blanks.

3
00:00:22.000 --> 00:00:25.600
So if I wanted to go and build an abandoned cart, we have a template.

4
00:00:25.600 --> 00:00:27.000
It asks you the questions.

5
00:00:27.000 --> 00:00:29.760
So I want to use event last timestamp.

6
00:00:29.760 --> 00:00:30.760
Use the cart event name.

7
00:00:30.760 --> 00:00:32.040
We recommend cart add.

8
00:00:32.040 --> 00:00:34.920
You say cart add, purchase.

9
00:00:34.920 --> 00:00:36.400
We recommend purchase.

10
00:00:36.400 --> 00:00:37.720
You can choose those windows.

11
00:00:37.720 --> 00:00:41.080
So how long do you want to wait before you assume that they've abandoned their cart?

12
00:00:41.080 --> 00:00:43.980
How long do you want to wait until they have sort of that window of purchase before you

13
00:00:43.980 --> 00:00:44.980
reset them?

14
00:00:44.980 --> 00:00:46.260
And then you can name it.

15
00:00:46.260 --> 00:00:50.280
You create the audience and it does all of that logic for you under the hood.

16
00:00:50.280 --> 00:00:51.280
It creates the rule.

17
00:00:51.280 --> 00:00:54.000
It sets up all of that kind of stuff sort of like just in a few clicks.

18
00:00:54.000 --> 00:00:58.400
So we're trying to make big steps to making things easier and easier and kind of more

19
00:00:58.400 --> 00:01:04.760
prepackaged but also still have support for the complexity and the value that the CDP

20
00:01:04.760 --> 00:01:07.400
can offer to an enterprise customer that wants to define everything on their own.

```

```transcript
<!-- PLACEHOLDER: replace with real transcript before publish if cues were auto-derived from WebVTT -->
[00:00] Actions, what they allow you to do is essentially has a pre-built template that you basically
[00:21] fill in the blanks.
[00:22] So if I wanted to go and build an abandoned cart, we have a template.
[00:25] It asks you the questions.
[00:27] So I want to use event last timestamp.
[00:29] Use the cart event name.
[00:30] We recommend cart add.
[00:32] You say cart add, purchase.
[00:34] We recommend purchase.
[00:36] You can choose those windows.
[00:37] So how long do you want to wait before you assume that they've abandoned their cart?
[00:41] How long do you want to wait until they have sort of that window of purchase before you
[00:43] reset them?
[00:44] And then you can name it.
[00:46] You create the audience and it does all of that logic for you under the hood.
[00:50] It creates the rule.
[00:51] It sets up all of that kind of stuff sort of like just in a few clicks.
[00:54] So we're trying to make big steps to making things easier and easier and kind of more
[00:58] prepackaged but also still have support for the complexity and the value that the CDP
[01:04] 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`

#### 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.

#### Subtitles (WebVTT)

```webvtt
WEBVTT

1
00:00:00.000 --> 00:00:19.480
So, reports sounds simple.

2
00:00:19.480 --> 00:00:24.240
I would say that our reports are very different than sort of a traditional analytics tool.

3
00:00:24.240 --> 00:00:27.540
We're not like a Google Analytics where you're going to go in here and it's the best place

4
00:00:27.540 --> 00:00:32.240
to see page views and, you know, click paths and some of that kind of stuff.

5
00:00:32.240 --> 00:00:35.660
You can get at some of that data, but we're not an analytics tool.

6
00:00:35.660 --> 00:00:39.500
We're really more of an insight and personalization tool.

7
00:00:39.500 --> 00:00:45.860
So what our reports focus on are helping you uncover sort of new facts, new aspects, new

8
00:00:45.860 --> 00:00:50.460
information about users, the relationship between audiences, the things that they're

9
00:00:50.460 --> 00:00:56.260
interested in, that sort of stuff, far less about like how many pages have they viewed

10
00:00:56.260 --> 00:00:58.820
and how many sessions have they had, and like that stuff's still there, but it's not

11
00:00:58.820 --> 00:01:00.980
necessarily the core goal.

12
00:01:00.980 --> 00:01:06.340
So we'll go in and we'll create a report, and then I will show you a report that we

13
00:01:06.340 --> 00:01:09.680
built with Actions that shows a little bit more information.

14
00:01:09.680 --> 00:01:12.220
To create a report, it's super easy.

15
00:01:12.220 --> 00:01:13.700
You just go create a report.

16
00:01:13.700 --> 00:01:16.700
We only have one type right now, which is a custom report.

17
00:01:16.700 --> 00:01:19.140
Just name it demo.

18
00:01:19.140 --> 00:01:22.900
There are some controls around like privacy and sharing, so if you want to create a report

19
00:01:22.900 --> 00:01:25.940
only for your boss and share it with them, that stuff is kind of built in.

20
00:01:25.940 --> 00:01:27.460
We won't do that for now.

21
00:01:27.460 --> 00:01:32.660
We'll just create a new empty report, and you're presented with this blank screen.

22
00:01:32.660 --> 00:01:38.740
Reports are built of components, and we have four different types of components supported today.

23
00:01:38.740 --> 00:01:44.380
We'll show each of these other than Dataflow because it's off temporarily due to some

24
00:01:44.380 --> 00:01:52.420
technical challenges, but composition essentially allows you to understand and compare how your

25
00:01:52.420 --> 00:01:56.900
audience is composed, so you're able to go in, for instance, and say I want to create

26
00:01:56.900 --> 00:02:02.820
a composition report, and we'll just say we'll call it interest overview as an example.

27
00:02:02.820 --> 00:02:06.340
I can then go in here and say pick any number of audiences.

28
00:02:06.340 --> 00:02:10.620
I think it's limited to three or four right now, so we'll just choose all for demo purposes,

29
00:02:10.620 --> 00:02:14.540
but you could choose multiple audiences if you want to compare two audiences to each

30
00:02:14.540 --> 00:02:20.340
other, and then you can choose any of the fields to understand the distribution of values

31
00:02:20.340 --> 00:02:24.580
across those segments, across the users in those segments.

32
00:02:24.580 --> 00:02:29.620
One of my favorite things to demo is if you go to Linux content, which is the content

33
00:02:29.620 --> 00:02:34.900
scores, the interest scores, you can build a component on that, and what it's going to

34
00:02:34.900 --> 00:02:39.060
do is it's going to break down, obviously for Petsy, sandbox site, ignore the sort of

35
00:02:39.060 --> 00:02:44.300
like usefulness of the topics, but for Petsy, it's going to break down the top interest

36
00:02:44.300 --> 00:02:49.860
topics, the top interests essentially for each of those audiences, so in the case of

37
00:02:49.860 --> 00:02:53.580
the all audience, you can see that more people are interested in dogs than outdoors than

38
00:02:53.580 --> 00:02:58.420
parks than bulldogs and Frenchies, whatever, so again, ignore the data, it's arbitrary

39
00:02:58.420 --> 00:03:04.180
sort of test data, but you can think about somebody like a big customer could use this

40
00:03:04.180 --> 00:03:08.740
and understand not just interests across their core audience, but you can understand how

41
00:03:08.740 --> 00:03:13.900
interests are different between, you know, multi-purchasers versus new users who have

42
00:03:13.900 --> 00:03:18.100
never made a purchase, and then you can uncover maybe the overlap in topics and interests

43
00:03:18.100 --> 00:03:22.300
that help sort of engage them and get them to make their first purchase.

44
00:03:22.300 --> 00:03:24.900
That's one of the ways that you can use composition.

45
00:03:24.900 --> 00:03:28.460
You can do this with any of the fields, but the reason that I always demo the content

46
00:03:28.460 --> 00:03:31.460
is you can actually take it a step farther.

47
00:03:31.460 --> 00:03:44.100
If I build another component, we will just say interest, we'll just do the all audience

48
00:03:44.100 --> 00:03:48.700
for demo purposes, we'll do Linux content again, but if you notice, it also asks for

49
00:03:48.700 --> 00:03:54.100
an optional subfield, so if I go in here and put in dog, you can pull in essentially the

50
00:03:54.100 --> 00:03:59.740
distribution of scores for any of your topics in this case, so I can see that a lot of people

51
00:03:59.740 --> 00:04:03.860
are interested in dogs, but are those people just a little bit interested or are they super

52
00:04:03.860 --> 00:04:07.220
interested, and if they're super interested, maybe you want to target this cohort of people

53
00:04:07.220 --> 00:04:13.140
who are heavily interested in dogs with new dog products or whatever, so if I do the distribution

54
00:04:13.140 --> 00:04:19.860
on that particular topic and save it, it's going to not just show the breakdown of the

55
00:04:19.860 --> 00:04:23.820
top interest for the audience, it's going to actually show, and again, demo accounts,

56
00:04:23.820 --> 00:04:28.780
so ignore the weird data, but it's going to show the distribution of specific interest

57
00:04:28.780 --> 00:04:33.220
scores for that particular topic across those audiences, so you can then determine if they're

58
00:04:33.220 --> 00:04:34.500
high or low.

59
00:04:34.500 --> 00:04:41.020
You can do the same kind of a thing, but anyway, you get the idea, so it's super useful in

60
00:04:41.220 --> 00:04:44.140
looking at source, where they came from, it's going to show you a distribution of those

61
00:04:44.140 --> 00:04:45.220
values.

62
00:04:45.220 --> 00:04:49.540
If you have actual user data, you can do by location and understand, are the people in

63
00:04:49.540 --> 00:04:56.540
the US have different levels of interest than some other key origins, so composition to

64
00:04:56.540 --> 00:05:00.700
me are one of the most useful types of score or types of report because it allows you to

65
00:05:00.700 --> 00:05:07.300
really understand how the values for that particular field are distributed across users

66
00:05:07.300 --> 00:05:10.860
for a particular audience, it allows you to really drill in and dive.

67
00:05:10.860 --> 00:05:15.260
The other ones are pretty straightforward as well, so there's a size component, so if

68
00:05:15.260 --> 00:05:21.460
you just wanted to compare the size of, say, the all audience and the whatever frequent

69
00:05:21.460 --> 00:05:26.980
users audience, you can save that, and it's going to give you a breakdown of the sizes,

70
00:05:26.980 --> 00:05:32.300
there's a few different ways to sort of visualize this, it could be stacked, you can do hiding

71
00:05:32.300 --> 00:05:36.980
the trend lines, you can visualize by just numbers, so there's lots of different ways

72
00:05:36.980 --> 00:05:41.780
you can build your own dashboards to analyze the size and the growth and the movement.

73
00:05:41.780 --> 00:05:47.140
I'll show you a more pretty sort of built report, but that's what size does, it allows

74
00:05:47.140 --> 00:05:53.860
you to compare the size over time along with the size compared to other audiences.

75
00:05:53.860 --> 00:05:58.580
Audience overlap allows you to see how much the audience membership for one or more audiences

76
00:05:58.580 --> 00:06:00.660
overlaps with each other.

77
00:06:00.660 --> 00:06:16.060
So if we do like all and known, this is going to be a very silly example, but you can, so

78
00:06:16.060 --> 00:06:22.460
how much the known users overlap with the all audience overlap with the known users,

79
00:06:22.460 --> 00:06:25.980
and some of the overlap, like this is overlaps in the actual chart, but there's no user,

80
00:06:25.980 --> 00:06:31.500
so builds a Venn diagram that shows you the overlap, and then the cool part about all

81
00:06:31.500 --> 00:06:35.100
of these, maybe the most powerful part about all these reports that's different than a

82
00:06:35.100 --> 00:06:40.020
traditional analytics tool, is you can actually go into these, and you'll notice how it calls

83
00:06:40.020 --> 00:06:44.060
out the users and has a little curvy arrow, it'll actually take me into the segment builder

84
00:06:44.060 --> 00:06:49.180
to build an audience of the users that match that criteria, so for instance, if I wanted

85
00:06:49.180 --> 00:06:53.940
to go in here and just build a cohort, an audience of the users that are both known

86
00:06:53.940 --> 00:06:57.540
and in the all audience, again, silly example, because everybody's going to be in the all

87
00:06:57.540 --> 00:07:02.580
audience, I can click it, it takes me into the segment builder, and it pre-populates

88
00:07:02.580 --> 00:07:07.260
the rule that selects that specific group of people, so that you can then target them

89
00:07:07.260 --> 00:07:10.260
with emails with whatever it may be.

90
00:07:10.260 --> 00:07:15.340
Most analytics tools allow you to sort of get insights, activating those insights down

91
00:07:15.340 --> 00:07:20.180
to the individual user is extraordinarily difficult, you'd have to either export things

92
00:07:20.220 --> 00:07:26.060
or go look at your warehouse, or Google Analytics can't do it at all, so that's where we differentiate

93
00:07:26.060 --> 00:07:30.100
heavily from a traditional analytics tool, it's not so much about just like getting numbers

94
00:07:30.100 --> 00:07:35.540
to report on, it's getting insights and then being able to activate those insights at the

95
00:07:35.540 --> 00:07:40.780
individual human being level, all sort of in real time.

96
00:07:40.780 --> 00:07:45.660
Real quick to look at a not terrible, sort of like hacked together report, one of the

97
00:07:45.660 --> 00:07:51.580
actions that we've created builds an audience comparison report, so you choose any number

98
00:07:51.580 --> 00:07:55.660
of audiences, in this case, I just wanted to compare the 30 day profiles to anonymous

99
00:07:55.660 --> 00:08:00.340
profiles, the first anonymous profiles that are more than 60 days, and see how they evolve

100
00:08:00.340 --> 00:08:06.140
and change, this is how you can sort of visualize the size over time, this is the breakdown

101
00:08:06.140 --> 00:08:13.180
of the interests across those audiences, this is the overlap, and then the bottom ones are

102
00:08:13.180 --> 00:08:17.980
essentially a distribution of all of our behavioral scores, so you can see not just

103
00:08:17.980 --> 00:08:23.140
which scores are in those audiences, but how high or low particular scores are across those

104
00:08:23.140 --> 00:08:27.660
three audiences and compare them sort of in a stacked chart, so lots of ways that you

105
00:08:27.660 --> 00:08:32.540
can start to compare information, uncover insights or sort of like little facts that

106
00:08:32.540 --> 00:08:36.860
you can then build an audience on and activate, for instance, you know, a lot of these audience

107
00:08:36.860 --> 00:08:40.020
members are interested in dogs, but the interest are low, so maybe we don't want to target

108
00:08:40.020 --> 00:08:44.340
them with a campaign, we want to do something else that has a higher sort of per capita interest.

```

```transcript
<!-- PLACEHOLDER: replace with real transcript before publish if cues were auto-derived from WebVTT -->
[00:00] So, reports sounds simple.
[00:19] I would say that our reports are very different than sort of a traditional analytics tool.
[00:24] We're not like a Google Analytics where you're going to go in here and it's the best place
[00:27] to see page views and, you know, click paths and some of that kind of stuff.
[00:32] You can get at some of that data, but we're not an analytics tool.
[00:35] We're really more of an insight and personalization tool.
[00:39] So what our reports focus on are helping you uncover sort of new facts, new aspects, new
[00:45] information about users, the relationship between audiences, the things that they're
[00:50] interested in, that sort of stuff, far less about like how many pages have they viewed
[00:56] and how many sessions have they had, and like that stuff's still there, but it's not
[00:58] necessarily the core goal.
[01:00] So we'll go in and we'll create a report, and then I will show you a report that we
[01:06] built with Actions that shows a little bit more information.
[01:09] To create a report, it's super easy.
[01:12] You just go create a report.
[01:13] We only have one type right now, which is a custom report.
[01:16] Just name it demo.
[01:19] There are some controls around like privacy and sharing, so if you want to create a report
[01:22] only for your boss and share it with them, that stuff is kind of built in.
[01:25] We won't do that for now.
[01:27] We'll just create a new empty report, and you're presented with this blank screen.
[01:32] Reports are built of components, and we have four different types of components supported today.
[01:38] We'll show each of these other than Dataflow because it's off temporarily due to some
[01:44] technical challenges, but composition essentially allows you to understand and compare how your
[01:52] audience is composed, so you're able to go in, for instance, and say I want to create
[01:56] a composition report, and we'll just say we'll call it interest overview as an example.
[02:02] I can then go in here and say pick any number of audiences.
[02:06] I think it's limited to three or four right now, so we'll just choose all for demo purposes,
[02:10] but you could choose multiple audiences if you want to compare two audiences to each
[02:14] other, and then you can choose any of the fields to understand the distribution of values
[02:20] across those segments, across the users in those segments.
[02:24] One of my favorite things to demo is if you go to Linux content, which is the content
[02:29] scores, the interest scores, you can build a component on that, and what it's going to
[02:34] do is it's going to break down, obviously for Petsy, sandbox site, ignore the sort of
[02:39] like usefulness of the topics, but for Petsy, it's going to break down the top interest
[02:44] topics, the top interests essentially for each of those audiences, so in the case of
[02:49] the all audience, you can see that more people are interested in dogs than outdoors than
[02:53] parks than bulldogs and Frenchies, whatever, so again, ignore the data, it's arbitrary
[02:58] sort of test data, but you can think about somebody like a big customer could use this
[03:04] and understand not just interests across their core audience, but you can understand how
[03:08] interests are different between, you know, multi-purchasers versus new users who have
[03:13] never made a purchase, and then you can uncover maybe the overlap in topics and interests
[03:18] that help sort of engage them and get them to make their first purchase.
[03:22] That's one of the ways that you can use composition.
[03:24] You can do this with any of the fields, but the reason that I always demo the content
[03:28] is you can actually take it a step farther.
[03:31] If I build another component, we will just say interest, we'll just do the all audience
[03:44] for demo purposes, we'll do Linux content again, but if you notice, it also asks for
[03:48] an optional subfield, so if I go in here and put in dog, you can pull in essentially the
[03:54] distribution of scores for any of your topics in this case, so I can see that a lot of people
[03:59] are interested in dogs, but are those people just a little bit interested or are they super
[04:03] interested, and if they're super interested, maybe you want to target this cohort of people
[04:07] who are heavily interested in dogs with new dog products or whatever, so if I do the distribution
[04:13] on that particular topic and save it, it's going to not just show the breakdown of the
[04:19] top interest for the audience, it's going to actually show, and again, demo accounts,
[04:23] so ignore the weird data, but it's going to show the distribution of specific interest
[04:28] scores for that particular topic across those audiences, so you can then determine if they're
[04:33] high or low.
[04:34] You can do the same kind of a thing, but anyway, you get the idea, so it's super useful in
[04:41] looking at source, where they came from, it's going to show you a distribution of those
```

#### 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`

#### 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.

#### Subtitles (WebVTT)

```webvtt
WEBVTT

1
00:00:00.000 --> 00:00:23.740
Here's what in our UI we call experiences, the SDK under the hood that powers them is

2
00:00:23.740 --> 00:00:25.920
called Pathfora.

3
00:00:25.920 --> 00:00:30.600
And then in WordPress and Drupal, they're called widgets.

4
00:00:30.600 --> 00:00:34.160
It's all fundamentally the same technology, what it allows you to do.

5
00:00:34.160 --> 00:00:38.920
So it's built on the back of our web personalization SDK, which I'm not sure if anybody has seen

6
00:00:38.920 --> 00:00:39.960
this and played with it.

7
00:00:39.960 --> 00:00:45.880
But Pathfora is just like a pure JavaScript SDK that allows you to surface campaigns on

8
00:00:45.880 --> 00:00:47.880
the site super easily.

9
00:00:47.880 --> 00:00:50.760
So you don't have to actually go into the source code and create a bunch of things and

10
00:00:50.760 --> 00:00:52.200
it doesn't require a huge lift.

11
00:00:52.200 --> 00:00:57.200
It is without a doubt one of our most popular features because of the ease of use.

12
00:00:57.200 --> 00:01:01.840
It allows you to do things like you've seen probably a dozen times as I've demoed Petsy.

13
00:01:01.840 --> 00:01:06.400
This little lead capture in the bottom left corner is powered by Pathfora.

14
00:01:06.400 --> 00:01:09.440
So it's just like layered on top.

15
00:01:09.440 --> 00:01:13.720
This one is on every single page view, but how you would use it is you would only show

16
00:01:13.720 --> 00:01:17.600
that lead capture to users that are unknown, right, as a proxy to sort of gather their

17
00:01:17.600 --> 00:01:18.880
email address.

18
00:01:18.880 --> 00:01:23.120
It automatically collects inside of Linux when you actually submit those forms and whatnot.

19
00:01:23.120 --> 00:01:28.000
So this is one of the things that's powered by Pathfora, but Pathfora can do a lot of

20
00:01:28.000 --> 00:01:29.000
different things.

21
00:01:29.000 --> 00:01:35.440
So there's examples on here that we can kind of run through depending on time, but you

22
00:01:35.440 --> 00:01:38.760
essentially can like surface a modal in the middle of the screen and you can customize

23
00:01:38.760 --> 00:01:42.720
the styling and all that kind of stuff to your sort of heart's content.

24
00:01:42.720 --> 00:01:47.280
The examples on this demo site are pretty sort of like default.

25
00:01:47.280 --> 00:01:53.280
The modal is, so there's basically there's messages, there's forms, there's subscriptions

26
00:01:53.280 --> 00:01:54.720
and there's gates.

27
00:01:54.720 --> 00:01:59.280
The message is just being able to surface a message on the screen.

28
00:01:59.280 --> 00:02:01.920
You can do a bunch of different layouts.

29
00:02:01.920 --> 00:02:03.520
There's the modal in the front.

30
00:02:03.520 --> 00:02:05.080
There's the slide out in the bottom left.

31
00:02:05.080 --> 00:02:07.960
There's this sort of bar at the top, buttons.

32
00:02:07.960 --> 00:02:13.160
You can even do inline where Pathfora goes and replaces or injects it into an HTML element

33
00:02:13.160 --> 00:02:17.040
like a class selector that you choose.

34
00:02:17.560 --> 00:02:22.760
The, without a doubt, the most popular are messages because it allows you to do a sort

35
00:02:22.760 --> 00:02:25.720
of promotion or forms, which are essentially lead capture.

36
00:02:25.720 --> 00:02:30.320
So as an end customer, I can go in here and we'll walk through some examples and it'll

37
00:02:30.320 --> 00:02:34.920
make a little bit more sense, but Linux automatically installs and loads Pathfora for you.

38
00:02:34.920 --> 00:02:39.440
And then if I were to go, for instance, to Petsy and just copy this configuration, which

39
00:02:39.440 --> 00:02:43.720
is just a simple form, it's going to say, sign up as my headline.

40
00:02:43.720 --> 00:02:46.760
The message is going to be submit this form and it's just going to use the default fields.

41
00:02:46.760 --> 00:02:51.560
You can customize all the fields, build your own form, whatever you want to do.

42
00:02:51.560 --> 00:02:57.360
But just as an example, like if I close this, open my console and paste that.

43
00:02:57.360 --> 00:03:02.520
So we do a lot of this stuff automatically, but you can go in and just do it with JavaScript,

44
00:03:02.520 --> 00:03:04.560
use Pathfora, trigger this modal.

45
00:03:04.560 --> 00:03:08.640
And then if I were to fill in this information and submit it, it's already kind of pre-wired

46
00:03:08.640 --> 00:03:10.360
to collect into Linux.

47
00:03:10.360 --> 00:03:12.600
So it's going to handle the jstag.send call for you.

48
00:03:12.600 --> 00:03:15.160
It's going to send the email, the name, all that stuff.

49
00:03:15.160 --> 00:03:17.840
It's already pre-mapped in the common schema.

50
00:03:17.840 --> 00:03:23.000
So it makes collecting data and doing things like lead captures super, super simple.

```

```transcript
<!-- PLACEHOLDER: replace with real transcript before publish if cues were auto-derived from WebVTT -->
[00:00] Here's what in our UI we call experiences, the SDK under the hood that powers them is
[00:23] called Pathfora.
[00:25] And then in WordPress and Drupal, they're called widgets.
[00:30] It's all fundamentally the same technology, what it allows you to do.
[00:34] So it's built on the back of our web personalization SDK, which I'm not sure if anybody has seen
[00:38] this and played with it.
[00:39] But Pathfora is just like a pure JavaScript SDK that allows you to surface campaigns on
[00:45] the site super easily.
[00:47] So you don't have to actually go into the source code and create a bunch of things and
[00:50] it doesn't require a huge lift.
[00:52] It is without a doubt one of our most popular features because of the ease of use.
[00:57] It allows you to do things like you've seen probably a dozen times as I've demoed Petsy.
[01:01] This little lead capture in the bottom left corner is powered by Pathfora.
[01:06] So it's just like layered on top.
[01:09] This one is on every single page view, but how you would use it is you would only show
[01:13] that lead capture to users that are unknown, right, as a proxy to sort of gather their
[01:17] email address.
[01:18] It automatically collects inside of Linux when you actually submit those forms and whatnot.
[01:23] So this is one of the things that's powered by Pathfora, but Pathfora can do a lot of
[01:28] different things.
[01:29] So there's examples on here that we can kind of run through depending on time, but you
[01:35] essentially can like surface a modal in the middle of the screen and you can customize
[01:38] the styling and all that kind of stuff to your sort of heart's content.
[01:42] The examples on this demo site are pretty sort of like default.
[01:47] The modal is, so there's basically there's messages, there's forms, there's subscriptions
[01:53] and there's gates.
[01:54] The message is just being able to surface a message on the screen.
[01:59] You can do a bunch of different layouts.
[02:01] There's the modal in the front.
[02:03] There's the slide out in the bottom left.
[02:05] There's this sort of bar at the top, buttons.
[02:07] You can even do inline where Pathfora goes and replaces or injects it into an HTML element
[02:13] like a class selector that you choose.
[02:17] The, without a doubt, the most popular are messages because it allows you to do a sort
[02:22] of promotion or forms, which are essentially lead capture.
[02:25] So as an end customer, I can go in here and we'll walk through some examples and it'll
[02:30] make a little bit more sense, but Linux automatically installs and loads Pathfora for you.
[02:34] And then if I were to go, for instance, to Petsy and just copy this configuration, which
[02:39] is just a simple form, it's going to say, sign up as my headline.
[02:43] The message is going to be submit this form and it's just going to use the default fields.
[02:46] You can customize all the fields, build your own form, whatever you want to do.
[02:51] But just as an example, like if I close this, open my console and paste that.
[02:57] So we do a lot of this stuff automatically, but you can go in and just do it with JavaScript,
[03:02] use Pathfora, trigger this modal.
[03:04] And then if I were to fill in this information and submit it, it's already kind of pre-wired
[03:08] to collect into Linux.
[03:10] So it's going to handle the jstag.send call for you.
[03:12] It's going to send the email, the name, all that stuff.
[03:15] It's already pre-mapped in the common schema.
[03:17] 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`

#### 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.

#### Subtitles (WebVTT)

```webvtt
WEBVTT

1
00:00:00.000 --> 00:00:18.720
But what it allows you to do is instead of going into the raw

2
00:00:18.720 --> 00:00:21.160
path for a library and doing JavaScript stuff,

3
00:00:21.160 --> 00:00:25.040
you can just go in here and add a new experience.

4
00:00:25.040 --> 00:00:28.400
We have some predefined examples.

5
00:00:28.400 --> 00:00:29.480
If you just want to drive traffic,

6
00:00:29.480 --> 00:00:31.240
I want to capture leads, I want to present a message,

7
00:00:31.240 --> 00:00:32.600
I want to recommend content.

8
00:00:32.600 --> 00:00:35.600
We'll just do drive traffic for a simple one.

9
00:00:35.600 --> 00:00:38.840
You can say the URL you want to target,

10
00:00:38.840 --> 00:00:43.200
let's do petsy.linux.com,

11
00:00:43.200 --> 00:00:48.800
and then anyway,

12
00:00:48.800 --> 00:00:49.880
it'll walk you through a wizard of,

13
00:00:49.880 --> 00:00:51.200
okay, well, where do you want it to be?

14
00:00:51.200 --> 00:00:53.120
I want it to be a slide at the bottom left,

15
00:00:53.120 --> 00:00:56.360
and I want to change my headline to purple,

16
00:00:56.360 --> 00:01:02.280
whatever, sample headline, sample body.

17
00:01:02.280 --> 00:01:03.920
You can change your call to action,

18
00:01:03.920 --> 00:01:06.080
you can change the positioning.

19
00:01:06.080 --> 00:01:09.000
You choose the audience that you want to target.

20
00:01:09.000 --> 00:01:10.240
So I'll just do all for this one,

21
00:01:10.240 --> 00:01:11.960
but it has the targeting against

22
00:01:11.960 --> 00:01:14.320
the Linux audiences built-in automatically.

23
00:01:14.320 --> 00:01:17.600
So it makes it simple to only show specific offers,

24
00:01:17.600 --> 00:01:19.560
promotions, lead captures to

25
00:01:19.560 --> 00:01:22.520
predefined cohorts that you have in your account.

26
00:01:22.520 --> 00:01:26.160
Then there's a number of customization options

27
00:01:26.160 --> 00:01:28.200
on like I want to show it only on the first page view.

28
00:01:28.200 --> 00:01:29.640
I want to show it after five seconds.

29
00:01:29.640 --> 00:01:31.040
I want to hide it after five seconds.

30
00:01:31.040 --> 00:01:32.600
I want to show it on

31
00:01:32.600 --> 00:01:35.160
30 percent page scroll or whatever percentage I want.

32
00:01:35.160 --> 00:01:39.960
I want to show it basically infinite configurability

33
00:01:39.960 --> 00:01:41.800
all the way down till we have an override

34
00:01:41.800 --> 00:01:43.880
where you can write code to overwrite it,

35
00:01:43.880 --> 00:01:46.040
to do a lot of different things,

36
00:01:46.040 --> 00:01:48.720
to tailor it to whatever that customer wants.

37
00:01:48.720 --> 00:01:50.160
The end result though,

38
00:01:50.160 --> 00:01:55.680
if I hit preview and go to petsy.linux.com,

39
00:01:56.080 --> 00:02:05.080
in theory, so now instead of seeing the lead capture,

40
00:02:05.080 --> 00:02:07.880
you see my very ugly pink headline sample model.

41
00:02:07.880 --> 00:02:09.080
So it's a really,

42
00:02:09.080 --> 00:02:12.040
really simple low-lift way to present promotions.

43
00:02:12.040 --> 00:02:14.880
We have it built into our content recommendation library.

44
00:02:14.880 --> 00:02:16.800
So you can just make a recommendation that pops up.

45
00:02:16.800 --> 00:02:18.240
You don't have to go in and talk to

46
00:02:18.240 --> 00:02:20.720
your web developer and launch new source code.

47
00:02:20.720 --> 00:02:23.720
You can just plop it on top.

48
00:02:23.720 --> 00:02:25.720
Like I said, you can put it in your tag manager,

49
00:02:25.720 --> 00:02:26.720
you can put it into your source code.

50
00:02:26.720 --> 00:02:28.080
It's super, super flexible,

51
00:02:28.080 --> 00:02:30.040
but it's without a doubt one of

52
00:02:30.040 --> 00:02:31.840
the most common ways to get started

53
00:02:31.840 --> 00:02:34.560
just because it is such a low-lift thing.

54
00:02:34.560 --> 00:02:37.400
The forms make it dead simple to collect

55
00:02:37.400 --> 00:02:39.720
data and that it already just gets mapped,

56
00:02:39.720 --> 00:02:40.960
and it's already just going to come into Linux.

57
00:02:40.960 --> 00:02:42.560
You don't have to do any sending,

58
00:02:42.560 --> 00:02:43.840
you don't have to do any mapping.

59
00:02:43.840 --> 00:02:46.560
So those are the biggest features.

60
00:02:46.560 --> 00:02:50.640
So that's experiences in our UI.

```

```transcript
<!-- PLACEHOLDER: replace with real transcript before publish if cues were auto-derived from WebVTT -->
[00:00] But what it allows you to do is instead of going into the raw
[00:18] path for a library and doing JavaScript stuff,
[00:21] you can just go in here and add a new experience.
[00:25] We have some predefined examples.
[00:28] If you just want to drive traffic,
[00:29] I want to capture leads, I want to present a message,
[00:31] I want to recommend content.
[00:32] We'll just do drive traffic for a simple one.
[00:35] You can say the URL you want to target,
[00:38] let's do petsy.linux.com,
[00:43] and then anyway,
[00:48] it'll walk you through a wizard of,
[00:49] okay, well, where do you want it to be?
[00:51] I want it to be a slide at the bottom left,
[00:53] and I want to change my headline to purple,
[00:56] whatever, sample headline, sample body.
[01:02] You can change your call to action,
[01:03] you can change the positioning.
[01:06] You choose the audience that you want to target.
[01:09] So I'll just do all for this one,
[01:10] but it has the targeting against
[01:11] the Linux audiences built-in automatically.
[01:14] So it makes it simple to only show specific offers,
[01:17] promotions, lead captures to
[01:19] predefined cohorts that you have in your account.
[01:22] Then there's a number of customization options
[01:26] on like I want to show it only on the first page view.
[01:28] I want to show it after five seconds.
[01:29] I want to hide it after five seconds.
[01:31] I want to show it on
[01:32] 30 percent page scroll or whatever percentage I want.
[01:35] I want to show it basically infinite configurability
[01:39] all the way down till we have an override
[01:41] where you can write code to overwrite it,
[01:43] to do a lot of different things,
[01:46] to tailor it to whatever that customer wants.
[01:48] The end result though,
[01:50] if I hit preview and go to petsy.linux.com,
[01:56] in theory, so now instead of seeing the lead capture,
[02:05] you see my very ugly pink headline sample model.
[02:07] So it's a really,
[02:09] really simple low-lift way to present promotions.
[02:12] We have it built into our content recommendation library.
[02:14] So you can just make a recommendation that pops up.
[02:16] You don't have to go in and talk to
[02:18] your web developer and launch new source code.
[02:20] You can just plop it on top.
[02:23] Like I said, you can put it in your tag manager,
[02:25] you can put it into your source code.
[02:26] It's super, super flexible,
[02:28] but it's without a doubt one of
[02:30] the most common ways to get started
[02:31] just because it is such a low-lift thing.
[02:34] The forms make it dead simple to collect
[02:37] data and that it already just gets mapped,
[02:39] and it's already just going to come into Linux.
[02:40] You don't have to do any sending,
[02:42] you don't have to do any mapping.
[02:43] So those are the biggest features.
[02:46] 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/` |
