# Creating and Managing Content

### About this export

| Field | Value |
| --- | --- |
| **content_type** | course |
| **platform** | contentstack-academy |
| **source_url** | https://www.contentstack.com/academy/courses/creating-and-managing-content |
| **language** | en |
| **product_area** | cms |
| **learning_path** | cms-content-manager-certification |
| **course_id** | creating-and-managing-content |
| **slug** | creating-and-managing-content |
| **version** | 2026-03-01 |
| **last_updated** | 2026-05-04 |
| **status** | published |
| **keywords** | ["cms","content management","authoring"] |
| **summary_one_line** | Creating and managing content is at the heart of working in Contentstack, and this course shows you how to do it with confidence. You’ll start by learning the fundamentals of entries—what they are, how to organize them, … |
| **total_duration_minutes** | 21 |
| **lessons_count** | 6 |
| **video_lessons_count** | 6 |
| **text_lessons_count** | 0 |
| **linked_learning_path** | cms-content-manager-certification |
| **linked_assessment_ref** | LMS_UNCONFIGURED_COURSE_ASSESSMENT |
| **markdown_file_url** | /academy/md/courses/creating-and-managing-content.md |
| **generated_at** | 2026-05-04T05:36:51.614Z |
| **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 | 20m 48s |
| Released (if known) | 2026-03-01 |
| Product area | cms |

### Description

Creating and managing content is at the heart of working in Contentstack, and this course shows you how to do it with confidence. You’ll start by learning the fundamentals of entries—what they are, how to organize them, and how to create new ones for your site. From there, you’ll explore how to manage entries effectively, whether that means editing, copying, deleting, or importing them into your stack. You’ll also dive into the Assets module, where you’ll discover how to upload, filter, tag, and delete files, as well as how to work with metadata, file URLs, and permanent URLs to ensure reliable content delivery. Along the way, you’ll see the difference between HTML and JSON text editors, with practical examples to help you choose the right tool for your projects.

By the end of this course, you’ll have the skills to confidently create, organize, and manage both entries and assets in Contentstack, ensuring your digital content is structured, reusable, and ready to publish across channels.

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

cms; content management; authoring

## Course structure

```text
creating-and-managing-content/
├── 01-understanding-entries · video · 245s
├── 02-creating-an-entry · video · 199s
├── 03-rich-text-editors · video · 179s
├── 04-managing-entries · video · 187s
├── 05-managing-assets · video · 264s
├── 06-understanding-asset-urls-and-metadata · video · 174s
```

## Lessons

### Lesson 01 — Understanding Entries

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

#### Video details

#### At a glance

- **Title:** Understanding Entries
- **Duration:** 4m 5s
- **Media link:** https://cdn.jwplayer.com/previews/iPGu30ZB
- **Publish date (unix):** 1757637500

#### Streaming renditions

- application/vnd.apple.mpegurl
- audio/mp4 · AAC Audio · 113790 kbps
- video/mp4 · 180p · 180p · 169085 kbps
- video/mp4 · 270p · 270p · 209681 kbps
- video/mp4 · 360p · 360p · 243404 kbps
- video/mp4 · 406p · 406p · 270854 kbps
- video/mp4 · 540p · 540p · 362329 kbps
- video/mp4 · 720p · 720p · 516042 kbps
- video/mp4 · 1080p · 1080p · 1009637 kbps

#### Timed text tracks (delivery)

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

#### Transcript

Think of your content model as the blueprint and content types as the molds for each kind of thing you publish, like a destination, an article, or an author. An entry is the actual, filled-in instance of one of those molds. So if article is the mold, then Tokyo Tower is the entry. You can only create entries inside an existing content type, which keeps everything structured and consistent across your site. The entries list is where you manage all of those pieces of content. Here you'll see details like titles, status, who last updated an entry, and when. You can filter down to exactly what you need, take quick actions, and even save custom views So your workspace is ready to go each time you come back. One more concept you might hear, branches. If your stack uses them, say development vs production, entries you create or edit are specific to the branch you're in. They won't automatically appear in other branches, which makes branching great for experimenting without impacting live content. We'll go deeper into branches in other Academy content, so just keep this in mind for now. Let's jump into the entries area. If you're already inside your stack, you'll see a clean tabular view with at-a-glance details like title, language, content type, variants, so on and so forth. On the far right is an actions menu for each row. From here you can edit in Visual Builder, Preview, Copy, Publish or Unpublish, Export and Delete, giving you quick control without leaving the list. At the top you'll also find locale selection to switch languages for localized content, new entry to create content right from the list, views for fast filtering. You can modify the appearance of this entry's view. Click the gear icon in the top right. Notice you can manage columns by checking or unchecking any of the categories that you want to either see or hide from the view. I'll select Modified by to add it to my view. Additionally, you can change the row density to make it either more compact or more comfortable in its spacing. If you'd like to save this configuration as a view and return to it if you continue to modify these settings, all you have to do is click the View menu. Right now it reads Base Entries and choose Save as New View. I'll call this Matt's view. Now the row density option you selected is not part of a view, it's a separate setting that you control manually. On the left you'll see all the views. Under Popular Views you'll see things like Base Entry, Published by Me, Not Published. Select any of them to reconfigure the view. Below that you'll notice any views you have saved, in this case Matt's view. Select it to recall our custom view we saved. On the right, click the three dots to modify the view, like share it, rename it, or even delete it. In that same section of the interface towards the top, you'll notice you can toggle filters to control what gets displayed in the view. Content types, taxonomies, and variants are visible. If you select an option, in this case Article, the view is filtered to display just entries based on the article content type. You can manage what filters are available by clicking the Manage Filters button at the bottom. You now know what entries are, how they relate to content types, and how to slice, sort, and save your ideal view of the entries list. Next up, we'll create an entry together, step-by-step, compass travel style.

#### Subtitles (WebVTT)

