Plan your content

Before you create anything, sort every page of your site into one of four kinds, and write down the fields of each content type. Ten minutes on paper saves renaming slugs later, which breaks links.

Sort your pages into five kinds

KindUse it forEdited in
Content typeAnything you publish more than once with the same shape: articles, guides, case studies, events, team membersThe admin area, by editors
Standard pageAbout, Contact, FAQ, Privacy Policy, Terms, Cookie Policy: ready-made, with the contact form and your contact details on the Contact pageThe admin area, by editors, under Content, Info Pages (Write static pages)
Static pageHand-written pages that never change and need no editorHTML files in src/custom/site/pages/
Home pageYour landing page, with its signup formsrc/custom/site/home.html, published as a static page (Build your home page)
Signup formWaitlists, newsletters, early accessAdmin, Signup Forms; the form markup sits on a page of your site, or visitors use the form's own page

When in doubt, make it a content type. Content types get the editor, drafts, version history, SEO fields, the sitemap, search and translations. Static pages get none of those. About, Contact and the policies are already a content type, the standard pages.

A content type does not have to have pages of its own. Turn Generate public pages off for parts of a page that editors change, such as services, a hero, testimonials or partner logos: they show as cards on your home page, with no item or list pages and no sitemap, feed or search entry (see Let editors change your home page). The same setting suits data that only your app's own pages read. Give such a type Your own order when the order matters.

Sketch each content type

For each type write down its plural and singular name (Articles, Article), its slug (articles), and the fields it adds. Every item already has a title, a URL slug, a cover image, a body, a summary, a published date, tags, an author and a read time worked out from the body, so list only what is extra, such as a price, an event date or a gallery. The field types are listed in Define content types.

Do not add a custom field for something every item already has, such as a Title or URL Slug field. Editors then see two inputs for one thing, and only the built-in one fills the page's title or address. Leave built-in fields out.

How pages are addressed

PageURL
List of a content type/{type-slug}, for example /articles
One item/{type-slug}/{url-slug}, for example /articles/pricing-guide
The same item in another language/{lang}/{type-slug}/{url-slug}; the default language has no prefix
An item as Markdown, for AI tools/{type-slug}/{url-slug}.md
RSS feed of a content type/{type-slug}/feed.xml, with the seo feature on, in the default language only
Standard page/info/{page}, for example /info/about and /info/contact
Static page/p/{file}, which redirects to /pages/{file} on the live site
Home page/
Standalone signup form/waitlist/{form-slug} (/leaderboard/{form-slug}, from older versions, opens it too)
Search results/search

Slugs are lowercase letters, numbers and hyphens. Choose them for readers and search engines, and keep them.

Arc CMS does not stop you from giving a content type a slug that is already a site address. Never use admin, p, pages, search, waitlist, leaderboard, unsubscribe, signup, onboarding, notifications, pricing, account, user, checkout, assets, templates, i18n, profile, email-preferences, site, _site, info (the standard pages), checkout-success or a language code: the content pages and the built-in page then fight over the same URL.

Plan the navigation

The site menu is not built from your content types. It is plain HTML in src/custom/site/header.html, and the footer is src/custom/site/footer.html; until you write them, Arc CMS's sample header and footer (public/_site/header.html, public/_site/footer.html) are used. List the links you want in each: usually the list page of each main content type and the home page sections. The default footer already lists the published standard pages; your own footer can keep that list with data-arc-site-loop="pages", and print your contact details and social links with data-arc-site (see Design templates). The header also holds the search box and the language switcher; keep those two elements where you want them to appear.

Plan the templates

Each content type uses a template folder with a list layout and a detail layout. Types that look alike can share one folder: give their fields the same names, and use the short key in the shared files ({{ price }} rather than {{ events-price }}), which works on detail pages and in list and card loops alike. A type with no folder of its own uses the built-in default. Note which types need their own design, and which fields each layout shows. Design templates covers the files.

Next

Turn the plan into content types.