Skip to content
New: Customize your theme with an AI assistant. Read the guide

What Is Editable In Sanity

Files: sanity.config.ts, sanity/, src/config/config.toml · Skill level: Beginner

Run npm run dev:all, open the Studio at http://localhost:3333, and log in with your Sanity account. Content has one entry per language, then Site settings. Sanity has the full guide, including npm run setup for your first project. Everything below exists in English, French, and Arabic, and each language has its own documents.

This list comes from the Studio’s schema and the code. No edit has been saved in a Studio on this theme yet: see What We Tested below.

Where Each Page Is Edited

All locations are under Content, then your language. Most of what a page shows comes from its sections, which are shared documents under Sections: see below.

AddressStudio locationSections it showsSections on this page rows
/Homepages > Home 1Banner, About one, Services section, Portfolio section, Solution steps section, Testimonial section, Customers, Call to action, Case studies section, Industries section, Contact section, Blog sectionHas rows, with no effect. Edit the section instead
/home-two/Homepages > Home 2Banner two, Roadmap section, Customers, Process section, Services section two, Portfolio section two, Testimonial section two, Video section, Award section, Team section, Blog section twoHas a row, with no effect. Edit the section instead
/about/Main pages > About pageVideo section, About company section, Services section, About process section, Team section, Testimonial section, Customers, Call to action, Award sectionNone
/awards/Main pages > Awards pageAward section, Our journey sectionNone
/contact/Main pages > Contact pageNone. Contact Section holds the officesForm: the contact form, here and on Home 1
/faq/Main pages > FAQ pageFaq sectionNone
/pricing/Main pages > Pricing pagePricing sectionNone
/services/Main pages > Services pageCall to action, Testimonial section three, Industries section, Solution steps section twoNone
/case-studies/Main pages > Case studies pageTestimonial sectionBanner Card Section
/team/Main pages > Team pageTeamwork section, Call to action twoBanner Card Section
/careers/Main pages > Careers pageJoin team section, Work with us section, Teamwork sectionNone
/industries/, /portfolio/, /blog/Main pages > Industries page, Portfolio page, Blog pageNoneNone
/services/{slug}/Services, one document per entryNoneOverview, Approach, Detail Images, Key Features, Why Choose Us, More Images
/portfolio/{slug}/Projects, one document per entryCall to action widgetChallenge, Solution, Process, Key Features, Detail Images, Results
/case-studies/{slug}/Case studies, one document per entryNoneChallenge, Solution, Process, Key Features, Detail Images, Stats
/industries/{slug}/Industries, one document per entryNoneDetails
/team/{slug}/Team members, one document per entryNoneSign Image
/careers/{slug}/, /blog/{slug}/Jobs, Blog posts, one document per entryNoneNone
/privacy-policy/, /terms-conditions/, /components/, and any page you addOther pagesFeatures, Call to actionNone
404Interface labels, under Not FoundNoneNone

On a detail page, the rows hold that entry’s own content. A category or tag page is built from the categories and tags on each entry. Main pages > Testimonials holds the client quotes.

Pages with an address also have SEO and page options, folded under their other fields: a meta title and description, a preview image (an entry with its own main image uses that), keywords, robots, the tagline switch, whether the page goes in the sitemap and the AI files, and draft (except Home 1 and Home 2). Entries also have a custom slug.

New Entries

Use the + button to add an entry to Blog posts, Case studies, Industries, Jobs, Other pages, Projects, Services, or Team members. Fill in the title and the File name, which becomes part of the address. Each language has its own documents.

A new entry with only a title won’t break the site, and it builds. Its card or page shows what you filled in, and images and other fields stay empty until you add them, so fill them in before you publish. We tested this in the bundled demo content, not on a real project.

Sections

Each section is under Sections, in each language. Editing one changes it on every page in the last column.

SectionWhere it appears
Banner, About one, Portfolio section, Solution steps section, Case studies section, Contact section, Blog section/
Banner two, Roadmap section, Process section, Services section two, Portfolio section two, Testimonial section two, Blog section two/home-two/
Services section/, /about/
Testimonial section/, /about/, /case-studies/
Customers/, /home-two/, /about/
Call to action/, /about/, /services/, and each page in Other pages
Industries section/, /services/
Video section, Team section/home-two/, /about/
Award section/home-two/, /about/, /awards/
About company section, About process section/about/
Our journey section/awards/
Faq section/faq/
Pricing section/pricing/
Testimonial section three, Solution steps section two/services/
Teamwork section/team/, /careers/
Call to action two/team/
Join team section, Work with us section/careers/
FeaturesEach page in Other pages
Call to action widgetEach project