```webvtt
WEBVTT

1
00:00:00.000 --> 00:00:10.400
Think of your content model as the blueprint and content types as the molds for each kind

2
00:00:10.400 --> 00:00:15.480
of thing you publish, like a destination, an article, or an author.

3
00:00:15.480 --> 00:00:20.200
An entry is the actual, filled-in instance of one of those molds.

4
00:00:20.200 --> 00:00:25.340
So if article is the mold, then Tokyo Tower is the entry.

5
00:00:25.340 --> 00:00:32.480
You can only create entries inside an existing content type, which keeps everything structured

6
00:00:32.480 --> 00:00:35.780
and consistent across your site.

7
00:00:35.780 --> 00:00:40.940
The entries list is where you manage all of those pieces of content.

8
00:00:40.940 --> 00:00:48.680
Here you'll see details like titles, status, who last updated an entry, and when.

9
00:00:48.680 --> 00:00:54.660
You can filter down to exactly what you need, take quick actions, and even save custom views

10
00:00:54.820 --> 00:00:58.860
So your workspace is ready to go each time you come back.

11
00:00:58.860 --> 00:01:02.140
One more concept you might hear, branches.

12
00:01:02.140 --> 00:01:08.260
If your stack uses them, say development vs production, entries you create or edit are

13
00:01:08.260 --> 00:01:10.460
specific to the branch you're in.

14
00:01:10.460 --> 00:01:14.980
They won't automatically appear in other branches, which makes branching great for

15
00:01:14.980 --> 00:01:18.540
experimenting without impacting live content.

16
00:01:19.060 --> 00:01:25.460
We'll go deeper into branches in other Academy content, so just keep this in mind for now.

17
00:01:25.460 --> 00:01:27.240
Let's jump into the entries area.

18
00:01:27.240 --> 00:01:32.340
If you're already inside your stack, you'll see a clean tabular view with at-a-glance

19
00:01:32.340 --> 00:01:38.620
details like title, language, content type, variants, so on and so forth.

20
00:01:38.620 --> 00:01:41.800
On the far right is an actions menu for each row.

21
00:01:41.800 --> 00:01:47.600
From here you can edit in Visual Builder, Preview, Copy, Publish or Unpublish, Export

22
00:01:47.600 --> 00:01:52.260
and Delete, giving you quick control without leaving the list.

23
00:01:52.260 --> 00:01:58.820
At the top you'll also find locale selection to switch languages for localized content,

24
00:01:58.820 --> 00:02:04.140
new entry to create content right from the list, views for fast filtering.

25
00:02:04.140 --> 00:02:07.260
You can modify the appearance of this entry's view.

26
00:02:07.260 --> 00:02:10.180
Click the gear icon in the top right.

27
00:02:10.180 --> 00:02:14.960
Notice you can manage columns by checking or unchecking any of the categories that you

28
00:02:14.980 --> 00:02:19.100
want to either see or hide from the view.

29
00:02:19.100 --> 00:02:23.180
I'll select Modified by to add it to my view.

30
00:02:23.180 --> 00:02:29.620
Additionally, you can change the row density to make it either more compact or more comfortable

31
00:02:29.620 --> 00:02:31.300
in its spacing.

32
00:02:31.300 --> 00:02:36.420
If you'd like to save this configuration as a view and return to it if you continue

33
00:02:36.420 --> 00:02:41.860
to modify these settings, all you have to do is click the View menu.

34
00:02:41.860 --> 00:02:47.760
Right now it reads Base Entries and choose Save as New View.

35
00:02:47.760 --> 00:02:49.680
I'll call this Matt's view.

36
00:02:49.680 --> 00:02:54.900
Now the row density option you selected is not part of a view, it's a separate setting

37
00:02:54.900 --> 00:02:57.960
that you control manually.

38
00:02:57.960 --> 00:03:00.880
On the left you'll see all the views.

39
00:03:00.880 --> 00:03:07.480
Under Popular Views you'll see things like Base Entry, Published by Me, Not Published.

40
00:03:07.480 --> 00:03:10.120
Select any of them to reconfigure the view.

41
00:03:10.120 --> 00:03:16.280
Below that you'll notice any views you have saved, in this case Matt's view.

42
00:03:16.280 --> 00:03:19.920
Select it to recall our custom view we saved.

43
00:03:19.920 --> 00:03:25.180
On the right, click the three dots to modify the view, like share it, rename it, or even

44
00:03:25.180 --> 00:03:26.280
delete it.

45
00:03:26.280 --> 00:03:31.520
In that same section of the interface towards the top, you'll notice you can toggle filters

46
00:03:31.520 --> 00:03:35.000
to control what gets displayed in the view.

47
00:03:35.000 --> 00:03:38.900
Content types, taxonomies, and variants are visible.

48
00:03:38.900 --> 00:03:44.940
If you select an option, in this case Article, the view is filtered to display just entries

49
00:03:44.940 --> 00:03:47.820
based on the article content type.

50
00:03:47.820 --> 00:03:53.060
You can manage what filters are available by clicking the Manage Filters button at the

51
00:03:53.060 --> 00:03:54.220
bottom.

52
00:03:54.220 --> 00:04:00.980
You now know what entries are, how they relate to content types, and how to slice, sort,

53
00:04:00.980 --> 00:04:05.220
and save your ideal view of the entries list.

54
00:04:05.220 --> 00:04:10.540
Next up, we'll create an entry together, step-by-step, compass travel style.

```

```transcript
<!-- PLACEHOLDER: replace with real transcript before publish if cues were auto-derived from WebVTT -->
[00:00] Think of your content model as the blueprint and content types as the molds for each kind
[00:10] of thing you publish, like a destination, an article, or an author.
[00:15] An entry is the actual, filled-in instance of one of those molds.
[00:20] So if article is the mold, then Tokyo Tower is the entry.
[00:25] You can only create entries inside an existing content type, which keeps everything structured
[00:32] and consistent across your site.
[00:35] The entries list is where you manage all of those pieces of content.
[00:40] Here you'll see details like titles, status, who last updated an entry, and when.
[00:48] You can filter down to exactly what you need, take quick actions, and even save custom views
[00:54] So your workspace is ready to go each time you come back.
[00:58] One more concept you might hear, branches.
[01:02] If your stack uses them, say development vs production, entries you create or edit are
[01:08] specific to the branch you're in.
[01:10] They won't automatically appear in other branches, which makes branching great for
[01:14] experimenting without impacting live content.
[01:19] We'll go deeper into branches in other Academy content, so just keep this in mind for now.
[01:25] Let's jump into the entries area.
[01:27] If you're already inside your stack, you'll see a clean tabular view with at-a-glance
[01:32] details like title, language, content type, variants, so on and so forth.
[01:38] On the far right is an actions menu for each row.
[01:41] From here you can edit in Visual Builder, Preview, Copy, Publish or Unpublish, Export
[01:47] and Delete, giving you quick control without leaving the list.
[01:52] At the top you'll also find locale selection to switch languages for localized content,
[01:58] new entry to create content right from the list, views for fast filtering.
[02:04] You can modify the appearance of this entry's view.
[02:07] Click the gear icon in the top right.
[02:10] Notice you can manage columns by checking or unchecking any of the categories that you
[02:14] want to either see or hide from the view.
[02:19] I'll select Modified by to add it to my view.
[02:23] Additionally, you can change the row density to make it either more compact or more comfortable
[02:29] in its spacing.
[02:31] If you'd like to save this configuration as a view and return to it if you continue
[02:36] to modify these settings, all you have to do is click the View menu.
[02:41] Right now it reads Base Entries and choose Save as New View.
[02:47] I'll call this Matt's view.
[02:49] Now the row density option you selected is not part of a view, it's a separate setting
[02:54] that you control manually.
[02:57] On the left you'll see all the views.
[03:00] Under Popular Views you'll see things like Base Entry, Published by Me, Not Published.
[03:07] Select any of them to reconfigure the view.
[03:10] Below that you'll notice any views you have saved, in this case Matt's view.
[03:16] Select it to recall our custom view we saved.
[03:19] On the right, click the three dots to modify the view, like share it, rename it, or even
[03:25] delete it.
[03:26] In that same section of the interface towards the top, you'll notice you can toggle filters
[03:31] to control what gets displayed in the view.
[03:35] Content types, taxonomies, and variants are visible.
[03:38] If you select an option, in this case Article, the view is filtered to display just entries
[03:44] based on the article content type.
[03:47] You can manage what filters are available by clicking the Manage Filters button at the
[03:53] bottom.
[03:54] You now know what entries are, how they relate to content types, and how to slice, sort,
[04:00] and save your ideal view of the entries list.
[04:05] Next up, we'll create an entry together, step-by-step, compass travel style.
```

#### Key takeaways

- Connect **Understanding Entries** 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 — Creating an Entry

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

#### Video details

#### At a glance

- **Title:** Creating an Entry
- **Duration:** 3m 19s
- **Media link:** https://cdn.jwplayer.com/previews/yzWx2X5g
- **Publish date (unix):** 1757639142

#### Streaming renditions

- application/vnd.apple.mpegurl
- audio/mp4 · AAC Audio · 113528 kbps
- video/mp4 · 180p · 180p · 151933 kbps
- video/mp4 · 270p · 270p · 173001 kbps
- video/mp4 · 360p · 360p · 192725 kbps
- video/mp4 · 406p · 406p · 211132 kbps
- video/mp4 · 540p · 540p · 256600 kbps
- video/mp4 · 720p · 720p · 343531 kbps
- video/mp4 · 1080p · 1080p · 579515 kbps

#### Timed text tracks (delivery)

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

#### Transcript

Before we jump into creating our article entry, let's take a quick look at the article content type. Remember, the content type is the mold. It defines which fields are available and how they're organized. Here you'll see spots for things like the title, summary, cover image, taxonomy, which is how the content is categorized on the site, related links, related articles, and SEO settings. I have an entry based on this article content type already open in the browser. Notice all of these elements we looked at in the content type. We have a title, an image, a summary, and the content. We also have related links and articles below. Knowing the structure up front helps you understand why we'll be filling out these particular fields in just a moment. Now let's go ahead and create the entry. In the entry section, click the New Entry button. In the Select Content Type dialog, choose Article. Think of this as filling out a form. Each field is a box waiting for information, and together they make up a complete piece of content. For the title, let's use Mexico City, Exploring the History and Energy of the Socolow. As soon as we add the title, you'll notice Content Stack automatically generates a URL. You can change it if needed, but for now we'll leave it as is. Next, we'll add a cover image. We can either select an image already in Assets or upload a new one. Let's upload a new file from our computer. When we do that, we need to choose where the image will live. In this case, we'll select Hero Banner. By uploading this image, we'll give the article a strong visual at the top of the page, just like the Tokyo Tower article we previewed earlier. For the summary, we'll use the AI Assistant to save time. Just click the AI icon, choose Brainstorm with AI Assistant, and type in something like, give me a one-line summary of the best things to do in Mexico City. The AI generates a nice starting point, and we can always refine it if need be. Scrolling down, we'll set up our taxonomy, region as North America, and topic as must-see spots. In the main content text field, I'll just paste in some copy from the clipboard to move quickly. Then we'll add related links and related articles, setting the number of articles to show as three. To finish things up, we'll fill out the SEO fields, title, description, and a few tags. Then we'll click Save. Finally, let's render this page in Live Preview, which is a feature we'll review in greater detail later, but it will allow us to see how our Mexico City article will look once it's published. Looks good!

