If you've been updating your website by dragging files into an FTP client, you know the pain: forgotten files, long upload times when transferring everything, and the constant risk of overwriting the wrong version. It works, but it doesn't scale — especially when you're managing multiple environments or working with a team.

[DeployHQ](https://www.deployhq.com) bridges the gap between your Git workflow and your FTP server. Push a commit, and only the changed files are uploaded automatically. No more manual transfers, no more missed files.

## Why move from manual FTP to automated deployments

Manual FTP deployments have several problems that compound over time:

- **Missed files** : It's easy to forget a file when uploading manually, leading to broken functionality
- **Full-site uploads are slow** : If you upload everything each time, large sites can take minutes or hours
- **No audit trail** : You can't easily see what was deployed, when, or by whom
- **Multi-environment headaches** : Keeping development, staging, and production in sync manually is error-prone
- **No rollback path** : If a deployment breaks something, you need to manually figure out what changed

With [DeployHQ](https://www.deployhq.com), your Git history becomes your deployment history. Every deployment is logged, only changed files are transferred, and you can [roll back](https://www.deployhq.com/blog/seamless-recovery-how-deployhq-empowers-you-to-rollback-deployments) to any previous deployment if needed.

## What you'll need

- A Git repository hosted on GitHub, [GitLab](https://www.deployhq.com/blog/gitlab-vs-github-2025-in-depth-comparison-platform-choice-guide), Bitbucket, or another provider
- FTP or SFTP access to your web server
- A [DeployHQ account](https://www.deployhq.com/signup) (free plan available — 1 project, up to 10 deploys per day)

## FTP vs SFTP: choosing the right protocol

[DeployHQ](https://www.deployhq.com) supports both FTP and SFTP. If your server offers SFTP (SSH File Transfer Protocol), use it:

| Feature | FTP | SFTP |
| --- | --- | --- |
| Encryption | None (credentials sent in plaintext) | Fully encrypted |
| Authentication | Username/password only | Username/password or SSH keys |
| Port | 21 | 22 |
| Firewall compatibility | Requires passive mode configuration | Single port |

SFTP is the secure choice for any deployment that crosses the internet. If your hosting provider only offers FTP, consider asking them about SFTP support or switching to a provider that offers SSH access.

For even more advanced file transfer options, see our comparison of [SFTP vs SCP vs rsync](https://www.deployhq.com/blog/sftp-vs-scp-vs-rsync-choosing-the-right-file-transfer-method).

## Creating a DeployHQ project

After signing in to [DeployHQ](https://www.deployhq.com), click **New Project** and enter a name for your project.

![Creating a new project](https://blog.deployhq.com/attachment/2a1c86ce-047b-449f-ac00-52289f4e678b/MLkr-T3v.png)

Select your repository host and connect to the repository containing your site's source code.

### Connecting your repository

Authorise [DeployHQ](https://www.deployhq.com) with your repository host, then select the repository:

![Repository selection](https://blog.deployhq.com/attachment/a9aba690-b2d2-4527-ba7f-00df07f2bae8/VVzwnyb.png)

Keep the **Add a webhook** option checked to enable automatic deployments on push.

### Configuring your FTP server

On the **New Server** screen, select **FTP** (or **SFTP** if available) as the protocol.

![FTP server configuration](https://blog.deployhq.com/attachment/dfaa1414-01d9-4163-841b-06bf7f153fc6/430N2d6.png)

Enter your server details:

- **Hostname** : Your FTP server address (e.g., `ftp.example.com`)
- **Port** : 21 for FTP, 22 for SFTP
- **Username** : Your FTP login username
- **Password** : Your FTP login password
- **Deployment path** : The directory where files should be placed (e.g., `htdocs`, `public_html`, or `www`)

Click **Create Server** to save the configuration.

## Running your first deployment

Click **Deploy for the first time** in the top right:

![First deployment screen](https://blog.deployhq.com/attachment/4cc18345-c4ba-4e34-a61f-bd6c00367e20/3f-DBG8G.png)

The start revision is set to **The very first commit** since no previous deployments exist. Click **Deploy** to begin uploading all files from your repository to the server.

![Deployment complete](https://blog.deployhq.com/attachment/962f85d0-0d42-421a-919b-1aa4fed5851d/5AAXPu-O.png)

## Enabling automatic deployments

Navigate to **Automatic Deployments** in the left sidebar and enable the option for your FTP server:

![Auto deployment configuration](https://blog.deployhq.com/attachment/f76337fa-0cb7-4149-bf29-1ecf4596aa88/f946k-Ud.png)

Now every push to your repository triggers a deployment. Only the files changed in that commit are uploaded:

![Automatic deployment log](https://blog.deployhq.com/attachment/6d645998-8ae5-49d8-9b9c-2f81cbe6716e/UKFAP52.png)

## Protecting sensitive files

FTP servers often contain configuration files with database credentials, API keys, or other secrets that shouldn't be stored in your Git repository. DeployHQ's [config files](https://www.deployhq.com/support/config-files) feature lets you define server-specific files that are placed during deployment but never stored in version control.

For a deeper look at managing secrets in your deployment workflow, see our guide on [protecting your environments](https://www.deployhq.com/blog/protect-your-environments-practical-security-tips-for-smarter-deployments).

## Adding build pipelines for compiled assets

If your project uses Sass, TypeScript, or any build tooling, DeployHQ's [build pipeline](https://www.deployhq.com/blog/the-deployhq-build-pipeline) runs your build commands before uploading files to the FTP server:

```
npm install --quiet
npm run build
```

This means you don't need to commit compiled assets to your repository. [DeployHQ](https://www.deployhq.com) compiles them during the deployment and uploads only the output.

## Managing multiple environments

For projects with staging and production servers, add multiple FTP servers to the same [DeployHQ](https://www.deployhq.com) project. [Deploy](https://www.deployhq.com) different Git branches to different servers using [multi-environment management](https://www.deployhq.com/blog/managing-multiple-environments-with-deployhq-dev-staging-and-production) — for example, `develop` to your staging server and `main` to production.

* * *

Ready to leave manual FTP uploads behind? [Sign up for DeployHQ](https://www.deployhq.com/signup) and automate your deployments today.

If you have any questions, contact us at [support@deployhq.com](mailto:support@deployhq.com) or reach out on [X (Twitter)](https://x.com/deployhq).