To hide a section on every page that uses it, turn off Enable in its document. Call to action widget has no such field.

The pricing plans are in Pricing section, and the FAQ questions in Faq section. Many sections have more than one layout: set Options > Layout on the section. The field’s note lists the values.

Site-Wide Content

LocationWhat’s in it
MenusHeader menu, with dropdowns and the mega menu fields, Footer menu, with a Column heading and Column links for each column, and Legal links. Each language has its own. See Menus
Interface labelsButtons, labels, and form messages, Not Found, Side Menu, Footer, and SEO for another description or tagline in this language. Each language has its own
Site settingsOne for the whole site, below the languages: Site (title, Base URL, logo), SEO (including the AI files), Settings (forms, Contact Info, Navigation Button, Company Desk, Copyright, smooth scroll, Page Actions, and Theme Credit), Opengraph, Head for analytics tags, and Social

In Menus, Show hides an item. Menu items appear in their order in the list, so move an item there rather than changing Order.

Site settings apply when the site builds. While npm run dev:all runs, they are set to apply when you publish them. They don’t change as you type, and click-to-edit doesn’t reach them, so change them in their form.

Plans And Attributes

At the time of writing, Sanity’s free plan allows 2,000 attributes, one for each distinct field path in your content. Veltro’s demo content, with its images, measured 1,114 on a real project, so it fits. New fields use more. Sanity’s pricing page has the current limits.

Online Preview

Click-to-edit and draft preview are made for your own computer, with npm run dev:all. To use them online, your editors need a second copy of the site running as a small Node.js server, because drafts can’t be shown from static files. A static host can’t do this. See Sanity for the steps. Without a preview server, editors online can still edit in the Studio’s forms and publish.

What We Tested

With a real Sanity project, on one computer, in Chromium:

  • Importing the demo content: all 352 documents arrived as they are in the demo content, and the schema check passes.
  • A build from the project: the same pages as a build from the demo content, once image addresses are set aside. Every image address answered from Sanity’s CDN.
  • npm run dev:all and Live preview, logged in with a test token. On /about/ and /ar/about/: click the heading and its field opens, type and the draft shows in the preview only, press Publish and a visitor sees it, then put it back the same way. The Arabic field is right to left.
  • Clicking the heading also opens its field on /contact/, /blog/, /ar/blog/, and /pricing/.
  • The five-level menu: level 5 opened and typed in the Studio form in English and Arabic, with the draft showing in the preview, and all five levels open on the page. These menu drafts were not published.
  • Site settings: a change made to the document through Sanity’s API reached a page in about 2 seconds while npm run dev:all ran.

With no Sanity project: installing from a clean copy of the theme, the site running and building from the bundled demo content in all three languages, with the same pages as the Astro edition, the Studio’s schema check and its build, the steps npm run setup -- --dry-run would take, and adding and removing a language in the bundled demo content.

Not yet tested on Veltro: npm run setup creating a project (ours was made with the same Sanity commands), the preview server on a real project, the language scripts on a project, typing and publishing in French, publishing a menu change or typing in the Site settings form, creating a new document, and uploading an image in the Studio.

Not tested at all: any online host for the preview server, a deployed Studio, and webhooks.

Try these on your own project before you rely on them.

What Stays In Code

These change how the site is built, not what it says:

  • The page routes and the order of sections on a page: src/pages/[...lang]/.
  • Section and component design, reveal animations, colors, type scale, and fonts.
  • A few fixed interface graphics, such as the header’s menu icon.
  • The team grid layout on the About page.
  • The list of languages: src/config/language.json.
  • Favicons, and the language settings and collection folder names in config.toml.
  • Which sections and fields exist. To add one, see SKILLS.md.

A few fields do nothing on this theme, besides the homepage rows: Site settings > Settings > Subscription and Interface labels > Subscription (there is no newsletter form), Description and Button under Site settings > Settings > Header Offcanvas (the side panel’s text is in Interface labels > Side Menu), and some unused labels.

Do It With AI

I use the Sanity edition. Tell me where to edit [TEXT OR SETTING] in the Studio: the language entry,
the document, and the field. If it comes from a section document, say which pages will change.
Don't change any files, and don't print anything from .env.
Type something to search...