Manual deployments are available from the DeployHQ web interface on every project and require no CLI. The buttons described below are the same ones that have always been available, and they remain the primary way to trigger a deployment by hand. The [DeployHQ CLI](https://github.com/deployhq/deployhq-cli) and the [API](Article: #75) are additional options for users who prefer scripting; they do not replace the manual flow.

To start a deployment, either click the **Deploy Project** button at the top of the screen from any page in your project, or the **New Deployment** button within your Overview page:

{screenshot: 35}

DeployHQ prepares a deployment by checking the last revision that was deployed to your server, then comparing it to the latest one pushed to the remote branch, therefore when you deploy to a server for the first time, DeployHQ will upload the whole repository.

As a result, you'll see the **Start Revision**, the commit that your files will be deployed from, set to "The very first commit":

{screenshot: 37}

If you already have your files on your server and want to skip this, you can find out how to do so within the [guide](Article: #129) on the left hand side of this page.

Once you're happy with the configuration for your deployment, hit **Deploy** and your deployment will start, otherwise, you can press **Preview** and DeployHQ will generate a full list of changes that will be included in your deployment, allowing you to check before starting it.

When you start a deployment, the process consists of several stages, which we will outline in further detail below.

## Preparing

During this stage, we'll check connections to your server and repository, then if these tests pass we will checkout a working copy of your repository at the specified end revision, then update it from its source.

{screenshot: 41}

## Building

If you have a [build pipeline](Article: #301) setup, any configured commands will be run, then a manifest of your changes will be prepared for deployment.

{screenshot: 43}

## Transferring

During this stage, DeployHQ will connect to your server, then run any configured pre-transfer SSH commands. You can find out more about setting up SSH commands in this [article](Article: #57). After this, all files will be uploaded or removed as appropriate. The **Transferring files** section will show a progress bar of all the files as they're being transferred, and you can toggle **Show file destinations?** to display the path on the your server that the files are being uploaded to.

Finally, any [configuration files](Article: #47) set up for this server and deployment will be uploaded, then any configured post-transfer SSH commands will be run.

{screenshot: 45}

## Finishing

At this point, any configured [notifications](Article: #191) will be delivered, then emails will be sent to configured recipients with the status of the deployment.

{screenshot: 47} 

For more advanced settings, just choose any article within the **Configuration** section on the left hand side of this page.