Integration Guide
Sanity

Getting Started

Connect your Sanity project to LMSMore and build courses where your team already writes. Hand this guide to a developer: the course types are added to your Studio in code, then the connection needs a project ID, a dataset name and a read-only token.

Self-serve from the admin console
A developer adds the course types to your Studio

What you'll need

1

Sanity Account

You'll need a Sanity account.

Sign up free
2

Sanity Project

A Sanity project whose Studio schema defines the LMSMore content types.

Manage projects
3

LMSMore Account

Sign up for LMSMore or log into your existing account to access the integration wizard.

Start free trial

Step-by-step setup

Follow these four steps to connect your Sanity project and start creating courses

1

Create a Sanity Project

Set up a new Sanity project or use an existing one.

What to do:

  • Go to sanity.io/manage and sign in
  • Click 'Create new project'
  • Enter a project name (e.g., 'My LMS Content')
  • Choose 'Create empty project'
  • Keep the default dataset name 'production'
Pro Tip

Your Project ID appears on the project dashboard after creation; you'll need this for the connection step.

2

Install Content Schema

Define the LMSMore content types in your Sanity Studio schema.

What to do:

  • Add the content types listed below to your Studio's schema
  • Use the type names exactly as listed: we read courses from the course type and learning paths from the learningPath type
  • Deploy the updated schema so your team can create courses
  • LMSMore does not install a schema into your project
Pro Tip

Sanity schemas are code in your Studio, so this step needs someone who can edit and deploy it. We read content only through these types; there is no field mapping from other types.

3

Create an API Token

Generate a read-only token for secure content access.

What to do:

  • Go to your project in sanity.io/manage
  • Click 'API' in the left sidebar
  • Navigate to the 'Tokens' tab
  • Click 'Add API token'
  • Name it 'LMS Read Access' and select 'Viewer' permission
  • Copy the token immediately; it won't be shown again
Pro Tip

Viewer permission only allows reading content. Your content cannot be modified through this token, keeping your data safe.

4

Connect in LMSMore

Link your Sanity project to LMSMore and start creating courses.

What to do:

  • Log in to your LMSMore admin panel
  • Go to Content source (/admin/cms)
  • Click 'Set up' next to Sanity
  • Enter your Project ID, Dataset, and API Token
  • Click 'Test Connection' to verify
  • If successful, click 'Save & Activate'
Pro Tip

The Studio URL is optional: enter the name from name.sanity.studio and LMSMore shows 'Edit in Sanity' links to your Studio.

You're All Set!

Once connected, we read your Sanity project on every page view: your project is the only source of course content. Publish a course and your learners can enroll from the catalog straight away.

Content types to define

Define these content types in your Studio schema; LMSMore reads them from your project

course

Main courses with title, description, and cover image

module

Sections within a course

lesson

Individual learning content with text and quizzes

question

Quiz questions for assessments

learningPath

Curated sequences of courses

certificate

Completion certificates

Lesson Block Object Types

Define these object types inside a lesson's content field to use the LMSMore lesson blocks. Any other object type inside lesson content is not rendered.

lessonHighlightCallout

Fields LMSMore reads: title, description, icon, accentColor

lessonProTip

Fields LMSMore reads: title, teaser, insight

lessonTakeaway

Fields LMSMore reads: takeaways

contentGroup

Fields LMSMore reads: heading, displayType, contentItems: an array of references to a document type carrying heading and text, which the query dereferences

videoEmbed

One YouTube video. Fields LMSMore reads: url (a link to one video), title, caption, startTime (seconds, overriding any time in the link) and summary (shown to learners as a transcript and used by the AI tutor). An object of type youtube with a url field is read the same way

Content Structure Overview

Course Structure

Course
├── Title, Description, Cover Image
├── Level (Beginner, Intermediate, Advanced)
├── Requirements & Learning Objectives
└── Modules
├── Module Title & Description
└── Lessons
├── Lesson Title & Content
└── Quiz Questions

Learning Path Structure

Learning Path
├── Name & Description
├── Courses (in order)
└── Certificate (on completion)

What you get

What the Sanity connector includes

Read on Every View

We read your project on every page view, so learners see what you published. There is no sync job, nothing to wire up in your CMS, and no copy stored on our side.

English Only

Lessons show your content as it exists in your CMS; the LMSMore app around it is in English only.

Read-Only Access

A Viewer token is enough. We read your content; we do not write to your project.

Edit in Sanity Studio

Your team keeps editing in Sanity Studio. LMSMore only displays and delivers your published learning content.

Quick reference

What You NeedWhere to Find It
Project IDsanity.io/manage → Your Project → Dashboard
DatasetUsually 'production'; check in Project Settings
API TokenAPI → Tokens → Add API token (Viewer permission)
Studio URLYour deployed studio subdomain (optional)

Troubleshooting

"Connection failed" error

  • Check your Project ID: copy it directly from your Sanity dashboard
  • Verify your API token: tokens can't be viewed after creation; create a new one if unsure
  • Check the dataset name: it's case-sensitive; usually 'production'

"Content not appearing" error

  • Make sure your content is published, not just saved as a draft
  • Check that you're using the correct dataset
  • Verify the content types match what LMSMore expects

Frequently asked questions

Can I use an existing Sanity project?

Yes. Add the LMSMore content types to its Studio schema; LMSMore reads content only through those types.

What permissions does the API token need?

Only Viewer (read-only). LMSMore does not write to your Sanity project; all content editing happens in Sanity Studio.

Can I edit content directly in LMSMore?

No, content editing happens in Sanity Studio. LMSMore only displays and delivers your learning content to learners.

How quickly do content changes appear?

We read your project on every page view, so learners see what you published: there is no sync job, nothing to wire up in your CMS, and no copy stored on our side. We read through Sanity's API CDN, which can briefly serve the previous version just after a publish.

Can I use both Contentful and Sanity?

Only one can be active at a time. Both configurations are saved, so a workspace can change source later, but courses do not move between sources, and learners enrolled in the old source's courses lose access to them.

Do I need to deploy Sanity Studio?

Your team edits content in a Studio that has the LMSMore types in its schema, so you need one; deploy it to sanity.studio or host it yourself. LMSMore reads from your dataset, not from the Studio.

Need help getting started?

Our team is here to help you set up your Sanity integration. Whether you have questions about the setup process or the content types to define, get in touch.

Ready when you are

Connect your project.

Connect your Sanity project and build your first course in the editor your team already uses.