#### Subtitles (WebVTT)

```webvtt
WEBVTT

1
00:00:00.000 --> 00:00:06.400
Before we jump into creating our article entry, let's take a quick look at the article content type.

2
00:00:07.040 --> 00:00:13.520
Remember, the content type is the mold. It defines which fields are available and how

3
00:00:13.520 --> 00:00:20.000
they're organized. Here you'll see spots for things like the title, summary, cover image,

4
00:00:20.000 --> 00:00:26.640
taxonomy, which is how the content is categorized on the site, related links, related articles,

5
00:00:26.640 --> 00:00:33.680
and SEO settings. I have an entry based on this article content type already open in the browser.

6
00:00:34.240 --> 00:00:39.840
Notice all of these elements we looked at in the content type. We have a title, an image,

7
00:00:39.840 --> 00:00:47.280
a summary, and the content. We also have related links and articles below. Knowing the structure

8
00:00:47.280 --> 00:00:53.120
up front helps you understand why we'll be filling out these particular fields in just a moment.

9
00:00:53.680 --> 00:01:00.000
Now let's go ahead and create the entry. In the entry section, click the New Entry button.

10
00:01:00.000 --> 00:01:07.520
In the Select Content Type dialog, choose Article. Think of this as filling out a form. Each field

11
00:01:07.520 --> 00:01:13.440
is a box waiting for information, and together they make up a complete piece of content.

12
00:01:14.800 --> 00:01:21.760
For the title, let's use Mexico City, Exploring the History and Energy of the Socolow. As soon as

13
00:01:21.760 --> 00:01:27.760
we add the title, you'll notice Content Stack automatically generates a URL. You can change it

14
00:01:27.760 --> 00:01:35.120
if needed, but for now we'll leave it as is. Next, we'll add a cover image. We can either select an

15
00:01:35.120 --> 00:01:43.120
image already in Assets or upload a new one. Let's upload a new file from our computer. When we do

16
00:01:43.120 --> 00:01:50.240
that, we need to choose where the image will live. In this case, we'll select Hero Banner. By

17
00:01:50.240 --> 00:01:56.000
uploading this image, we'll give the article a strong visual at the top of the page, just like

18
00:01:56.000 --> 00:02:03.600
the Tokyo Tower article we previewed earlier. For the summary, we'll use the AI Assistant to save

19
00:02:03.600 --> 00:02:10.400
time. Just click the AI icon, choose Brainstorm with AI Assistant, and type in something like,

20
00:02:11.040 --> 00:02:17.920
give me a one-line summary of the best things to do in Mexico City. The AI generates a nice

21
00:02:17.920 --> 00:02:24.880
starting point, and we can always refine it if need be. Scrolling down, we'll set up our taxonomy,

22
00:02:27.200 --> 00:02:29.040
region as North America,

23
00:02:31.600 --> 00:02:38.240
and topic as must-see spots. In the main content text field, I'll just paste in some copy from the

24
00:02:38.240 --> 00:02:45.280
clipboard to move quickly. Then we'll add related links and related articles, setting the number of

25
00:02:45.280 --> 00:02:52.080
articles to show as three. To finish things up, we'll fill out the SEO fields, title, description,

26
00:02:54.160 --> 00:03:04.400
and a few tags. Then we'll click Save. Finally, let's render this page in Live Preview, which is a

27
00:03:04.400 --> 00:03:10.640
feature we'll review in greater detail later, but it will allow us to see how our Mexico City article

28
00:03:10.640 --> 00:03:15.360
will look once it's published. Looks good!

```

```transcript
<!-- PLACEHOLDER: replace with real transcript before publish if cues were auto-derived from WebVTT -->
[00:00] Before we jump into creating our article entry, let's take a quick look at the article content type.
[00:07] Remember, the content type is the mold. It defines which fields are available and how
[00:13] they're organized. Here you'll see spots for things like the title, summary, cover image,
[00:20] taxonomy, which is how the content is categorized on the site, related links, related articles,
[00:26] and SEO settings. I have an entry based on this article content type already open in the browser.
[00:34] Notice all of these elements we looked at in the content type. We have a title, an image,
[00:39] a summary, and the content. We also have related links and articles below. Knowing the structure
[00:47] up front helps you understand why we'll be filling out these particular fields in just a moment.
[00:53] Now let's go ahead and create the entry. In the entry section, click the New Entry button.
[01:00] In the Select Content Type dialog, choose Article. Think of this as filling out a form. Each field
[01:07] is a box waiting for information, and together they make up a complete piece of content.
[01:14] For the title, let's use Mexico City, Exploring the History and Energy of the Socolow. As soon as
[01:21] we add the title, you'll notice Content Stack automatically generates a URL. You can change it
[01:27] if needed, but for now we'll leave it as is. Next, we'll add a cover image. We can either select an
[01:35] image already in Assets or upload a new one. Let's upload a new file from our computer. When we do
[01:43] that, we need to choose where the image will live. In this case, we'll select Hero Banner. By
[01:50] uploading this image, we'll give the article a strong visual at the top of the page, just like
[01:56] the Tokyo Tower article we previewed earlier. For the summary, we'll use the AI Assistant to save
[02:03] time. Just click the AI icon, choose Brainstorm with AI Assistant, and type in something like,
[02:11] give me a one-line summary of the best things to do in Mexico City. The AI generates a nice
[02:17] starting point, and we can always refine it if need be. Scrolling down, we'll set up our taxonomy,
[02:27] region as North America,
[02:31] and topic as must-see spots. In the main content text field, I'll just paste in some copy from the
[02:38] clipboard to move quickly. Then we'll add related links and related articles, setting the number of
[02:45] articles to show as three. To finish things up, we'll fill out the SEO fields, title, description,
[02:54] and a few tags. Then we'll click Save. Finally, let's render this page in Live Preview, which is a
[03:04] feature we'll review in greater detail later, but it will allow us to see how our Mexico City article
[03:10] will look once it's published. Looks good!
```

#### Key takeaways

- Connect **Creating an Entry** 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 — Rich Text Editors

<!-- ai_metadata: {"lesson_id":"03","type":"video","duration_seconds":179,"video_url":"https://cdn.jwplayer.com/previews/TQW4P84x","thumbnail_url":"https://cdn.jwplayer.com/v2/media/TQW4P84x/poster.jpg?width=720","topics":["Rich","Text","Editors"]} -->

#### Video details

#### At a glance

- **Title:** Rich Text Editors
- **Duration:** 2m 59s
- **Media link:** https://cdn.jwplayer.com/previews/TQW4P84x
- **Publish date (unix):** 1757641341

#### Streaming renditions

- application/vnd.apple.mpegurl
- audio/mp4 · AAC Audio · 113668 kbps
- video/mp4 · 180p · 180p · 169718 kbps
- video/mp4 · 270p · 270p · 210363 kbps
- video/mp4 · 360p · 360p · 249356 kbps
- video/mp4 · 406p · 406p · 280803 kbps
- video/mp4 · 540p · 540p · 379982 kbps
- video/mp4 · 720p · 720p · 557784 kbps
- video/mp4 · 1080p · 1080p · 1116231 kbps

#### Timed text tracks (delivery)

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

#### Transcript

