# Course: Hello, Structured Content
https://www.sanity.io/learn/course/hello-structured-content

After being introduced to what structured content is, how it can be used, and how to get started with content modeling, you'll have a foundation for using Sanity to create future-friendly content that is easy to manage.

---

## Navigation

## Contents

1. [An introduction to structured content](https://www.sanity.io/learn/course/hello-structured-content/intro-to-structured-content) · [markdown](https://www.sanity.io/learn/course/hello-structured-content/intro-to-structured-content.md)
2. [The Structured Content Framework](https://www.sanity.io/learn/course/hello-structured-content/structured-content-framework-lesson) · [markdown](https://www.sanity.io/learn/course/hello-structured-content/structured-content-framework-lesson.md)
3. [Content Modeling](https://www.sanity.io/learn/course/hello-structured-content/content-modeling-lesson) · [markdown](https://www.sanity.io/learn/course/hello-structured-content/content-modeling-lesson.md)

---

## Lesson 1: An introduction to structured content
https://www.sanity.io/learn/course/hello-structured-content/intro-to-structured-content

To set up Sanity to publish content faster and meet the needs of your audience and business with a consistent and connected customer experience, it's helpful to understand the underlying philosophy of Sanity: structured content. 

> [Video: Hello, Structured Content - Lesson 1 - Intro](https://www.sanity.io/learn/course/hello-structured-content/intro-to-structured-content)

## Definitions 



Here are some definitions that will help build an understanding of what Sanity offers. 



**Headless**



*A content management system (CMS) or other software product that separates where content is stored (the “body”) from where it is presented (the “head“).*



**Composable**



*A term applied to the technology that powers digital experiences. It’s an approach that involves being able to assemble software, frameworks, products, and information to meet today’s needs and easily evolve in the future.*



**Structured content**



*Information that is broken into its smallest reasonable pieces, which are explicitly organized and classified to be understandable by computers and humans.*



## What structured content enables



Structured content turns your content into data — the equivalent of LEGO bricks — that can be used over and over in different formations.



Contrary to how it sounds, structured content gives you maximum flexibility for creating endless experiences because it makes your information headless and composable. The structure is based on meaning and intent rather than presentation.



In this way, the "bricks" are put together to form a webpage rather than making the webpage a pre-built whole. You can compose or assemble your website, apps, and other delivery channels as needed from the same set of content data.



Here’s another way to look at it:



Unstructured content...



- Ties content directly to the presentation

- Implies meaning

- Lacks the possibility of reuse somewhere


An unstructured webpage like the one below uses generic section names and visual design terminology. 



![Wireframe showing layout defined by generic terms like Page Name, Description, Section heading, Card Title, and Heading.](https://cdn.sanity.io/images/3do82whm/next/7a61fcf9ab5518ab041344745df6b390618ee1e6-1920x2485.png)

Structured content is…



- Disconnected from the presentation

- Explicitly defined

- Possible to use anywhere


This same webpage built with structured content explicitly says what each thing is.



![Wireframe showing layout with labels like Industry Name, Industry summary, Value proposition, Industry description, Solution Name, Promotion heading, and Our Work.](https://cdn.sanity.io/images/3do82whm/next/b70252739c4f44b5b8ff359d40d4da69828a984d-1600x2071.png)

## Concepts over components



Structured content allows us to put concepts over user interface components.



Concepts are the things that exist whether or not you have a website or an app. Ultimately, most things that are represented digitally have some non-digital twin.



Insurance policies are made up of 



- declarations

- insuring agreements

- definitions

- exclusions

- conditions


Music venues have



- seating arrangements

- capacity levels

- age restrictions

- shows

- menu options


Whether you’re in the insurance or the live music business or something else entirely, you have concepts related to your business. They all need to be transformed into digital representations that allow people to get the information they need to make a decision to buy and move seamlessly into the buying process.



The goal of this course is to help you make this transition from blobs to chunks — from unstructured content that only works in a singular place to structured content that can be mixed and matched over and over. Aim for just enough structure to be future-friendly — good enough for now and ready to be updated easily when things change.



> [!TIP]
> Get more details about structured content in our [Guide to Structured Content](https://www.sanity.io/structured-content).



---

## Lesson 2: The Structured Content Framework
https://www.sanity.io/learn/course/hello-structured-content/structured-content-framework-lesson

Creating and using structured content is probably different than how you are creating and using digital content now.

> [Video: Hello, Structured Content - Lesson 2 - Structured Content Framework](https://www.sanity.io/learn/course/hello-structured-content/structured-content-framework-lesson)

## Coupled content and presentation 



A lot of digital content is embedded into the interface design in which it is displayed.



A webpage. An email. An app screen.



![A webpage, email, and app screen that have a series of images, text, and links coupled with the presentation of that channel.](https://cdn.sanity.io/images/3do82whm/next/f24f466fd28c26bd64df5ed96e7d0f83d7262434-3204x2500.png)

Let’s say you need to change the amount of a sales promotion. Without structured content, you have to find all the places you mentioned it throughout your website, on the app, and in the email system — not to mention on Google and other online aggregators. It might take you an hour or more to find and replace the amount everywhere and get it published. And you still run the risk of missing an instance.



What if you could make that change in less than 5 minutes?



## Principles of the structured content framework



The structured content framework is built on 3 principles:



1. Content drives the experience

2. Content is treated as data and modeled based on meaning

3. Content is centrally available


Before we go any further let’s agree on what content is.



**Content  
***Meaningful information that is expressed through a medium for human consumption.*



Content is the reason people are coming to you in the first place. Someone is looking for information or trying to complete a task and they find you — through your website, an app, or in search results.



### Principle 1: Content drives the experience



If content is the end product that humans consume and it is the reason people are coming to you in the first place, then content should drive the customer experience.



To allow content to drive, we need to move from nicely built but rigid containers to useful, usable, meaningful expressions of content.



Adding structure allows content to become the material of design. This means that you can select which pieces need to be used in any situation and then create an accessible, usable visual design that allows people to complete their tasks easily while feeling good about their interaction with you.



Let's take information about sponsorship for a conference as an example. Instead of putting sponsor logos or a sponsorship benefits table directly on a webpage, we can think about the characteristics of sponsorships and the companies that buy them.



Those characteristics become the pieces of content that come together however we need them to in different contexts. In this case, we use it to have a categorized listing of sponsor logos that appears in many places on the website and a grid of sponsorship packages. 



![Data about sponsorships (Level, Number available, Sponsors, and Benefits) is used in two different displays: A grid of logos categorized by sponsorship level and a grid of Sponsorship Packages.](https://cdn.sanity.io/images/3do82whm/next/afdb53df089ada614d6d44cd4fae76e64643bc11-3078x1574.png)

Now content is not trapped on a single-purpose webpage. It is free to go anywhere at any time.



### Principle 2: Content is treated as data and modeled based on meaning



You want to make content current, accurate, relevant, and trustworthy — in many places.



To do that as efficiently as possible, content needs to become data that has built-in meaning so that it can be used in any context.



A lesson webpage could be created based on visual design components that could contain anything.



![An unstructured webpage with Header, Hero, Content, and Sidebar sections](https://cdn.sanity.io/images/3do82whm/next/c2687bd5ccfca691b53e38604c9e013325a3d6ae-658x388.jpg)

Or we can think about a course being made up of lessons that are presented by a presenter.



![Content model schema showing courses made up of lessons presented by presenters](https://cdn.sanity.io/images/3do82whm/next/1228d50e48721b2acb3ae6999b07e0a1a865d04e-1577x920.png)

With that data, we can create a Course template that creates a new web page when you add the information about it to your CMS.



![A Course template with fields for Course Name, Lesson Name (times 3), and Language Data.](https://cdn.sanity.io/images/3do82whm/next/5f6b983b15ddf6e80b4f31565430ff5ddd11ac32-1920x1080.png)

We can also create a Lesson template that automatically creates a corresponding webpage when you publish the lesson information.



![A webpage that shows the semantic structure of the content: Language data, Lesson name, Label for a button, Presenter, and Course title.](https://cdn.sanity.io/images/3do82whm/next/8e0037723ba7e3022c560cd53ef6008a71538566-692x394.jpg)

This same information could be presented in many other places without changing the content.



Structured content provides the pathway to the ability to COPE: Create Once, Published Everywhere.



### Principle 3: Content is centrally available



It isn’t likely that your organization will have content in only one CMS or database. 



Structured content can be stored in and accessed through multiple content repositories.



Storing it as data allows it to be retrieved as needed and displayed with rules set by the interface, making dynamic displays possible at scale. It’s like having several bins of LEGO to pull from.



Here we have information from Shopify and Sanity coming together for an e-commerce website. No copying and pasting information! Just data connections that make the Shopify product data available in Sanity just like any content that natively lives in Sanity.



![Shopify product data is integrated into Sanity to produce an ecommerce website with content and product information mixed together.](https://cdn.sanity.io/images/3do82whm/next/21e82ba7c56bc87a54cc5f600dad8e76b5223099-3166x2196.png)

## Structured content framework in action



Let’s take a look at how this works using a live music venue management company as an example.



They have been operating a venue for five years and are now adding two new venues to their portfolio. While they have successfully managed the website for a single venue, the expansion means they need a more efficient way to manage information about their venues and shows so that they can promote them in a wide range of places.



Using Sanity, they can set up an Event content type that can be used for shows at any of the venues. They break it down into these fields, which match how concert-goers think about shows.



![Content model for an event showing field names and the questions they answer](https://cdn.sanity.io/images/3do82whm/next/6d73d12adf938b53176ee0e0ae64e56c90e92dd7-1431x872.png)

*Who is playing?*



- Headliner

- Supporting Acts

- Event Description


*When and where is the show?*



- Venue

- Date

- Door Time

- Show Start Time


*How much are tickets? Where do I get them?*



- Ticket Price

- Ticket Purchase Link


The company will also want other structured content types to…



- Make it easy to manage content for all the shows and venues at scale

- Power their evolving web presence

- Keep up with concert aggregators and ticket sellers


Choosing content types and defining the structure is done through content modeling, which we’ll get to in the next lesson.



When you take a step back and think about what your company does and offers rather than what each website and app will look like, you start to see how you can break everyday concepts into smaller chunks and represent them digitally in many ways and in many places. 



---

## Lesson 3: Content Modeling
https://www.sanity.io/learn/course/hello-structured-content/content-modeling-lesson

Structuring content makes content easier to manage and provides flexibility for future use cases without starting over.

> [Video: Hello, Structured Content Lesson 3 - Content Modeling](https://www.sanity.io/learn/course/hello-structured-content/content-modeling-lesson)

To make your content future-friendly and usable in any channel, it's best to start with a content model.



> [!TIP]
> Visually create and collaborate on Sanity Studio schema types with our [schema.club](https://schema.club) app!



## What is a content model?



"Content model" means different things to different people. Here's how we define it at Sanity.



**Content model  
***Documentation of the types of content and their relationships for a given organization or project*



The content model should be based on entities.



**Entity**   
*A thing or concept that is unique, distinguishable, and self-contained*



This should not be confused with instances of those entities.



**Instance  
***Unique and specific content* 



An *Event* is an **entity** while the *Taylor Swift Eras concert in Philadelphia on May 13, 2023,* is an **instance** of an Event.



## A Content model for a live music  venue production company



Let’s create a content model for our live music venue management company.



- [ ] Gather nouns - get some stickies and write down all the nouns related to the business.


Include everything, not just what’s currently on the website. This is a brainstorming exercise, so no right or wrong answers!



Here's where we started.



![Stickies for: Concerts, Artists, Venues, Audience, Tours, Staff, Crew, Merchandise, Bar, Tickets, Genres, Jobs](https://cdn.sanity.io/images/3do82whm/next/a46a2f2da2b878f45d6cce8bfa93ab8cebe5ab05-1634x1616.png)

- [ ] Decide on content types


The next step is to figure out which of these are content types that we need for our digital experiences.



**Content type  
***a reusable container for storing content that has a common structure*



*Note that the best practice is using the singular word version to name content types.*



We can remove a few things from our list that are important to the business but don’t need to be modeled for our digital experiences.



- Audience

- Staff

- Crew


Others are more a way to classify multiple content types:



- **Genre** can be applied to **Artist** or **Event**

- **Tour** can be a property of the Event when applicable since we won’t be hosting the entire tour


We then refine the names of the rest of these nouns and make them singular.



![Stickies updated to take out Audience, Staff, Crew, Genre, and Tour, and leave Event, Venue, Artist, Merchandise, Ticket, Bar Item, Job Description.](https://cdn.sanity.io/images/3do82whm/next/ee94b6b0b6d84c4b6b15729c682f807b7e8ca004-1634x1616.png)

- [ ] Define content types


Now that we have decided which of our nouns are content types, we define them. This will further validate that these are the right-sized entities. And this will provide clarity for our future selves and our colleagues.



- **Artist **— Act that performs

- **Bar Item **— Unit of food or beverage sold at the venue bar

- **Event** — Show or activity that takes place at a venue

- **Job Description **—** **Details about roles for hire

- **Merchandise** — Goods sold at a venue

- **Ticket **— Pass that provides admission to the holder

- **Venue **—** **A building designated for entertainment events

- [ ] Connect the content types by drawing arrows between them and labeling the relationships.


Maybe you’ve already started to think about how these content types relate to one another. Let’s do that officially now.



![Content model showing Ticket admitTo Event, Artist performsAt Event and sells Merchandise, Event takesPlaceAt Venue, Venue sells Merchandise and Bar Item and posts Job Description.](https://cdn.sanity.io/images/3do82whm/next/8fdf481fc82c450353d7eb44789c2039f19b593a-1758x1456.png)

There we have it! Our live music venue management company’s content model.



## Content strategy tool



Because this model wasn’t built around any specific interface or content management system, it is a content strategy tool — a way to look at all your content and see what it reveals.



In this case, *Venue* and *Event* are our central content types. This makes sense since we produce live music events at our venues! This can inform our websites, our promotional posters, social media posts, and more.



Your organization’s content model might reveal something not so obvious but equally as valuable.



You do not have to implement the whole content model now. It helps you be future-friendly rather than trying to be future-proof. You don’t have to know what you’ll need in 1 or 2 or 5 years. This is meant to evolve as you grow.



## Sanity Studio planning



Since our short-term goal is to set up Sanity to support our expanded business and the new websites, we will focus on just part of the content model to make sure we can promote and sell tickets for upcoming events. That leaves us with just three content types:



- Event

- Artist

- Venue


Now we can move into planning our schema for Sanity. The schema defines the Studio, which is the Sanity editorial interface where people will create and manage content.



Before we jump into code, we have a collaborative session that includes our marketing manager, web designer, and lead developer. This way we can be sure to create an editorial environment that is sustainable for efficient content operations and provides the material that designers and developers need to create the end-user experiences.



> [!TIP]
> Get the [Studio Build Workbook](https://docs.google.com/spreadsheets/d/1b7FwdIa7MBGgOEZT7Yn_ntoLk78e_EnKUc9U8wqGFso/edit?usp=sharing) template to help you with this work. 



Here’s how we defined the Sanity Document Type for Event:



![Snippet of a Studio Build Workbook for defining the Event document type in Sanity. Details in text.](https://cdn.sanity.io/images/3do82whm/next/44860355ac7f6b25d69c1b99a7695428fa0c1e22-3460x868.png)

Some insights into how we decided on the fields for the Document Type.



- The **Event Title** (field type: String) will be used to identify the event in the CMS.

- For the **Event Date & Time **(field type: Datetime), we want to be able to pick a date and enter the time.

- Since we don’t want to repeat the date for designating the time the **Doors Open** (field type: List (30, 45, 60, 90, 120)), we’ll just set a number of minutes before the show time and calculate the time for display on the front-end.

- We’ll have a separate document type for **Venue**, just we just need to pick it here through a Reference field type.

- We’ll select from a reference list of Artists for our **Headline **and** Supporting Acts**. Every event will have a headliner, but not all will have a supporting act, so Headline Act is required but Supporting Act is not — and we want to be able to select multiple Supporting Acts.

- Remember how we removed **Tour** (field type: String) as a content type? Here it is! If the tour name is relevant to a show, we can enter it here.

- Since most events are self-explanatory, we aren’t making **Details** (field type: Rich text) required.

- Since we don’t sell tickets directly, we’ll just add the **Ticket URL** (field type: URL) here.


Now our developer can code the schemas, launch the Studio, and have our marketing manager start to enter content to make sure it all works the way they expect. And our designer will have live and real data to use to populate and test user interface designs.



## What about other pages?



You might notice that the content model has no opinion on actual web pages. That’s because the content model only has opinions about what the entities behind the web pages are. 



The content model will provide about 80% — 90% of the content in any given interface, whether that's a website, an app, or a digital kiosk. You will need additional wayfinding, aggregation, and curated pages to make the end experience usable. 



Don’t try to make your content model fit every item of content you’ll ever publish. You’ll get to the remaining 10% — 20% of content when you design the interface.



The purpose of the content model is to define the structure of your information. It is a foundation on which you can build (and rebuild) many applications using the same pieces of content.



> [!TIP]
> Get our [Guide to Content Modeling](https://www.sanity.io/content-modeling) for additional details.



---

## Related Resources

- [All courses and lessons](https://www.sanity.io/learn/sitemap.md)
- [Complete content for LLMs](https://www.sanity.io/learn/llms-full.txt)
