# Set the SEO of a page

This article explains how to set what Google reads on your pages: their title, description, indexing and structured data. You will also learn how to write a template for a whole content type, connect Google Search Console and read the **Search**.

## Before you start

- Every published page gets a title, a canonical URL, structured data and a place in the sitemap.xml. You only set what you want to change.
- Your Staging is never indexed. Its pages carry the `noindex` directive and its `robots.txt` file forbids any crawling. Your site becomes indexable in Production.
- The settings in the **SEO** tab are saved with the content, by the **Save** button. They go into its revisions. They go live at the next publication of the site.

## Open the SEO tab

1. Open the page, post or entry in the editor.
2. In the right-hand column, click the tab named after the type, for example **Page**.
3. Click the **SEO** tab. It opens on the **Metadata** panel.

A composition has no **SEO** tab: it has no URL of its own.

## Write the title and description

The **Metadata** panel starts with the **Google preview**, the result as Google may display it. It follows what you type, keystroke by keystroke.

![The Metadata panel of the SEO tab: the Google preview, the SEO title at 52 characters out of 60, the meta description at 110 out of 155, the empty canonical URL and the Noindex switch.](https://static.lovelyrender.com/uploads/2026/10/154-seo-editeur.png)

| Setting | Effect | Left empty |
| --- | --- | --- |
| **SEO Title** | The title of the result in Google and of the browser tab. It can differ from the title shown on the page. The counter shows its length out of 60 characters. | The template’s SEO title, otherwise the content’s title followed by the site name. |
| **Meta Description** | The text under the title in the results. The counter shows its length out of 155 characters. | The template’s description, otherwise none: Google then shows a passage from the page. |
| **Canonical URL** | The reference URL the page declares to search engines. | The page’s own URL. |
| **Noindex** | Removes the page from search results. It stays reachable through its link. | Off: the page is indexable. |

Beyond 60 characters for the title and 155 for the description, the preview cuts the text as Google would.

**Tip:** Turn on **Noindex** on a thank-you page after a form or a page reserved for your customers. A page set to **Noindex** leaves the sitemap.xml and is never reported to search engines on publication.

## Write a template for a whole type

The title and description of a template apply to all the pages displayed with it. A page that has its own keeps its own. This way you write once the template for all your posts or all the entries of a type.

1. In the **Templates** menu, open the template of the type, for example the one for your posts.
2. Open the **SEO** tab. A box reminds you that these values apply to all pages displayed with this template.
3. In **SEO Title**, write the template, for example `%title% %sep% %sitename%`.
4. Save the template.

On a post titled “Our ten tips”, this template gives “Our ten tips – Atelier Sauge”.

### Insert a variable

A variable is replaced by the value of the visited page. The **Variables** panel, at the top of the **SEO** tab, offers them all.

1. Click in the field to complete, for example **SEO Title**. The **Variables** panel shows **Insert into: SEO title**.
2. Place your cursor where you want it.
3. Click a variable, for example **Site name**. Its code is inserted at the cursor.

![The Variables panel of the SEO tab: the instruction Click a field below, then insert a variable, followed by thirteen buttons, from Title, Site name, Separator, Excerpt and Category to Content type and Page number.](https://static.lovelyrender.com/uploads/2026/10/1014-doc-trouve-variables.png)

Hovering a variable shows its description.

| Variable | Code | Replaced by |
| --- | --- | --- |
| **Title** | `%title%` | The title of the page or content. |
| **Site name** | `%sitename%` | The name of your site. |
| **Separator** | `%sep%` | A dash surrounded by spaces. |
| **Excerpt** | `%excerpt%` | The excerpt of the content. |
| **Category** | `%category%` | The name of the first term of the content’s main category, for example “Bordeaux” for a property filed under the category “Cities”. |
| **Author** | `%author%` | The author’s display name. |
| **Published** | `%date%` | The publication date of the content. |
| **Modified** | `%modified%` | The date of the last significant update, otherwise of the last modification. |
| **Year**, **Month**, **Day** | `%year%`, `%month%`, `%day%` | The current year, the name of the month and the day number. |
| **Content type** | `%post_type%` | The name of the content type, in the singular. |
| **Page #** | `%page%` | The page number of a list, empty on the first. |

**Note:** The main category of a content is the first category that its type links through a reference field, the one the [Navigation between contents](https://lovelyrender.com/documentation/content-navigation-block/) block also follows. **Category** stays empty when the content is not filed anywhere or when that first term is not published.

## Set the structured data

Structured data describes your page to Google so it can display it as a rich result. The site writes it from your content. In the **SEO** tab, each schema has a collapsed panel and a switch that turns it off on this page.

| Panel | Source | Settings |
| --- | --- | --- |
| **Schema Article** | The content’s SEO title, description, image and author. | **Last significant update** and its **Today** button, **Schema type** (`Article`, `NewsArticle` or `BlogPosting`, `Article` by default), **Author name**, **Author URL**. |
| **Schema FAQ** | The accordion titles of the page that end with “?”. | One editable answer per detected question. |
| **Schema Breadcrumb** | The page’s **Breadcrumb** block, otherwise its parent pages. | **Virtual child items**: the headings of the page, each with its **Label in breadcrumb**. |
| **Schema Rating** | What you enter. | **Schema type** (`Product` or `LocalBusiness`), **Name**, **Rating value (1 to 5)**, **Review count**. |
| **Schema Organization** | The **Identity** screen. | **Disable on this page**. The panel only appears once the organization is filled in. |

Under each active schema, the **JSON-LD preview** shows the code sent to Google.

**Tip:** Fill in **Last significant update** on the day the content really changes. Without it, the slightest fix moves forward the modification date that Google reads. The **Advice** tab of the analytics flags the pages still being read whose date is old.

### Fill in your organization’s identity

The **Identity** screen describes your business once for the whole site. Google uses it for its information panel and its local results.

1. In the **Visibility** menu, open **Identity**.
2. In **Organization**, choose the **Type**. A **Local business (LocalBusiness)** or one of its subtypes opens the address, contact details, opening hours and the **Price range**.
3. Fill in the **Name**, the **Logo**, the **Description**, the **Phone**, the **Email** and your **Social profiles**.
4. Optional: add your **Opening hours** (up to three time ranges per day) and your **Exceptional hours**.
5. Click **Save**.

The Organization schema is published on the home page, as Google recommends. The **Publish on all pages** box, under **Diffusion**, publishes it everywhere. Left empty, the **Logo** reuses the light logo set in **Appearance** > **Images**.

The **Identity** screen requires the **Administrator** role, like the whole **Visibility** menu.

## Find the pages to complete

The list of your contents filters the pages whose SEO is missing.

1. Open the list of the type, for example **Pages**.
2. Open **Add a filter**. The **SEO** group offers **Missing SEO title**, **SEO title too long** and **Missing meta description**. The **Indexing** group offers **Hidden (noindex)** and **Indexed**.
3. Choose a value. The list keeps only the contents concerned. Combine the two groups to get, for example, the indexed pages without a description.

A title or description that comes from the template counts as filled in. A page set to **Noindex** carries the label **Hidden** after its title. The **SEO** button, above the table, shows the title and description of each content and edits them in place. [Read the list of your contents](https://lovelyrender.com/documentation/read-content-list/) covers it in detail.

## Let the site maintain the sitemap.xml

The sitemap.xml is the list of your URLs that search engines follow. The site regenerates it in the Staging each time a content is published, edited or unpublished. Publishing the site updates it in Production.

- One file per content type and per language, gathered in an index at `/sitemaps/sitemap.xml`.
- Pages set to **Noindex** are removed from it.
- In Production, the `robots.txt` file tells search engines the URL of the sitemap.xml.
- A Google News sitemap.xml carries your most recent posts, as Google News requires. A content type enters it when its **Include in sitemap.xml** and **Include in the Google News sitemap.xml** boxes are checked.

On the **Visibility** > **sitemap.xml** screen, the **Reset** button of each type rebuilds its sitemap.xml file.

## Connect Google Search Console

Search Console tells you which searches Google shows your pages for and how many clicks it sends you. Once connected, it fills the **Search** tab of your analytics and its figures are kept on your site.

1. In the **Visibility** menu, open **Google Search Console**.
2. Click **Connect with Google** and allow access to your Google account. You return to the screen, which shows **Connected** and the date.
3. Read the **Property** card. The site looks for the property of your Production domain.
4. If the card offers **Create and verify my property** or **Verify ownership now**, click it. The site creates the property, places the verification tag on your live site and confirms the property.

The card then shows **Property connected:** followed by your domain. The data syncs every day. **Sync Search Console data now** starts a sync. The line below gives the result of the last one, for example **Last sync succeeded, 3 hours ago**.

If Google has not yet seen the tag, a message says so. Wait a moment and click again. As long as your Production domain is not set, the card shows **Your production domain is not configured yet.**

**Note:** Once the property is linked, each successful publication of the site sends your sitemap.xml to Search Console. A Google error does not prevent the publication: the submission is retried at the next publication.

If the property disappears from your Google account, the card turns orange and offers **Recreate and verify my property**. The collected data stays on your site.

Your site keeps Google’s figures from the connection onward. It never erases those of each page and keeps the per-search detail as long as your visit analytics. Search Console only shows the last 16 months.

### Verify without connecting your account

As long as the account is not connected, the **Verify manually** card accepts the code of the `google-site-verification` tag that Google gives you. Paste it, then click **Save verification code**. The tag is placed on your Staging and your Production without waiting for a publication.

### Connect Bing Webmaster Tools

The **Visibility** > **Bing Webmaster Tools** screen works the same way, with **Connect with Bing**, the **Site** card and **Create and verify my site**. Its **Bing visibility** card gives the impressions and clicks of the last 30 days and your **Top queries**. Bing powers Copilot, DuckDuckGo and Ecosia.

## Read the Search tab

In the **Statistics** menu, the **Search** tab shows your presence in Google over the chosen period. A selector in the tab switches to Bing.

![The indicators of the Search tab: Clicks, Impressions, Click-through rate and Average position, each with its trend and the value of the previous period.](https://static.lovelyrender.com/uploads/2026/10/1010-doc-trouve-recherche.png)

- **Clicks**, **Impressions**, **Click-through rate** and **Average position**, compared with the previous period. A smaller position is a better spot.
- **Top queries**: the searches that show your pages.
- **Pages in Google search**: a click on a page opens its detail, with its clicks by device and the queries that lead to it.
- **Google clicks and visits from Google**: the clicks counted by Search Console against the visits that arrived from Google. The gap is normal, because a visitor who clicks twice makes only one visit.

Google’s figures arrive a few minutes after the connection, starting from the last few days, then every day. Older history stays in Search Console. Bing sends everything it keeps as soon as you connect.

## Notify search engines on every publication

On every publication of the site, the published, edited or removed URLs are reported through the IndexNow protocol to Bing, Yandex, Naver, Seznam and Yep. They crawl them sooner. You have nothing to set.

- Pages set to **Noindex** are never reported.
- The ownership key the protocol requires is created and published at your first publication.
- A report refused by an unavailable search engine is retried later.

The **IndexNow** card of the **Visibility** > **SEO** screen gives the link to your key and the count of URLs notified, waiting for publication, to retry and refused.

**Note:** Google does not take part in IndexNow. It discovers your pages through the sitemap.xml and through Search Console.

## See also

- [Polish sharing on social networks](https://lovelyrender.com/documentation/social-sharing/)
- [Redirect an old address](https://lovelyrender.com/documentation/redirect-old-url/)
- [Follow the advice](https://lovelyrender.com/documentation/follow-advice/)
- [Track search and AI robots](https://lovelyrender.com/documentation/track-crawlers/)