When you create content in ContentStack, you'll often be typing into a text editor, but not all editors are the same. Some content models are set up with traditional HTML editors, while others use a JSON-rich text editor. Let's use our Mexico City example to see the difference, why it matters, and how they differ. In our Compass travel site, the Mexico City entry is using the HTML editor. You can see I pasted in our content about the attraction. Notice there are paragraphs, headings, and rich formatting. This editor looks familiar to anyone who's written a blog post. You can style text, add links, insert images, and even switch into source view to hand-edit the HTML. The HTML editor is quick and easy, but what you're really storing here is raw markup, the exact formatting instructions for the browser. That makes it great for websites, but less flexible if you want the same content to power a mobile app or a voice assistant. Now let's contrast that with a JSON-rich text editor. At first glance, it feels similar. You can still add paragraphs, headings, lists, and media. But behind the scenes, instead of raw HTML, it's storing your content as structured JSON. Here's the exact content, written once in HTML and once in JSON. Look how different they look under the hood. With HTML, you're storing how the content should look. With JSON, you're storing what the content is, in a way that developers can render consistently across any channel. The HTML editor is the best if your team is focused on a traditional website. Authors get full control, it's quick to format, and no developer support is needed. The trade-off is that the content isn't as reusable. The JSON-rich text editor is the opposite. It's structured, portable, and ready for omnichannel publishing, web, mobile, APIs, even kiosks or voice apps. But it does rely on developer effort to render it properly, and authors might feel it's a little less freeform. Text editors may look simple, but the choice between HTML and JSON determines how flexible and future-proof your content will be. HTML is fast and familiar, perfect for a website. JSON-rich text is structured and scalable, ideal for content that needs to travel across multiple channels. Knowing which one was set up in the content type ensures your content doesn't just look good today, it works wherever you need it tomorrow.

#### Subtitles (WebVTT)

```webvtt
WEBVTT

1
00:00:00.000 --> 00:00:06.660
When you create content in ContentStack, you'll often be typing into a text editor, but not

2
00:00:06.660 --> 00:00:09.100
all editors are the same.

3
00:00:09.100 --> 00:00:16.420
Some content models are set up with traditional HTML editors, while others use a JSON-rich

4
00:00:16.420 --> 00:00:17.420
text editor.

5
00:00:17.420 --> 00:00:22.740
Let's use our Mexico City example to see the difference, why it matters, and how they

6
00:00:22.740 --> 00:00:23.960
differ.

7
00:00:23.960 --> 00:00:29.380
In our Compass travel site, the Mexico City entry is using the HTML editor.

8
00:00:29.380 --> 00:00:34.500
You can see I pasted in our content about the attraction.

9
00:00:34.500 --> 00:00:39.580
Notice there are paragraphs, headings, and rich formatting.

10
00:00:39.580 --> 00:00:43.660
This editor looks familiar to anyone who's written a blog post.

11
00:00:43.660 --> 00:00:50.420
You can style text, add links, insert images, and even switch into source view to hand-edit

12
00:00:50.420 --> 00:00:52.300
the HTML.

13
00:00:52.300 --> 00:00:58.420
The HTML editor is quick and easy, but what you're really storing here is raw markup,

14
00:00:58.420 --> 00:01:01.920
the exact formatting instructions for the browser.

15
00:01:01.920 --> 00:01:07.260
That makes it great for websites, but less flexible if you want the same content to power

16
00:01:07.260 --> 00:01:10.500
a mobile app or a voice assistant.

17
00:01:10.500 --> 00:01:14.720
Now let's contrast that with a JSON-rich text editor.

18
00:01:14.720 --> 00:01:17.260
At first glance, it feels similar.

19
00:01:17.260 --> 00:01:21.460
You can still add paragraphs, headings, lists, and media.

20
00:01:21.460 --> 00:01:26.620
But behind the scenes, instead of raw HTML, it's storing your content as structured

21
00:01:26.620 --> 00:01:27.620
JSON.

22
00:01:27.620 --> 00:01:34.580
Here's the exact content, written once in HTML and once in JSON.

23
00:01:34.580 --> 00:01:37.660
Look how different they look under the hood.

24
00:01:37.660 --> 00:01:41.700
With HTML, you're storing how the content should look.

25
00:01:41.700 --> 00:01:48.260
With JSON, you're storing what the content is, in a way that developers can render consistently

26
00:01:48.260 --> 00:01:50.600
across any channel.

27
00:01:50.600 --> 00:01:56.360
The HTML editor is the best if your team is focused on a traditional website.

28
00:01:56.360 --> 00:02:02.060
Authors get full control, it's quick to format, and no developer support is needed.

29
00:02:02.060 --> 00:02:06.160
The trade-off is that the content isn't as reusable.

30
00:02:06.160 --> 00:02:09.240
The JSON-rich text editor is the opposite.

31
00:02:09.240 --> 00:02:15.820
It's structured, portable, and ready for omnichannel publishing, web, mobile, APIs, even kiosks

32
00:02:15.820 --> 00:02:17.720
or voice apps.

33
00:02:17.720 --> 00:02:23.720
But it does rely on developer effort to render it properly, and authors might feel it's

34
00:02:23.720 --> 00:02:26.160
a little less freeform.

35
00:02:26.160 --> 00:02:32.800
Text editors may look simple, but the choice between HTML and JSON determines how flexible

36
00:02:32.800 --> 00:02:35.640
and future-proof your content will be.

37
00:02:35.640 --> 00:02:41.120
HTML is fast and familiar, perfect for a website.

38
00:02:41.120 --> 00:02:46.680
JSON-rich text is structured and scalable, ideal for content that needs to travel across

39
00:02:46.680 --> 00:02:48.720
multiple channels.

40
00:02:48.720 --> 00:02:54.640
Knowing which one was set up in the content type ensures your content doesn't just look

41
00:02:54.640 --> 00:02:58.720
good today, it works wherever you need it tomorrow.

```

```transcript
<!-- PLACEHOLDER: replace with real transcript before publish if cues were auto-derived from WebVTT -->
[00:00] When you create content in ContentStack, you'll often be typing into a text editor, but not
[00:06] all editors are the same.
[00:09] Some content models are set up with traditional HTML editors, while others use a JSON-rich
[00:16] text editor.
[00:17] Let's use our Mexico City example to see the difference, why it matters, and how they
[00:22] differ.
[00:23] In our Compass travel site, the Mexico City entry is using the HTML editor.
[00:29] You can see I pasted in our content about the attraction.
[00:34] Notice there are paragraphs, headings, and rich formatting.
[00:39] This editor looks familiar to anyone who's written a blog post.
[00:43] You can style text, add links, insert images, and even switch into source view to hand-edit
[00:50] the HTML.
[00:52] The HTML editor is quick and easy, but what you're really storing here is raw markup,
[00:58] the exact formatting instructions for the browser.
[01:01] That makes it great for websites, but less flexible if you want the same content to power
[01:07] a mobile app or a voice assistant.
[01:10] Now let's contrast that with a JSON-rich text editor.
[01:14] At first glance, it feels similar.
[01:17] You can still add paragraphs, headings, lists, and media.
[01:21] But behind the scenes, instead of raw HTML, it's storing your content as structured
[01:26] JSON.
[01:27] Here's the exact content, written once in HTML and once in JSON.
[01:34] Look how different they look under the hood.
[01:37] With HTML, you're storing how the content should look.
[01:41] With JSON, you're storing what the content is, in a way that developers can render consistently
[01:48] across any channel.
[01:50] The HTML editor is the best if your team is focused on a traditional website.
[01:56] Authors get full control, it's quick to format, and no developer support is needed.
[02:02] The trade-off is that the content isn't as reusable.
[02:06] The JSON-rich text editor is the opposite.
[02:09] It's structured, portable, and ready for omnichannel publishing, web, mobile, APIs, even kiosks
[02:15] or voice apps.
[02:17] But it does rely on developer effort to render it properly, and authors might feel it's
[02:23] a little less freeform.
[02:26] Text editors may look simple, but the choice between HTML and JSON determines how flexible
[02:32] and future-proof your content will be.
[02:35] HTML is fast and familiar, perfect for a website.
[02:41] JSON-rich text is structured and scalable, ideal for content that needs to travel across
[02:46] multiple channels.
[02:48] Knowing which one was set up in the content type ensures your content doesn't just look
[02:54] good today, it works wherever you need it tomorrow.
```

#### Key takeaways

- Connect **Rich Text Editors** 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 — Managing Entries

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

#### Video details

#### At a glance

- **Title:** Managing Entries
- **Duration:** 3m 7s
- **Media link:** https://cdn.jwplayer.com/previews/WVH2rahw
- **Publish date (unix):** 1757639211

#### Streaming renditions

- application/vnd.apple.mpegurl
- audio/mp4 · AAC Audio · 113958 kbps
- video/mp4 · 180p · 180p · 146903 kbps
- video/mp4 · 270p · 270p · 164118 kbps
- video/mp4 · 360p · 360p · 181613 kbps
- video/mp4 · 406p · 406p · 194038 kbps
- video/mp4 · 540p · 540p · 230225 kbps
- video/mp4 · 720p · 720p · 291611 kbps
- video/mp4 · 1080p · 1080p · 414983 kbps

