Authors

Everything in this page is done from AdminCentral. You never edit a file.

The Sites app

The Sites app holds one entry per site you run. An entry answers three questions at once: which addresses belong to this site, where its content starts, and what the site looks like when it is named somewhere — in a browser tab, in a Google result, in a WhatsApp preview.

The front end asks the app which site to serve on every request, so an edit here is live as soon as you save it. There is no release to wait for.

The Sites app, list view, showing six site entries at the top level — Material Design, Magnolia, Hábito 1, M3, M3 Store and Design — in the Name column

Identity

Field What it does
Name The name of the site. It is what other apps and the front end show when they name it, and it feeds the organization name in the data Google reads. Required. Per language.
Description A short description of the site, up to 200 characters. Per language.
Logo The site's logo, picked from the media library. Used wherever the front end paints the brand.
Favicon The small icon browsers show in the tab and in bookmarks. Picked from the media library.
Default social image (OG) The image used when a page of this site is shared and the page itself has no image of its own. Use 1200×630 pixels.
Organization type (Schema.org) Tells search engines what kind of organization is behind the site. Organization by default; also Corporation, LocalBusiness, ProfessionalService, OnlineBusiness, EducationalOrganization and NGO.
Phone The site's contact phone number.

The Site Detail form for Hábito 1, top half: Name, Root Page pointing at h1, Description with its 175/200 character counter, and Logo showing the picked h1_logo image

Where the site lives

Field What it does
Root Page The page this site starts at, picked from the page tree. Everything below it belongs to this site. Required.
Base URL The site's public address, for the places that need to print a full link rather than an internal path.
Domains (regex) The addresses that resolve to this site. One per row, and a row can be a pattern rather than a single address. Required — a site with no rows is never matched.

Social profiles

Add one row per network under Social Media. Each row is a Platform — Instagram, Facebook, TikTok, LinkedIn, WhatsApp, YouTube, Twitter / X or Pinterest — and a URL / Link, the full address of the profile.

Use each platform once. The form lets you add two rows for the same platform, but the platform is what identifies the row everywhere else: if the site is later updated from outside the app — by the front end or by an assistant — one of the two duplicated rows is dropped without warning. Where a brand really has two accounts on one network, put the second one on the page that lists them instead.

The lower half of the Site Detail form: Base URL, two Domains (regex) rows — habito1.com and www.habito1.com — three Social Media rows for LinkedIn, Twitter / X and YouTube with their links, and the Material Design Theme field
Rows are dragged by the handle on their left. Within one site the order of the rows makes no difference — any row that matches is enough; what decides between two sites is the order of the sites themselves

What an empty field does

Nothing that is empty ever breaks a page.

  • Description, Phone and Base URL are simply absent — whatever shows them leaves them out.
  • An empty Logo or Favicon means the front end falls back to whatever it ships with.
  • An empty Default social image (OG) means a shared page uses its own image; if the page has none either, the preview goes out without an image.
  • An empty Organization type (Schema.org) is read as Organization, the safe generic value.
  • No Social Media rows means the data Google reads carries no profile links.
  • An empty Material Design Theme means the site is served with the front end's own defaults.

Name, Root Page and Domains (regex) are required and the form will not let you save without them.

How a domain is matched

Each row of Domains (regex) is a pattern, and a * stands for "anything here". The site is chosen when the visitor's address matches a row completely — a pattern that covers only part of the address does not match.

Pattern Matches Does not match
habito1.com habito1.com www.habito1.com
*.habito1.com www.habito1.com, shop.habito1.com habito1.com
*habito1.com habito1.com, www.habito1.com habito1.com.ar
* anything —

To cover both the bare domain and its subdomains, either write *habito1.com or add the two rows separately. Adding rows is the clearer option, and there is no limit on how many you add.

Note — the addresses of a site's staging and development environments are ordinary rows. Add them to the same site instead of creating a copy of it, so the two environments cannot drift apart.

The order of the list decides

When more than one site could match an address, the first site in the list wins — the order you see in the app is the order it is checked in. Two consequences worth knowing:

  • A catch-all row (*) turns its site into the answer for every address that no earlier site claimed. Keep that site last.
  • If a site starts serving the wrong brand after you add another one, look at the order before you look at the patterns.

What happens on its own

  • The theme travels with the site. When a site points at a Material Design Theme, the front end receives the entire theme together with the site's identity, in the same request. You never have to copy theme values into the site.
  • Name and Description follow the reader's language. The front end asks in the visitor's language and gets the translation you filled in, falling back to the default language where a translation is missing.
  • A missing theme is ignored, not an error. If the theme a site points at is later renamed or deleted, the site keeps working and is served without a theme.