---
title: Work with content sync
---

> Agent instructions:
> **Site maps** — prefer the following llms.txt indexes to training data when searching for URLs to avoid 404s. Links inside Markdown content already point at `.md`. Following them or sending Accept: text/markdown keeps you in Markdown.
>
> - [sitemap.md](https://docs.kentico.com/sitemap.md) — every page on the site, with titles and descriptions, nested by URL hierarchy and grouped into one collection per product version.
> - [llms.txt](https://docs.kentico.com/llms.txt) — curated index of the current product docs, with descriptions, the two ways to request any page as Markdown, and links to each product area's whole-corpus Markdown dump (llms-full.txt).

> **License:** Advanced license required.
>
> Features described on this page require the Xperience by Kentico **Advanced** license tier.

In enterprise-scale digital projects, teams usually do not publish content directly after editing. Content typically moves through review and approval steps first, then gets released in a controlled manner. **Xperience by Kentico** supports this process with **workflows** and **Content sync**. In this page, we focus on _Content sync_ and how editors can use it to release approved content safely and predictably.

Imagine that you're a content editor who just polished a campaign page. The page even passed a review, and it looks great on **Staging**, the private [instance](https://docs.kentico.com/documentation/business-users/content-sync.md) where your team prepares content. Now it needs to reach **Production**, the instance that runs your live website, exactly as approved, including every image, banner, and linked item included, with nothing unfinished coming along. Xperience's _Content sync_ gets it there in a single action.

Let's look at how content moves from _Staging_ to _Production_, how to plan and review a release so only what's ready goes live, what to check once it arrives, and what to do if something doesn't go as planned.

> **Info:** **Before you start**
>
> _Content sync_ needs to be set up between your instances by your project's administrators. See [Content sync configuration](https://docs.kentico.com/documentation/developers-and-admins/configuration/content-sync-configuration.md) if you want to share the details with them. To run a sync yourself, you also need the **Synchronize** permission for the content you're releasing. If you don't see any sync actions in the administration, ask your administrator.

## Why approved content doesn't appear in Production on its own

Most Xperience projects run on several _instances_. An instance is a separate copy of your project, with its own administration and its own database, so a change you make on one doesn't show up on another by itself.

- Your developers build and test new features on a **Development** instance.
- Your team creates, reviews, and publishes content on **Staging**, a private instance that is not accessible to your audience. In our scenarios, this is the _source_ instance from which you synchronize your content.
- **Production** is the public instance that runs your live website, so everything your visitors see comes from there. This is the _target_ instance to which you synchronize.

![Content moves from Development to Staging, and from Staging to Production](https://docs.kentico.com/docsassets/guides/work-with-content-sync/content-sync-topology.png "Content moves from Development to Staging, and from Staging to Production")

_Staging_ gives your team room to shape content without visitors seeing anything half-finished. But that privacy has a flip side. A campaign page that's approved and looks perfect on _Staging_ still isn't on your live site.

Without _content sync_, someone would have to recreate or republish the same content on _Production_ by hand. Mistakes are easy to make at this stage: a missing image here, an older version of the text there, or a banner that was linked on _Staging_ but forgotten on _Production_. Worse, nobody could be fully sure that what was approved was what went live.

That's where [content sync](https://docs.kentico.com/documentation/business-users/content-sync.md) comes in. Instead of rebuilding content by hand, you send the approved version of your pages and content items, together with the images, linked items, and folders they depend on, to _Production_ in one go. What was approved is exactly what goes live.

> **Info:** _Content sync_ applies exclusively to content stored in website channels and the Content hub. Any other content, such as data in custom module classes (for example, [an office management application](https://docs.kentico.com/documentation/developers-and-admins/customization/object-types/example-offices-management-application.md) ) cannot be synchronized through the content sync, and would require developers to implement a workaround.
>
> Furthermore, _content sync_ cannot be used to migrate items such as new content type definitions created by developers in the QA/development environment.

## How content moves from Staging to Production

_Content sync_ works in **one direction**, along a [chain of instances](https://docs.kentico.com/documentation/developers-and-admins/configuration/content-sync-configuration.md#supported-topologies). Your developers may send starter content from Development to _Staging_. Your team then edits and reviews content on _Staging_ and syncs it to _Production_.

> **Warning:** Content never flows back from _Production_ to _Staging_.

Every sync happens in two stages. First, the content is sent to _Production_. Then _Production_ **restores** it, which means it applies the content so it appears on your live site. You can have the content restored right away, or at a date and time you choose. You'll see the benefits of a scheduled restoration [later on](#schedule-several-syncs-or-change-a-schedule).

> **Key:** A few things to keep in mind regarding the content sync flow:
>
> - **Staging is where you make changes.** If you need to make a change on _Staging_ and sync it, don't make it directly on _Production_. The next sync would overwrite any edits made on the target instance (see [What travels with your content](#what-travels-with-your-content-and-what-doesnt)).
> - **Workflows run on Staging only.** Your [review and approval steps](https://docs.kentico.com/guides/digital-marketing/work-with-content-governance/workflows.md) happen on _Staging_. Content arrives on _Production_ with its workflow already finished, either published or unpublished, just as it was on _Staging_.
> - **Each sync replaces what's on Production.** _Production_ shows the version from the most recently restored sync.

### Only published content moves between environments

This is the rule behind most "why isn't my change live?" questions.

_Content sync_ takes the published version of a page or content item. It never takes a draft or content that is still in review. If you'd like a refresher on statuses, see the lifecycle of [content items](https://docs.kentico.com/documentation/business-users/content-hub/content-items.md#content-items-lifecycle) and [pages](https://docs.kentico.com/documentation/business-users/website-content.md#page-lifecycle).

Each lifecycle status in _Staging_ has the following effect on synchronization:

| Status on _Staging_                                                                | What happens when you sync                                                               |
| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
| Draft (Initial), or a custom workflow step before the item was ever published      | The item can't be synced. It appears grayed out in the sync dialog.                      |
| Published                                                                          | The current version is synced.                                                           |
| Draft (New version), or a custom workflow step after the item was published before | The last published version is synced. Your newer, unpublished changes stay on _Staging_. |
| Unpublished page                                                                   | The page is synced as unpublished.                                                       |
| Unpublished content item                                                           | The change takes effect only if the item already exists on _Production_ as published.    |
| Scheduled to publish or unpublish                                                  | The schedule isn't carried over to _Production_.                                         |

> **Tip:** When a colleague asks why their change isn't live yet, check whether it was published on _Staging_ before the sync. Most of the time, that's the answer.

## What travels with your content, and what doesn't

You don't need to track down every image or banner a page uses. When you sync a page or content item, Xperience brings along everything it depends on:

- [Linked content items and pages](https://docs.kentico.com/documentation/business-users/content-hub/content-items.md#link-content-items), meaning the items and pages your content uses, such as a banner on a landing page. Items and pages linked from those come along too.
- [Asset files](https://docs.kentico.com/documentation/business-users/content-hub/content-item-assets.md), such as images and documents. For images, only the primary [optimized image](https://docs.kentico.com/documentation/business-users/content-hub/content-item-assets.md#optimize-image-assets) is transferred. [Image variants](https://docs.kentico.com/documentation/business-users/content-hub/content-item-assets.md#image-variants) are generated on _Production_ the first time they're requested.
- The [content folders](https://docs.kentico.com/documentation/business-users/content-hub/content-hub-folders.md#content-folders) where synced content items are stored.
- The content items stored in [smart folders](https://docs.kentico.com/documentation/business-users/content-hub/content-hub-folders.md#smart-folders), although the smart folders themselves as objects are not synchronized.
- [Page URLs](https://docs.kentico.com/documentation/business-users/website-content/manage-page-urls.md) (system and vanity) and [former URLs](https://docs.kentico.com/documentation/business-users/website-content/manage-page-urls.md#former-urls).
- Parent pages and page tree folders needed to keep the page tree valid on _Production_.
- [Tags and taxonomies](https://docs.kentico.com/guides/digital-marketing/work-with-taxonomies/taxonomies.md) assigned to the synced content.
- Content access settings, such as [secured pages](https://docs.kentico.com/documentation/business-users/website-content/secure-pages.md) and [secured content items](https://docs.kentico.com/documentation/business-users/content-hub/content-items.md#secure-content-items).
- Saved keywords for [SEO analysis](https://docs.kentico.com/documentation/business-users/aira/agentic-marketing-suite.md) of pages.
- [Forms](https://docs.kentico.com/documentation/business-users/digital-marketing/forms.md) added to pages with the Form widget, when you select **Include forms**. You need the **Synchronize** permission for the **Forms** application to use this option. Forms that your developers placed directly in the page code aren't included, but you can [sync them on their own](#sync-forms-on-their-own).

_Content sync_ is all about content, so a few things are left to your technical colleagues. They move these to _Production_ through a _deployment_, the process developers use to move the project's code and structure between instances. This keeps both instances built the same way (see [Ensure compatibility between instances](https://docs.kentico.com/documentation/developers-and-admins/configuration/content-sync-configuration.md#ensure-compatibility-between-instances)):

- [Content types](https://docs.kentico.com/documentation/developers-and-admins/development/content-types.md), channels ([website](https://docs.kentico.com/documentation/developers-and-admins/configuration/website-channel-management.md), [email](https://docs.kentico.com/documentation/developers-and-admins/digital-marketing-setup/email-channel-management.md), and [headless](https://docs.kentico.com/documentation/developers-and-admins/configuration/headless-channel-management.md)), [languages](https://docs.kentico.com/documentation/developers-and-admins/configuration/languages.md), and [workspaces](https://docs.kentico.com/documentation/developers-and-admins/configuration/users/role-management/workspaces.md).
- [Member roles](https://docs.kentico.com/documentation/developers-and-admins/development/registration-and-authentication/member-roles.md). The access restrictions on your content are synced, but the role definitions aren't.

A few more things never travel with a sync at all:

- [Smart folders](https://docs.kentico.com/documentation/business-users/content-hub/content-hub-folders.md#smart-folders) themselves, although the content items organized within them do.
- [Form submissions](https://docs.kentico.com/documentation/business-users/digital-marketing/forms/manage-form-submissions.md), [autoresponders](https://docs.kentico.com/documentation/business-users/digital-marketing/forms/create-and-edit-forms.md#autoresponders), [automation processes](https://docs.kentico.com/documentation/business-users/digital-marketing/forms/create-and-edit-forms.md#automation-processes) related to forms, [form submission notifications](https://docs.kentico.com/documentation/developers-and-admins/configuration/notifications.md#form-submission-notifications), and the visibility setup of featured form fields.
- Deletions. You can't use _content sync_ to delete content on _Production_ (see [Remove content that shouldn't be on Production](#remove-content-that-shouldnt-be-on-production)).

Whenever your team introduces a new content type, check with your developers that it's already on _Production_ before you sync content that uses it. Otherwise, the sync can't complete.

Each sync covers one [language](https://docs.kentico.com/documentation/developers-and-admins/configuration/languages.md), the one currently selected in Content hub or in a website channel application. To release several language versions, switch the language and run a separate sync for each.

When you sync, Xperience sends the entire page or content item, not just the part you changed.
That means _Production_ is updated to match _Staging_ field by field.

Example:
A campaign page includes a “Seats available” field. On _Staging_, it still says 120. On _Production_, registrations already reduced it to 87. If you sync that page, _Production_ is overwritten with the _Staging_ value (120), so the live counter becomes incorrect. The same can happen with values like **product stock, reservation counts, or other operational data**.

It's important to note that you can't choose an option such as “sync all fields except this one.” **Sync always applies the full item or page**. If your project mixes content written by editors with data that changes on _Production_ by itself, your developers need to [store that data separately](https://docs.kentico.com/documentation/developers-and-admins/configuration/content-sync-configuration.md#content-modeling-for-content-sync). Ask them before you sync this kind of content for the first time.

> **Warning:** Treat _Content sync_ as a **full overwrite**.
>
> _Content sync_ does not merge fields. It replaces the entire item/page on _Production_ with the version from _Staging_, including operational values maintained by the system.

## Prepare your content on Staging before you sync

A smooth sync starts with knowing exactly which content belongs to the release. We'll follow an example of a content team working for a fictitious banking institution, _Kbank_, as we explore content synchronization in detail.

Kbank's marketing team is releasing their newest _Car loan_ campaign: a landing page with several subpages, plus banners, a promo card, and images stored as reusable content items. Alex, a senior editor, manages Kbank's releases and is the only person on the team with the permission to sync.

Here's a simple but well-organized **release flow** that works just right for our team in question:

1. Editors create and update content on _Staging_.
2. The content goes through a review workflow and is published on _Staging_. Publishing on _Staging_ is safe because visitors can't see it.
3. Editors mark what belongs to the release. Content items get a release tag. Pages are marked by their section of the page tree and an entry in the release log.
4. When everything is ready, one person with the sync permissions, such as a senior editor or an administrator, syncs the release. They can restore it right away or schedule it for a quieter time, such as the evening.
5. The same person checks what arrived on _Production_.

Having one dedicated person run the sync gives your team a single, clear view of what goes live and when. It also avoids overlapping syncs of the same content and lets your administrators grant the sync permissions only to the people who need them.

Keep in mind that the content is sent to _Production_ when the sync starts, even if it's restored later. Anything you change on _Staging_ after that waits for the next sync.

> **Info:** Use the flow above as a reference model rather than a strict rule. Different teams may use different release processes depending on scale, controls, and automation needs. If your content lifecycle or release process requires a more specific approach, such as a sync queue, an extra approval step before syncing, or automatic syncs, your developers need to build a custom solution. See [When to ask your developers for a custom solution](#when-to-ask-your-developers-for-a-custom-solution).

### Tag content items for sync

[Tag the content items](https://docs.kentico.com/documentation/business-users/content-hub/content-items.md#add-tags-to-content-items) you want to release, for example, with the release date or project name. When it's time to sync, you filter Content hub by that tag, select all the items it shows, and sync them in one go.

![Filtered items ready for sync](https://docs.kentico.com/docsassets/guides/work-with-content-sync/content-items-filtered-for-sync.png "Filtered items ready for sync")

> **Info:** **Can't tag your content items?**
>
> You can tag content items only if the content type already includes a **taxonomy field**. Editors cannot add or change this field setup themselves. These modeling decisions must be made in advance by a solution architect or developer who adds taxonomy as a dedicated field or through reusable field schemas. If tagging is not available for your content type, ask your technical team to add the taxonomy field in both _Staging_ and _Production_.

If you'd like a ready-made view of the tagged items, you can also [create a smart folder](https://docs.kentico.com/documentation/business-users/content-hub/content-hub-folders.md#create-smart-folders) that filters by that tag. Smart folders themselves are never synced (only their content is), so they're a safe way to build views that only exist on _Staging_.

> **Info:** **On Kbank:** As the editors finish each banner, promo card, and image for the campaign, they tag it **Ready for Production**. And because they also created a smart folder that dynamically collects items tagged with _Ready for Production_, the content items are easily accessible in one spot, hassle-free.

![Smart folder with items tagged as Ready for Production](https://docs.kentico.com/docsassets/guides/work-with-content-sync/ready-for-production-smart-folder.png "Smart folder with items tagged as Ready for Production")

### Use the page tree to organize pages for sync

You release pages by their place in the page tree: you sync a single page, or a page together with all of its subpages. To keep track of which sections belong to a release, note them in your release log.

![Page with subpages selected for sync](https://docs.kentico.com/docsassets/guides/work-with-content-sync/parent-page-with-child-pages-selected-for-sync.png "Page with subpages selected for sync")

> **Key:** Keep in mind:
>
> - A page can only be synced together with all of its parent pages or folders, up to the first level of the page tree.
> - A page tree folder can only be synced together with its child pages, never on its own.
> - Don't move pages just to group them for a release. [Moving a page](https://docs.kentico.com/documentation/business-users/website-content/edit-and-publish-pages.md#move-pages) to a different part of the page tree may change its URL and what editors are allowed to do with it.

Start by selecting the highest page that contains your whole release, and review everything in **Detailed selection**. Split the release into several syncs only when it spans unrelated sections of the page tree, or when it goes over the [recommended size](#keep-each-sync-to-a-manageable-size).

> **Info:** **On Kbank:** The whole campaign lives under one landing page, so Alex adds a single line to the release log: "The _Car loan_ campaign section will go out with this week's release."

### Check the publish status of everything you plan to sync

Before you sync, make sure everything you expect to release is published.

- For content items, filter Content hub by status, or use a [smart folder](https://docs.kentico.com/documentation/business-users/content-hub/content-hub-folders.md#smart-folders), to quickly see which items are still in **Draft (Initial)**, **Draft (New version)**, or a workflow step.
- For pages, check the status of each page in the section you're about to sync.

> **Info:** **On Kbank:** Alex goes through the campaign section and finds one subpage still in **Draft (Initial)** workflow step. It isn't ready, so it stays on _Staging_ for a later release, but the rest of the campaign can go ahead.

## Sync the campaign page to Production

Once the campaign page and its subpages are all published on _Staging_, you're ready to sync them.

1. On _Staging_, open the website channel application.
2. Find the campaign page in the page tree.
3. Open the page's context menu.
4. Select **Sync with all subpages**.
   - To sync only this one page, select **Sync this page** instead.
5. Choose when _Production_ should restore the content:
   - **Restore on the target immediately** triggers the _content sync_ right away. Restoration on the target instance usually starts within 30 seconds, but it can take longer if other syncs are running or if your release is large.
   - **Postpone restoration on the target** lets you pick a date and time (see [Schedule several syncs or change a schedule](#schedule-several-syncs-or-change-a-schedule)).
6. Review the list of pages. Pages that can't be synced are grayed out. On Kbank, that's the subpage still in **Draft (Initial)**.
7. If the pages contain forms added with the Form widget, decide whether to select **Include forms**.
8. Select **Detailed selection** to review the linked content that goes with the pages. See [Review a large sync with Detailed selection](#review-a-large-sync-with-detailed-selection) for how to work through it.
9. Select **Sync**.

![Main content sync options](https://docs.kentico.com/docsassets/guides/work-with-content-sync/main-content-sync-options.png "Main content sync options")

The dialog shows the progress of the sync and lets you know when it's done.

> **Warning:** Pages with a lot of linked content can take longer than you'd expect, even if you selected only a few pages.

## Review a large sync with Detailed selection

Syncing a single page with a couple of images is simple. A whole campaign section, where every page links banners, cards, forms, and other pages, is a different story, and that's when [Detailed selection](https://docs.kentico.com/documentation/business-users/content-sync.md#detailed-selection) becomes your best friend. It shows you everything that's about to go to _Production_, so nothing slips through unnoticed.

![Review of larger sync Detailed selection](https://docs.kentico.com/docsassets/guides/work-with-content-sync/large-syc-detailed-selection.png "Review of larger sync Detailed selection")

### Why the main sync dialog isn't enough

The main dialog lists only the pages or items you selected. Linked content items, linked pages, and forms aren't shown there, even though they'll be synced.

Unchecking something in that first list also doesn't guarantee it stays behind. If another selected page depends on it, as a parent or a linked item, the system syncs it anyway. **Detailed selection** is the only place where you can fully exclude related content.

### Start high in the page tree, then deselect

When a release spans many pages in the page tree, the safest option is to select the top page (for example, a parent of a section containing multiple product pages) and manually exclude pages that shouldn't be synced.

Follow these steps to save time and avoid gaps:

1. Pick the highest page in the tree that contains everything you want to release.
2. Select **Sync with all subpages**.
3. Open **Detailed selection**. The pages and items you selected are pre-checked and highlighted, and the linked content that comes with them is also listed.
4. Go through the table and deselect the pages and items that shouldn't go to _Production_ yet.
5. Select **Sync**.

![Deselect what shouldn't go to Production](https://docs.kentico.com/docsassets/guides/work-with-content-sync/deselect-what-should-not-be-synced.png "Deselect what shouldn't go to Production")

Because you see all the linked content in one table, you can spot anything that doesn't belong before it reaches _Production_.

### What you can't exclude

**Tags, taxonomies, content folders, and asset files** are always included with the content that uses them. They don't appear as options you can deselect.

### What happens if you exclude too much

Excluding content is useful, but it can leave _Production_ in a broken state:

- **Parent pages and folders:** if you exclude a parent page or folder that doesn't exist on _Production_ yet, the sync fails. The page tree on _Production_\* would be invalid without it.
- **Linked content items, pages, and forms:** if you exclude a linked item that doesn't exist on _Production_, the pages or items that use it may show incomplete or broken content.

As a rule, only exclude content that either already exists on _Production_ or isn't used by anything you're releasing.

### A routine for reviewing a long Detailed selection table

1. Check the **highlighted rows** first. These are the pages and items you chose, so confirm the list matches your release plan.
2. Look at the **linked pages** next. These are the ones most likely to pull in unfinished work from other parts of the site.
3. Scan the **linked content items** for anything that belongs to a different campaign or release.
4. Before you deselect a parent page or folder, confirm that it already exists on _Production_.
5. Before you deselect a linked item, check which of your pages uses it.

> **Info:** **On Kbank:** In **Detailed selection**, Alex spots a linked page from another part of the site: a loan calculator that one of the campaign subpages links to. Before deselecting it, Alex checks _Production_. The calculator is already live there, so it's safe to leave it out of this sync. Since no content was changed in the calculator, it doesn't need to be synced.

### Keep each sync to a manageable size

Large sync batches are more likely to fail or take longer than expected, especially on busy environments. As a practical baseline, keep a single sync under roughly **1,000 content items**, **200 pages**, and **200 MB of asset files**.

> **Tip:** If your release exceeds these baseline limits, split it into smaller syncs. Smaller batches are easier to validate and reduce the risk of timeouts or network-related failures.

### Sync pages you moved or reordered

If you [moved or reordered pages](https://docs.kentico.com/documentation/business-users/website-content/edit-and-publish-pages.md#move-pages) in the tree, sync all pages on the same level in both the original and new locations. The easiest way is to sync the original parent and the new parent, each with all their direct child pages. This makes sure the page order comes across correctly. The root page of a website channel can't be synced.

## Sync reusable content items from Content hub

When you sync pages, the content items they use come along automatically. You sync content items directly when they aren't used on a page you're syncing, for example, items used in emails or in headless channels (content delivered to apps or other systems), or items you want to update on their own.

1. On _Staging_, open **Content hub**.
2. **Filter** the items by your release tag.
3. Select all the filtered items.
4. Select the **Sync** action.
5. Choose when _Production_ should restore the content.
6. Review the list. Items that can't be synced, such as items that were never published or aren't translated into the current language, are grayed out.
7. If needed, open **Detailed selection** to review and exclude linked content.
8. Select **Sync**.

> **Info:** **On Kbank:** The campaign's banners and images come along with the pages Alex already synced. A few tagged items are only used in the campaign's email, though, so Alex filters Content hub by **Ready for Production**, selects them all, and syncs them too.

To see the **Sync** action, you need the **Synchronize** permission for Content hub in the relevant workspace (see [Role management](https://docs.kentico.com/documentation/developers-and-admins/configuration/users/role-management.md)).

### Sync forms on their own

You can also sync a form without any pages, using the form's **Sync** action in the **Forms** application (see [Sync forms individually](https://docs.kentico.com/documentation/business-users/content-sync.md#sync-forms-individually)). **Detailed selection** isn't available for forms. As with forms synced together with pages, submissions, autoresponders, related automation processes, form submission notifications, and the visibility setup of featured form fields stay behind.

> **Warning:** If you delete or replace a field in a form on _Staging_ and then sync the form, all data collected through that field is also removed on _Production_.

## Schedule several syncs or change a schedule

With the **Postpone restoration on the target** option, your release goes live at the time you set, even if you're not at your desk. It can help you:

- Avoid restoring content during the website's busy hours (and potentially interrupting your users).
- Prevent editors from syncing large bundles of content at the same time.

But what if you do need to **schedule several syncs** for one release date? Follow the rules below to keep the content sync flow smooth:

- Set the restoration times in the order you want the content to appear on _Production_.
- Leave at least 15 minutes between them, so each restoration can finish.
- Check whether the same page or item is in more than one scheduled sync, and consider excluding it from the later scheduled ones, if possible. Remember that the last restored version wins.

To cancel or reschedule, open the **Content synchronization** application on _Production_ and **Delete** the scheduled sync. Then sync the content again from _Staging_ with the new time.

> **Info:** **On Kbank:** Alex schedules the campaign for the evening, because that's when traffic on the website, and the chance of disrupting visitors, is lowest. It also means that no more content will be added to the sync batch before the sync can happen, because Alex agreed with the team's editors beforehand that 8 p.m. is the official "content freeze".

## Check what arrived on Production

After a sync, check two things.

First, open the [Content synchronization](https://docs.kentico.com/documentation/business-users/content-sync.md#track-incoming-synchronizations) application on _Production_. It lists recent and scheduled syncs with their status, so you can see whether yours is ready, completed, or failed. Completed and failed syncs are cleaned up once a day, so check soon after the sync.

Second, open the live pages and spot-check that they look the way they did on _Staging_.

> **Info:** **On Kbank:** The next morning, Alex opens **Content synchronization** application on _Production_ and sees that both syncs are marked as completed. Then Alex opens the live _Car loan_ landing page and clicks through the subpages to check that the banners, promo card, and images all appear as they did on _Staging_. Finally, Alex records the release in the release log.

### When something didn't come across

If a page or item is missing from the target instance, or the target shows an older version, work through the following possible causes. The most common ones come first:

1. **It wasn't published on Staging.** Never-published content isn't synced.
2. **It had a newer draft.** Only the last published version was synced, not the draft you were looking at.
3. **It was in a different language.** Only the language you had selected was synced.
4. **It was excluded in Detailed selection.**
5. **The restoration is scheduled for later.** Check the time in the **Content synchronization** application.
6. **The sync failed.** Check the status in the **Content synchronization** application and contact your administrator. They can see the details in the logs.

For more symptoms and how to prevent them, see [Common content sync issues and how to prevent them](#common-content-sync-issues-and-how-to-prevent-them).

## Remove content that shouldn't be on Production

Mistakes can happen, and sometime you push something that should not have been published to _Production_, or is already outdated.

When you spot something on _Production_ that shouldn't be there, don't worry, there is a way out. _Content sync_ can add and update content, but not delete it, so the right fix depends on when you notice the problem and what your organization allows.

### When the restoration hasn't happened yet

If you scheduled the sync for later, open the **Content synchronization** application on _Production_ and **Delete** the specific sync. Nothing was changed on _Production_ yet.

### When the content should no longer be visible

1. [Unpublish the page](https://docs.kentico.com/documentation/business-users/website-content/edit-and-publish-pages.md#unpublish-pages) or [content item](https://docs.kentico.com/documentation/business-users/content-hub/content-items.md#unpublish-content-items) on _Staging_.
2. Sync it again.

Unpublished pages are synced without restrictions. Unpublished content items take effect on _Production_ because they already exist there as published.

To correct content rather than hide it, fix it on _Staging_, publish it, and sync it again. The new version overwrites the old one on _Production_.

> **Info:** **On Kbank:** When the _Car loan_ offer ends, an editor unpublishes the campaign's promo card on _Staging_, and Alex syncs it. The promo card disappears from the live site, while it stays available on both instances in case the offer returns.

### When a piece of content must be deleted from Production

Deleting content is an exception to the general rule of avoiding direct changes in _Production_. If content needs to be completely removed, the safest approach is to **ask an administrator or developer to delete it** on the _Production_ environment.

If you have the required permissions, you can also delete the content yourself directly on _Production_. However, many organizations **restrict delete permissions in Production**, so you may need to ask an administrator or another authorized colleague to perform the deletion anyway.

After the content is deleted from _Production_, the same content needs to be deleted from _Staging_ as well. Otherwise, it could be synchronized back to _Production_ during a future _content sync_.

### When you're retiring a larger set of content

Deleting entire pages and large numbers of content items shouldn't be routine. It usually comes with a bigger change, such as restructuring part of the site or ending a campaign or product line. These changes often involve updates to the content model, which your developers deploy to _Production_ anyway. They can remove the retired content as part of that deployment, using a [deployment setting](https://docs.kentico.com/documentation/developers-and-admins/ci-cd/configure-ci-cd-repositories.md#configure-cd-restore-mode) that also removes content that no longer exists on _Staging_. This needs careful configuration, so ask your developers or administrators about your options.

### Consider archiving instead of deleting

Depending on your team's process, you may not need to delete content at all. A "soft archive" is a good alternative:

1. Move the content items you no longer need into an **Archive** folder in Content hub.
2. Remove references to these items from the pages and other items that still use them.
3. Sync the updated pages and items (where references were removed) to _Production_.

The archived items stay on both instances, but nothing on the live site uses them anymore. They'll remain invisible to your visitors but will still be available to editors should you ever need to use these content items again.

## Keep track of content that's ready to sync

Xperience doesn't offer a built-in list of content waiting to be synced. A little shared structure goes a long way here, so agree with your team on a simple way to track what's ready for the next release:

- **Content items:** tag them for sync (see [Tag content items for sync](#tag-content-items-for-sync)), then filter the tagged items in Content hub when it's time to sync. If you like, add smart folders on _Staging_ for everyday views, for example, items with your release tag, items with the **Draft (Initial)** status, or items modified in the last seven days.
- **Pages:** treat a section of the page tree as the unit you release. Keep a short release log, for example, in your project management tool, that records which sections go out in which release and who synced them.

![Smart folders with content sync views](https://docs.kentico.com/docsassets/guides/work-with-content-sync/smart-folders-for-content-sync.png "Smart folders with content sync views")

If this no longer scales for your team, your developers can build something more tailored.

## When to ask your developers for a custom solution

Everything so far works out of the box. If your team needs more control, like a strict release process or very frequent releases, here are two directions worth discussing with your developers.

### A custom workflow step, such as "Ready to sync"

Adding a "Ready to sync" step to your workflow may seem like the obvious choice. Before you do, keep in mind how _workflows_ and _content sync_ fit together: workflow steps come before the **Published** status. Content that's waiting in the "Ready to sync" step hasn't been published yet. If it was never published, it can't be synced at all. If it was published before, only the older published version is synced.

A workflow step can show your team's intent, but on its own, it doesn't prepare content for sync. It works only if your developers add custom logic around it.

### A custom module or administration application

Developers can extend the administration with a custom listing or application, for example, a list of pages and content items flagged for the next release, or a single action that syncs a whole release. This suits teams that release a lot of content or have strict release rules.

Which option fits depends on your process and your project. Talk your release workflow through with your developers, and let them recommend the approach.

Other topics to bring to your developers:

- Deploying new content types, channels, languages, or workspaces to _Production_ before you sync content that uses them.
- Separating data maintained on _Production_, such as counters or stock levels, from the content you sync during the [content modeling process](https://docs.kentico.com/guides/architecture/content-modeling/xperience-content-modeling-basics/content-modeling-process-overview.md).

## Facts to remember about content sync

> **Key:**&#x20;
>
> - _Content sync_ moves content one way, **from Staging to Production**.
> - **Only published** content is **synced**. Drafts and content in review stay on _Staging_.
> - Linked items, assets, folders, and URLs come along automatically. Use **Detailed selection** to review and exclude them.
> - Content types, channels, languages, workspaces, and member roles travel through a deployment, not a sync.
> - Every sync overwrites the synced content on _Production_, so make your changes on _Staging_.
> - _Content sync_ never deletes anything on _Production_.

## Content sync checklist

Use this checklist whenever you sync content to _Production_.

### Before you sync

- Everything you plan to release is published on _Staging_.
- There are no newer drafts you meant to include. Only the last published version is synced.
- You have the right language selected.
- The sync stays under roughly 1,000 content items, 200 pages, and 200 MB of assets. Otherwise, split it.
- Any new content types or other required objects have been deployed to _Production_.
- Nobody has edited this content directly on _Production_, and it doesn't hold data maintained on _Production_ that the sync would overwrite.

### During the sync

- Grayed-out items in the list are expected, and you know why they're excluded.
- You reviewed the linked content in **Detailed selection**.
- You didn't exclude any parent page or folder that doesn't exist on _Production_ yet.
- You decided whether to **Include forms**.
- You chose the right restoration time.

### After the sync

- The sync shows as completed in the **Content synchronization** application on _Production_.
- The live pages look the way they did on _Staging_.
- You recorded what went out in your release log.

## Common content sync issues and how to prevent them

| What you notice                            | Likely cause                                                             | How to prevent it                                                                     |
| ------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------------------- |
| Content is missing or out of date          |                                                                          |                                                                                       |
| A page or item didn't come across          | It was never published on _Staging_                                      | Check the publish status before you sync.                                             |
| _Production_ shows an older version        | The latest changes were still a draft                                    | Publish the changes, then sync                                                        |
| Only one language was updated              | The sync covers the selected language only                               | Run a separate sync for each language                                                 |
| Content arrived, but something looks wrong |                                                                          |                                                                                       |
| Parts of a page are missing or broken      | A linked item was excluded in Detailed selection                         | Only exclude linked items that already exist on _Production_                          |
| A counter or stock value was reset         | The sync overwrote data maintained on _Production_                       | Ask your developers to store that data separately                                     |
| Pages appear in the wrong order            | Moved pages were synced without the other pages on the same level        | Sync the old and new parent with all direct child pages                               |
| Collected form data disappeared            | A form field was deleted or replaced before the form was synced          | Check form changes with the form owner before you sync                                |
| The sync didn't finish                     |                                                                          |                                                                                       |
| The sync failed                            | A parent page was excluded, or a content type is missing on _Production_ | Keep parent pages included, and confirm deployments before you sync new content types |
| A large sync stalled or failed             | Too much content in one sync                                             | Split big releases into several smaller syncs                                         |

## Next steps

- Set up a review process that fits your releases with [Workflows](https://docs.kentico.com/guides/digital-marketing/work-with-content-governance/workflows.md) as a preparation for _content sync_.
- Look up every option and limitation of the feature in the [Content sync](https://docs.kentico.com/documentation/business-users/content-sync.md) documentation.