#### Timed text tracks (delivery)

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

#### Transcript

Let's now look at how to update existing content, duplicate entries to save time, remove outdated ones, and bring in fresh content without starting from scratch. To edit an entry, find one in your entries list. You can use filters or views if needed. We'll work with the same Mexico City entry we created in a previous video. Open the Actions menu by clicking the vertical ellipsis for the entry. From the drop-down, select Edit to open the editor. Alternatively, choose Edit in Visual Builder for a WYSIWYG experience, perfect for tweaking layout or design elements directly. In the editor, you can make any updates, maybe adjust the title, tweak the body text, swap an image, or update tags. Here, we'll modify the content a bit. We want it to have a friendlier tone, so with the AI Assistant, we can choose Change Tone and then select Friendly, and the Assistant will work its magic. Anytime you make a change, make sure you save your changes. Optionally, use Preview to confirm the edits look right. Okay, let's move on and talk about copying entries. Copying an entry can be a great way to create another new entry without starting from scratch, especially if you can reuse elements from a previous entry. Like in our Mexico City example, maybe we can reuse parts of the Content Text field, the SEO info, and even things like the Related Links and Entries section. To make a copy, find the entry in the Entries list and press the Actions menu next to an entry. Select Copy, and you'll see Content Stack duplicates the entry, preserving field values, tags, references, all of it. It will prefix the title with Copy Of. Here, you can retitle the entry and adjust necessary fields. And when you're happy with the changes, click Save. Now, in the real world, we don't need this copy we just made of our Mexico City article, so let's clean that up so our list stays tidy. Back in the Entries list, find the copy you created. Click the Actions menu, again the three dots next to that entry, and choose Delete. You'll get a confirmation prompt. This is there to prevent accidents. Click Delete again to confirm. The entry disappears from the list. If you don't see the change right away, give the page a quick refresh or make sure a filter isn't hiding it. And that's it. You've seen how to edit content with a little help from the AI Assistant. Copy an entry to speed up your work and safely delete what you no longer need. Managing entries really comes down to these everyday actions, and once you've done them a couple of times, they'll feel second nature.

#### Subtitles (WebVTT)

```webvtt
WEBVTT

1
00:00:00.000 --> 00:00:06.000
Let's now look at how to update existing content, duplicate entries to save time,

2
00:00:06.000 --> 00:00:11.600
remove outdated ones, and bring in fresh content without starting from scratch.

3
00:00:12.240 --> 00:00:19.280
To edit an entry, find one in your entries list. You can use filters or views if needed.

4
00:00:19.280 --> 00:00:23.760
We'll work with the same Mexico City entry we created in a previous video.

5
00:00:23.760 --> 00:00:28.720
Open the Actions menu by clicking the vertical ellipsis for the entry.

6
00:00:28.720 --> 00:00:34.800
From the drop-down, select Edit to open the editor. Alternatively, choose Edit in Visual

7
00:00:34.800 --> 00:00:41.200
Builder for a WYSIWYG experience, perfect for tweaking layout or design elements directly.

8
00:00:41.760 --> 00:00:47.680
In the editor, you can make any updates, maybe adjust the title, tweak the body text,

9
00:00:47.680 --> 00:00:53.520
swap an image, or update tags. Here, we'll modify the content a bit.

10
00:00:53.520 --> 00:01:00.080
We want it to have a friendlier tone, so with the AI Assistant, we can choose Change Tone

11
00:01:00.080 --> 00:01:03.920
and then select Friendly, and the Assistant will work its magic.

12
00:01:04.480 --> 00:01:09.120
Anytime you make a change, make sure you save your changes.

13
00:01:09.840 --> 00:01:13.840
Optionally, use Preview to confirm the edits look right.

14
00:01:14.480 --> 00:01:20.160
Okay, let's move on and talk about copying entries. Copying an entry can be a great way

15
00:01:20.160 --> 00:01:26.960
to create another new entry without starting from scratch, especially if you can reuse elements

16
00:01:26.960 --> 00:01:33.760
from a previous entry. Like in our Mexico City example, maybe we can reuse parts of the Content

17
00:01:33.760 --> 00:01:39.600
Text field, the SEO info, and even things like the Related Links and Entries section.

18
00:01:40.240 --> 00:01:47.200
To make a copy, find the entry in the Entries list and press the Actions menu next to an entry.

19
00:01:47.200 --> 00:01:53.040
Select Copy, and you'll see Content Stack duplicates the entry, preserving field values,

20
00:01:53.040 --> 00:01:58.800
tags, references, all of it. It will prefix the title with Copy Of.

21
00:01:59.600 --> 00:02:03.920
Here, you can retitle the entry and adjust necessary fields.

22
00:02:04.640 --> 00:02:07.760
And when you're happy with the changes, click Save.

23
00:02:08.320 --> 00:02:14.640
Now, in the real world, we don't need this copy we just made of our Mexico City article,

24
00:02:14.640 --> 00:02:17.680
so let's clean that up so our list stays tidy.

25
00:02:18.320 --> 00:02:22.480
Back in the Entries list, find the copy you created.

26
00:02:22.480 --> 00:02:27.920
Click the Actions menu, again the three dots next to that entry, and choose Delete.

27
00:02:28.560 --> 00:02:33.200
You'll get a confirmation prompt. This is there to prevent accidents.

28
00:02:33.200 --> 00:02:37.760
Click Delete again to confirm. The entry disappears from the list.

29
00:02:37.760 --> 00:02:42.640
If you don't see the change right away, give the page a quick refresh or

30
00:02:42.640 --> 00:02:45.280
make sure a filter isn't hiding it.

31
00:02:45.280 --> 00:02:51.360
And that's it. You've seen how to edit content with a little help from the AI Assistant.

32
00:02:51.360 --> 00:02:56.800
Copy an entry to speed up your work and safely delete what you no longer need.

33
00:02:57.440 --> 00:03:01.680
Managing entries really comes down to these everyday actions,

34
00:03:01.680 --> 00:03:06.160
and once you've done them a couple of times, they'll feel second nature.

```

```transcript
<!-- PLACEHOLDER: replace with real transcript before publish if cues were auto-derived from WebVTT -->
[00:00] Let's now look at how to update existing content, duplicate entries to save time,
[00:06] remove outdated ones, and bring in fresh content without starting from scratch.
[00:12] To edit an entry, find one in your entries list. You can use filters or views if needed.
[00:19] We'll work with the same Mexico City entry we created in a previous video.
[00:23] Open the Actions menu by clicking the vertical ellipsis for the entry.
[00:28] From the drop-down, select Edit to open the editor. Alternatively, choose Edit in Visual
[00:34] Builder for a WYSIWYG experience, perfect for tweaking layout or design elements directly.
[00:41] In the editor, you can make any updates, maybe adjust the title, tweak the body text,
[00:47] swap an image, or update tags. Here, we'll modify the content a bit.
[00:53] We want it to have a friendlier tone, so with the AI Assistant, we can choose Change Tone
[01:00] and then select Friendly, and the Assistant will work its magic.
[01:04] Anytime you make a change, make sure you save your changes.
[01:09] Optionally, use Preview to confirm the edits look right.
[01:14] Okay, let's move on and talk about copying entries. Copying an entry can be a great way
[01:20] to create another new entry without starting from scratch, especially if you can reuse elements
[01:26] from a previous entry. Like in our Mexico City example, maybe we can reuse parts of the Content
[01:33] Text field, the SEO info, and even things like the Related Links and Entries section.
[01:40] To make a copy, find the entry in the Entries list and press the Actions menu next to an entry.
[01:47] Select Copy, and you'll see Content Stack duplicates the entry, preserving field values,
[01:53] tags, references, all of it. It will prefix the title with Copy Of.
[01:59] Here, you can retitle the entry and adjust necessary fields.
[02:04] And when you're happy with the changes, click Save.
[02:08] Now, in the real world, we don't need this copy we just made of our Mexico City article,
[02:14] so let's clean that up so our list stays tidy.
[02:18] Back in the Entries list, find the copy you created.
[02:22] Click the Actions menu, again the three dots next to that entry, and choose Delete.
[02:28] You'll get a confirmation prompt. This is there to prevent accidents.
[02:33] Click Delete again to confirm. The entry disappears from the list.
[02:37] If you don't see the change right away, give the page a quick refresh or
[02:42] make sure a filter isn't hiding it.
[02:45] And that's it. You've seen how to edit content with a little help from the AI Assistant.
[02:51] Copy an entry to speed up your work and safely delete what you no longer need.
[02:57] Managing entries really comes down to these everyday actions,
[03:01] and once you've done them a couple of times, they'll feel second nature.
```

