> For the complete documentation index, see [llms.txt](https://docs.umbraco.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.umbraco.com/umbraco-deploy/deployment-workflow/deployment-workflow.md).

# Deployment

A description of the proper workflow when working with Umbraco Deploy

Umbraco Deploy uses a deployment model that relies on Git and Umbraco Deploy core technology to move your changes from one environment to another. Umbraco Deploy uses a classic "left to right" deployment model, meaning that changes are first made in the Development or local environment and then deployed to the production or Live environment.

{% hint style="info" %}
If your project contains a Staging environment, deployments will be made from Development to Staging and then from Staging to Live.
{% endhint %}

![Left to right model](https://901789129-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FGJe6RYnmTaXeJjzhM6Wb%2Fuploads%2Fgit-blob-ffe8d03dd6cb6ff9fff12f6188df6031141673b4%2Fleft-to-right.png?alt=media)

## Deployment Approach

Umbraco Deploy uses a two-part deployment approach. This approach keeps metadata (Document types, templates, and so on) separate from content (Content and Media). The term *transfer* refers to content and media deployments. The term *deploy* refers to metadata deployments.

In summary:

1. Metadata such as Document Types, Templates, Forms, Views, and config files are stored in a repository and are **deployed** between environments. This can be achieved using a CI/CD deployment pipeline with something like GitHub Actions or Azure DevOps.
2. Content and Media items are **not** stored in the repository. These need to be **transferred** directly from the Umbraco backoffice using the *"Queue for Transfer"* option. Once a content editor has all the items needed for a transfer, they will use the Deployment Dashboard in the Content section to transfer the items in the queue.

### Deploying Metadata

To transfer content and media, the source and target environments need to have the same setup. They need to be in sync and have the same file structure. To achieve this, you need to deploy your metadata changes to the target environment.

* [Deploying from your local machine to your environments](/umbraco-deploy/deployment-workflow/deploying-changes.md)

### Transfer Content and Media

Moving your content and media between your environments is done through the Umbraco backoffice. You can transfer content from one environment to another, for example, from local to your development environment. You also have the option to restore content and media to your local or development environment from your production/Live or staging environment.

* [Transfer Items](/umbraco-deploy/deployment-workflow/content-transfer.md)
* [Restore Items](/umbraco-deploy/deployment-workflow/restoring-content.md)

{% hint style="info" %}
Transferring and restoring content and media works the same way whether you work locally or between two environments.
{% endhint %}

### Import and Export

Another approach for transferring content and schema between environments is to use import and export. In one environment, you can export selected content, a tree, or the whole workspace to a .zip file. There are options to include related media files, schema, and code files, such as templates and stylesheets.

Read more about the [import and export](/umbraco-deploy/deployment-workflow/import-export.md) feature.

## Deploy Settings

Umbraco Deploy includes a collection of Deploy-specific pages in the Settings section. These enable you to run operations such as schema deployment from data files and schema extraction to data files.

Learn more about the different options in the [Deploy Settings article](/umbraco-deploy/deployment-workflow/deploy-dashboard.md).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.umbraco.com/umbraco-deploy/deployment-workflow/deployment-workflow.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