#### Key takeaways

- Connect **Managing Entries** 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 — Managing Assets

<!-- ai_metadata: {"lesson_id":"05","type":"video","duration_seconds":264,"video_url":"https://cdn.jwplayer.com/previews/bSYHK7UA","thumbnail_url":"https://cdn.jwplayer.com/v2/media/bSYHK7UA/poster.jpg?width=720","topics":["Managing","Assets"]} -->

#### Video details

#### At a glance

- **Title:** Managing Assets
- **Duration:** 4m 24s
- **Media link:** https://cdn.jwplayer.com/previews/bSYHK7UA
- **Publish date (unix):** 1757641338

#### Streaming renditions

- application/vnd.apple.mpegurl
- audio/mp4 · AAC Audio · 113718 kbps
- video/mp4 · 180p · 180p · 151182 kbps
- video/mp4 · 270p · 270p · 176150 kbps
- video/mp4 · 360p · 360p · 197997 kbps
- video/mp4 · 406p · 406p · 213690 kbps
- video/mp4 · 540p · 540p · 267153 kbps
- video/mp4 · 720p · 720p · 351407 kbps
- video/mp4 · 1080p · 1080p · 593736 kbps

#### Timed text tracks (delivery)

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

#### Transcript

In this lesson, we're going to take a closer look at how to manage your visual assets. Think of this as everything that isn't plain text, your images, videos, PDFs, even audio files. By the end, you'll know how to upload, organize, and filter through them, and also how to safely clean things up when you don't need a file anymore. So first, let's talk about what the assets repository actually is. Think of it as your media library. This is where all your reusable files live. Anytime you upload an image or a video, it's stored here, so you can pull it into multiple entries without having to re-upload it each time. One thing to keep in mind, assets are branch specific. That means if you're working in development, the assets you upload there won't automatically appear in production. It's a way to safely test things without cluttering your live environment. Alright, let's upload something. From your stack, click the assets icon, or if you like shortcuts, just hit the A key. Here's the easiest way. Drag a file right into the assets area. You'll see it start uploading immediately. Or, if you'd rather, click plus new asset and then choose your file. Remember, you can bring in up to 10 files at a time, and each file can be up to 700 megabytes. Now, to keep things organized, you can set up folders. Let's say we want a folder called hero images. Ignore that we have one called hero banners. This is just a demo. Create that first by clicking the new asset folder icon and typing in the name hero images. Once it's created, drop your images into it. It's just like organizing files on your computer. Folders help keep your library clean, especially as it grows. Once an asset is uploaded, click into it and you'll see all the details. Title, description, tags you can add. I'll type in homepage because that's where this image is used. Plus, file specific info like type, size, and resolution. There's even a referenced in section that shows you which entries are using this asset. Super handy when you're trying to track things down. Now, let's say your library is getting a little crowded. That's where filters come in. Return to the main assets area and over on the left, click filters. You can narrow down by folder, file type, who uploaded it, when it was last updated, or even by tags. For example, if I only want to see hero images that are tagged homepage, I can filter for that. Down below, I can choose manage filters and turn on tags. Then I can either type to narrow down the tag list, but in this case, I can just select the tag I want to filter by. The results pop right up and the filters I've applied appear at the top as little pills I can clear out anytime. It makes finding exactly what you need really fast. Alright, let's talk about cleanup. Maybe we uploaded the wrong image or an outdated promo video. To delete an asset, just open the actions menu next to it and choose delete. Now here's the nice part. ContentStack doesn't just wipe it away instantly. Deleted assets go into trash where they'll sit for 14 days. So if you make a mistake, you can always restore it. After that 14-day window, they're gone for good. To access the trash, click in the top menu bar as long as you're in the CMS. Then choose trash on the left side. And that's it. You now know how to get assets into ContentStack, keep them organized, quickly track them down, and safely remove the ones you no longer need. With this foundation, you'll spend less time hunting for files and more time creating content.

#### Subtitles (WebVTT)

```webvtt
WEBVTT

1
00:00:00.000 --> 00:00:05.120
In this lesson, we're going to take a closer look at how to manage your visual assets.

2
00:00:05.760 --> 00:00:14.320
Think of this as everything that isn't plain text, your images, videos, PDFs, even audio files.

3
00:00:14.960 --> 00:00:19.280
By the end, you'll know how to upload, organize, and filter through them,

4
00:00:19.280 --> 00:00:24.080
and also how to safely clean things up when you don't need a file anymore.

5
00:00:24.720 --> 00:00:29.680
So first, let's talk about what the assets repository actually is.

6
00:00:30.240 --> 00:00:33.120
Think of it as your media library.

7
00:00:33.120 --> 00:00:36.080
This is where all your reusable files live.

8
00:00:36.080 --> 00:00:40.160
Anytime you upload an image or a video, it's stored here,

9
00:00:40.160 --> 00:00:45.760
so you can pull it into multiple entries without having to re-upload it each time.

10
00:00:46.560 --> 00:00:50.800
One thing to keep in mind, assets are branch specific.

11
00:00:50.800 --> 00:00:53.600
That means if you're working in development,

12
00:00:53.600 --> 00:00:58.640
the assets you upload there won't automatically appear in production.

13
00:00:58.640 --> 00:01:03.120
It's a way to safely test things without cluttering your live environment.

14
00:01:03.840 --> 00:01:05.840
Alright, let's upload something.

15
00:01:05.840 --> 00:01:12.720
From your stack, click the assets icon, or if you like shortcuts, just hit the A key.

16
00:01:12.720 --> 00:01:14.160
Here's the easiest way.

17
00:01:14.160 --> 00:01:19.760
Drag a file right into the assets area. You'll see it start uploading immediately.

18
00:01:19.760 --> 00:01:25.760
Or, if you'd rather, click plus new asset and then choose your file.

19
00:01:25.760 --> 00:01:33.680
Remember, you can bring in up to 10 files at a time, and each file can be up to 700 megabytes.

20
00:01:33.680 --> 00:01:37.360
Now, to keep things organized, you can set up folders.

21
00:01:37.360 --> 00:01:40.640
Let's say we want a folder called hero images.

22
00:01:40.640 --> 00:01:44.080
Ignore that we have one called hero banners.

23
00:01:44.800 --> 00:01:46.400
This is just a demo.

24
00:01:46.400 --> 00:01:54.160
Create that first by clicking the new asset folder icon and typing in the name hero images.

25
00:01:54.800 --> 00:01:57.360
Once it's created, drop your images into it.

26
00:01:57.360 --> 00:02:01.120
It's just like organizing files on your computer.

27
00:02:01.120 --> 00:02:06.320
Folders help keep your library clean, especially as it grows.

28
00:02:07.040 --> 00:02:12.000
Once an asset is uploaded, click into it and you'll see all the details.

29
00:02:12.000 --> 00:02:15.600
Title, description, tags you can add.

30
00:02:15.600 --> 00:02:20.240
I'll type in homepage because that's where this image is used.

31
00:02:20.240 --> 00:02:25.280
Plus, file specific info like type, size, and resolution.

32
00:02:25.280 --> 00:02:31.600
There's even a referenced in section that shows you which entries are using this asset.

33
00:02:31.600 --> 00:02:34.080
Super handy when you're trying to track things down.

34
00:02:34.720 --> 00:02:38.160
Now, let's say your library is getting a little crowded.

35
00:02:38.160 --> 00:02:40.080
That's where filters come in.

36
00:02:40.080 --> 00:02:45.120
Return to the main assets area and over on the left, click filters.

37
00:02:45.120 --> 00:02:53.200
You can narrow down by folder, file type, who uploaded it, when it was last updated, or even by tags.

38
00:02:53.200 --> 00:02:59.520
For example, if I only want to see hero images that are tagged homepage, I can filter for that.

39
00:03:00.160 --> 00:03:05.440
Down below, I can choose manage filters and turn on tags.

40
00:03:05.440 --> 00:03:08.960
Then I can either type to narrow down the tag list,

41
00:03:08.960 --> 00:03:13.680
but in this case, I can just select the tag I want to filter by.

42
00:03:13.680 --> 00:03:22.080
The results pop right up and the filters I've applied appear at the top as little pills I can clear out anytime.

43
00:03:22.080 --> 00:03:26.320
It makes finding exactly what you need really fast.

44
00:03:26.320 --> 00:03:28.720
Alright, let's talk about cleanup.

45
00:03:28.720 --> 00:03:32.560
Maybe we uploaded the wrong image or an outdated promo video.

46
00:03:32.560 --> 00:03:38.560
To delete an asset, just open the actions menu next to it and choose delete.

47
00:03:39.200 --> 00:03:40.720
Now here's the nice part.

48
00:03:40.720 --> 00:03:44.000
ContentStack doesn't just wipe it away instantly.

49
00:03:44.000 --> 00:03:48.720
Deleted assets go into trash where they'll sit for 14 days.

50
00:03:48.720 --> 00:03:52.880
So if you make a mistake, you can always restore it.

51
00:03:52.880 --> 00:03:56.720
After that 14-day window, they're gone for good.

52
00:03:56.720 --> 00:04:01.600
To access the trash, click in the top menu bar as long as you're in the CMS.

53
00:04:02.160 --> 00:04:04.640
Then choose trash on the left side.

54
00:04:05.200 --> 00:04:06.320
And that's it.

55
00:04:06.320 --> 00:04:10.160
You now know how to get assets into ContentStack,

56
00:04:10.160 --> 00:04:16.960
keep them organized, quickly track them down, and safely remove the ones you no longer need.

57
00:04:16.960 --> 00:04:22.800
With this foundation, you'll spend less time hunting for files and more time creating content.

```

```transcript
<!-- PLACEHOLDER: replace with real transcript before publish if cues were auto-derived from WebVTT -->
[00:00] In this lesson, we're going to take a closer look at how to manage your visual assets.
[00:05] Think of this as everything that isn't plain text, your images, videos, PDFs, even audio files.
[00:14] By the end, you'll know how to upload, organize, and filter through them,
[00:19] and also how to safely clean things up when you don't need a file anymore.
[00:24] So first, let's talk about what the assets repository actually is.
[00:30] Think of it as your media library.
[00:33] This is where all your reusable files live.
[00:36] Anytime you upload an image or a video, it's stored here,
[00:40] so you can pull it into multiple entries without having to re-upload it each time.
[00:46] One thing to keep in mind, assets are branch specific.
[00:50] That means if you're working in development,
[00:53] the assets you upload there won't automatically appear in production.
[00:58] It's a way to safely test things without cluttering your live environment.
[01:03] Alright, let's upload something.
[01:05] From your stack, click the assets icon, or if you like shortcuts, just hit the A key.
[01:12] Here's the easiest way.
[01:14] Drag a file right into the assets area. You'll see it start uploading immediately.
[01:19] Or, if you'd rather, click plus new asset and then choose your file.
[01:25] Remember, you can bring in up to 10 files at a time, and each file can be up to 700 megabytes.
[01:33] Now, to keep things organized, you can set up folders.
[01:37] Let's say we want a folder called hero images.
[01:40] Ignore that we have one called hero banners.
[01:44] This is just a demo.
[01:46] Create that first by clicking the new asset folder icon and typing in the name hero images.
[01:54] Once it's created, drop your images into it.
[01:57] It's just like organizing files on your computer.
[02:01] Folders help keep your library clean, especially as it grows.
[02:07] Once an asset is uploaded, click into it and you'll see all the details.
[02:12] Title, description, tags you can add.
[02:15] I'll type in homepage because that's where this image is used.
[02:20] Plus, file specific info like type, size, and resolution.
[02:25] There's even a referenced in section that shows you which entries are using this asset.
[02:31] Super handy when you're trying to track things down.
[02:34] Now, let's say your library is getting a little crowded.
[02:38] That's where filters come in.
[02:40] Return to the main assets area and over on the left, click filters.
[02:45] You can narrow down by folder, file type, who uploaded it, when it was last updated, or even by tags.
[02:53] For example, if I only want to see hero images that are tagged homepage, I can filter for that.
[03:00] Down below, I can choose manage filters and turn on tags.
[03:05] Then I can either type to narrow down the tag list,
[03:08] but in this case, I can just select the tag I want to filter by.
[03:13] The results pop right up and the filters I've applied appear at the top as little pills I can clear out anytime.
[03:22] It makes finding exactly what you need really fast.
[03:26] Alright, let's talk about cleanup.
[03:28] Maybe we uploaded the wrong image or an outdated promo video.
[03:32] To delete an asset, just open the actions menu next to it and choose delete.
[03:39] Now here's the nice part.
[03:40] ContentStack doesn't just wipe it away instantly.
[03:44] Deleted assets go into trash where they'll sit for 14 days.
[03:48] So if you make a mistake, you can always restore it.
[03:52] After that 14-day window, they're gone for good.
[03:56] To access the trash, click in the top menu bar as long as you're in the CMS.
[04:02] Then choose trash on the left side.
[04:05] And that's it.
[04:06] You now know how to get assets into ContentStack,
[04:10] keep them organized, quickly track them down, and safely remove the ones you no longer need.
[04:16] With this foundation, you'll spend less time hunting for files and more time creating content.
```

#### Key takeaways

- Connect **Managing Assets** 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 — Understanding Asset URLs and Metadata

<!-- ai_metadata: {"lesson_id":"06","type":"video","duration_seconds":174,"video_url":"https://cdn.jwplayer.com/previews/Pa89JRVq","thumbnail_url":"https://cdn.jwplayer.com/v2/media/Pa89JRVq/poster.jpg?width=720","topics":["Understanding","Asset","URLs","and","Metadata"]} -->

#### Video details

#### At a glance

- **Title:** Understanding Asset URLs and Metadata.mp4
- **Duration:** 2m 54s
- **Media link:** https://cdn.jwplayer.com/previews/Pa89JRVq
- **Publish date (unix):** 1757693687

#### Streaming renditions

- application/vnd.apple.mpegurl
- audio/mp4 · AAC Audio · 113772 kbps
- video/mp4 · 180p · 180p · 185894 kbps
- video/mp4 · 270p · 270p · 243630 kbps
- video/mp4 · 360p · 360p · 294945 kbps
- video/mp4 · 406p · 406p · 335306 kbps
- video/mp4 · 540p · 540p · 479154 kbps
- video/mp4 · 720p · 720p · 715848 kbps
- video/mp4 · 1080p · 1080p · 1564741 kbps

#### Timed text tracks (delivery)

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

#### Transcript

Every asset isn't just a file. It comes with a story, who uploaded it, when it was modified, where it's being used, and the web addresses that allow developers and front ends to pull it into your site. This is where metadata and asset URLs come into play. When you click into an asset, ContentStack shows you more than just a preview. You'll see details like file type, size, dimensions, and even a list of entries that reference the asset. That's critical for knowing whether it's safe to delete or replace something. You'll also see the asset's UID, a unique identifier that never changes, and two different URLs, the file URL and the permanent URL. Here's the distinction. The file URL points to the specific file you uploaded. If you replace that file with a new one, the file URL changes. Think of it as a snapshot in time. The permanent URL is a stable link that always points to the latest version of the asset. Even if you update or replace the file, the permanent URL stays the same and automatically delivers the new version. Think of it as the permanent address that always leads to the current file. So why does this matter? If you're linking an asset into templates, websites, or emails, you'll want to use the permanent URL. It ensures that when the file is updated, your front end doesn't break. Your content automatically reflects the latest version. You may have to create a permanent URL link if one doesn't exist. Just click the Generate Permanent URL link. You'll see it's generated. Then just save the asset. Let's see how this works in practice. With this asset, find the Permanent URL field. Click Copy URL, then paste it into a new browser tab. Notice the image renders immediately. Now imagine replacing this file with a new version. If you were to refresh the browser or call the image from a different app, you'd see the updated file even though you're calling the exact same URL. That's the reliability permanent URLs provide. They make asset delivery predictable and keep your experiences consistent without you having to hunt down broken links. Understanding the metadata and URLs behind your assets helps you make smarter decisions. Whether that's cleaning up unused files, checking dependencies before deleting, or knowing how the front end is pulling in your content. With this knowledge, you're managing assets with confidence, not guesswork.

#### Subtitles (WebVTT)

```webvtt
WEBVTT

1
00:00:00.000 --> 00:00:07.520
Every asset isn't just a file. It comes with a story, who uploaded it, when it was modified,

2
00:00:07.520 --> 00:00:14.080
where it's being used, and the web addresses that allow developers and front ends to pull

3
00:00:14.080 --> 00:00:21.280
it into your site. This is where metadata and asset URLs come into play. When you click into

4
00:00:21.280 --> 00:00:28.240
an asset, ContentStack shows you more than just a preview. You'll see details like file type,

5
00:00:28.240 --> 00:00:35.440
size, dimensions, and even a list of entries that reference the asset. That's critical for

6
00:00:35.440 --> 00:00:42.400
knowing whether it's safe to delete or replace something. You'll also see the asset's UID,

7
00:00:42.400 --> 00:00:50.800
a unique identifier that never changes, and two different URLs, the file URL and the permanent URL.

8
00:00:51.360 --> 00:00:57.520
Here's the distinction. The file URL points to the specific file you uploaded. If you replace

9
00:00:57.520 --> 00:01:05.040
that file with a new one, the file URL changes. Think of it as a snapshot in time. The permanent

10
00:01:05.040 --> 00:01:12.000
URL is a stable link that always points to the latest version of the asset. Even if you update

11
00:01:12.000 --> 00:01:19.360
or replace the file, the permanent URL stays the same and automatically delivers the new version.

12
00:01:19.920 --> 00:01:24.480
Think of it as the permanent address that always leads to the current file.

13
00:01:25.120 --> 00:01:31.840
So why does this matter? If you're linking an asset into templates, websites, or emails,

14
00:01:31.840 --> 00:01:37.760
you'll want to use the permanent URL. It ensures that when the file is updated,

15
00:01:37.760 --> 00:01:43.600
your front end doesn't break. Your content automatically reflects the latest version.

16
00:01:43.600 --> 00:01:50.080
You may have to create a permanent URL link if one doesn't exist. Just click the Generate

17
00:01:50.080 --> 00:01:56.080
Permanent URL link. You'll see it's generated. Then just save the asset. Let's see how this

18
00:01:56.080 --> 00:02:03.360
works in practice. With this asset, find the Permanent URL field. Click Copy URL,

19
00:02:03.360 --> 00:02:10.480
then paste it into a new browser tab. Notice the image renders immediately. Now imagine replacing

20
00:02:10.480 --> 00:02:15.920
this file with a new version. If you were to refresh the browser or call the image from a

21
00:02:15.920 --> 00:02:22.320
different app, you'd see the updated file even though you're calling the exact same URL. That's

22
00:02:22.320 --> 00:02:29.920
the reliability permanent URLs provide. They make asset delivery predictable and keep your experiences

23
00:02:29.920 --> 00:02:37.360
consistent without you having to hunt down broken links. Understanding the metadata and URLs behind

24
00:02:37.360 --> 00:02:42.960
your assets helps you make smarter decisions. Whether that's cleaning up unused files,

25
00:02:42.960 --> 00:02:49.280
checking dependencies before deleting, or knowing how the front end is pulling in your content.

26
00:02:49.280 --> 00:02:54.240
With this knowledge, you're managing assets with confidence, not guesswork.

```

```transcript
<!-- PLACEHOLDER: replace with real transcript before publish if cues were auto-derived from WebVTT -->
[00:00] Every asset isn't just a file. It comes with a story, who uploaded it, when it was modified,
[00:07] where it's being used, and the web addresses that allow developers and front ends to pull
[00:14] it into your site. This is where metadata and asset URLs come into play. When you click into
[00:21] an asset, ContentStack shows you more than just a preview. You'll see details like file type,
[00:28] size, dimensions, and even a list of entries that reference the asset. That's critical for
[00:35] knowing whether it's safe to delete or replace something. You'll also see the asset's UID,
[00:42] a unique identifier that never changes, and two different URLs, the file URL and the permanent URL.
[00:51] Here's the distinction. The file URL points to the specific file you uploaded. If you replace
[00:57] that file with a new one, the file URL changes. Think of it as a snapshot in time. The permanent
[01:05] URL is a stable link that always points to the latest version of the asset. Even if you update
[01:12] or replace the file, the permanent URL stays the same and automatically delivers the new version.
[01:19] Think of it as the permanent address that always leads to the current file.
[01:25] So why does this matter? If you're linking an asset into templates, websites, or emails,
[01:31] you'll want to use the permanent URL. It ensures that when the file is updated,
[01:37] your front end doesn't break. Your content automatically reflects the latest version.
[01:43] You may have to create a permanent URL link if one doesn't exist. Just click the Generate
[01:50] Permanent URL link. You'll see it's generated. Then just save the asset. Let's see how this
[01:56] works in practice. With this asset, find the Permanent URL field. Click Copy URL,
[02:03] then paste it into a new browser tab. Notice the image renders immediately. Now imagine replacing
[02:10] this file with a new version. If you were to refresh the browser or call the image from a
[02:15] different app, you'd see the updated file even though you're calling the exact same URL. That's
[02:22] the reliability permanent URLs provide. They make asset delivery predictable and keep your experiences
[02:29] consistent without you having to hunt down broken links. Understanding the metadata and URLs behind
[02:37] your assets helps you make smarter decisions. Whether that's cleaning up unused files,
[02:42] checking dependencies before deleting, or knowing how the front end is pulling in your content.
[02:49] With this knowledge, you're managing assets with confidence, not guesswork.
```

#### Key takeaways

- Connect **Understanding Asset URLs and Metadata** 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/creating-and-managing-content/understanding-entries | /academy/md/courses/creating-and-managing-content/understanding-entries.md |
| /courses/creating-and-managing-content/creating-an-entry | /academy/md/courses/creating-and-managing-content/creating-an-entry.md |
| /courses/creating-and-managing-content/rich-text-editors | /academy/md/courses/creating-and-managing-content/rich-text-editors.md |
| /courses/creating-and-managing-content/managing-entries | /academy/md/courses/creating-and-managing-content/managing-entries.md |
| /courses/creating-and-managing-content/managing-assets | /academy/md/courses/creating-and-managing-content/managing-assets.md |
| /courses/creating-and-managing-content/understanding-asset-urls-and-metadata | /academy/md/courses/creating-and-managing-content/understanding-asset-urls-and-metadata.md |

## Supplement for indexing

### Content summary

Creating and managing content is at the heart of working in Contentstack, and this course shows you how to do it with confidence. You’ll start by learning the fundamentals of entries—what they are, how to organize them, … Creating and managing content is at the heart of working in Contentstack, and this course shows you how to do it with confidence. You’ll start by learning the fundamentals of entries—what they are, how to organize them, and how to create new ones for your site. From there, you’ll explore how to manage entries effectively, whether that means editing, copying, deleting, or importing them into your stack. You’ll also dive into the Assets module, where you’ll discover how to upload, filter, tag, and delete files, as well as how to work with metadata, file URLs, and permanent URLs to ensure reliabl

### Retrieval tags

- cms
- content management
- authoring
- creating-and-managing-content
- Understanding
- Entries
- Creating
- Entry
- Rich
- Text
- Editors
- Managing
- Assets
- Asset

### 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: creating-and-managing-content. Union of lesson topic tokens: Understanding, Entries, Creating, Entry, Rich, Text, Editors, Managing, Assets, Asset, URLs, and, Metadata.
Do not embed or retrieve LMS-only quiz items or mastery exam answer keys from this export.

### Asset references

| Label | URL |
| --- | --- |
| Video thumbnail: Understanding Entries | `https://cdn.jwplayer.com/v2/media/iPGu30ZB/poster.jpg?width=720` |
| Video thumbnail: Creating an Entry | `https://cdn.jwplayer.com/v2/media/yzWx2X5g/poster.jpg?width=720` |
| Video thumbnail: Rich Text Editors | `https://cdn.jwplayer.com/v2/media/TQW4P84x/poster.jpg?width=720` |
| Video thumbnail: Managing Entries | `https://cdn.jwplayer.com/v2/media/WVH2rahw/poster.jpg?width=720` |
| Video thumbnail: Managing Assets | `https://cdn.jwplayer.com/v2/media/bSYHK7UA/poster.jpg?width=720` |
| Video thumbnail: Understanding Asset URLs and Metadata | `https://cdn.jwplayer.com/v2/media/Pa89JRVq/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/` |
