As a plugin or theme developer, you likely use git for WordPress version control — especially if you work with a team. But even many devs who work solo use version control either as a way to keep their git skills fresh or to help track changes over the course of a project.

If you have a solid workflow that utilizes some combination of git plus a service like GitHub, BitBucket, or GitLab, that’s great. But once you push your changes or merge a pull request, you still have to use SSH or FTP to deploy your updated files on your site. That’s an extra step that eats up precious time.

What if you could deploy those commits directly to your WordPress site automatically? With FetchPress, you can. Put simply; if you use version control when developing for WordPress, you need to be using FetchPress. I’ve tested the plugin with my own code and GitHub account, and in this FetchPress review, I’m excited to show you how it works.

Hook Into Git With FetchPress

Fetch Press is a WordPress plugin that hooks into your remote git repository and automatically deploys your code when you make a push or merge a pull request.

FetchPress logo

With FetchPress, you can synchronize any repository, public or private. Whether your repo is stored on Github, Bitbucket, or GitLab, you can use FetchPress to sync and deploy your theme or plugin code in a snap. You can stop wasting time using SSH or FTP and spend more time writing code.

How to Use FetchPress for WordPress Version Control

Let’s walk through the setup and usage of FetchPress. It’s easy to use, but I’ll go through the steps as I tested the plugin and show you how to get set up.

Installation and Setup

First, you’ll need to grab the FetchPress plugin. You can try it for free by creating an account at https://fetch.press. After setting up your account and logging in, you can download the plugin from your account page.

Once you have the plugin downloaded, simply install and activate the plugin on your WordPress site as you would any other. If you already purchased a site plan, you can enter your license on the first tab of the main menu.

screenshot of FetchPress main menu in WordPress

You can use FetchPress with all public repositories if you don’t have a license. The advantage of purchasing a license is that you can use it with private repositories. For this review, I tested the paid version with GitHub, although you can use GitHub, BitBucket, or GitLab.

Connect with GitHub

To allow the deployment of private GitHub repos, you’ll need an access token. If you’ve ever authorized access to your GitHub account with another service, the process will be familiar to you. In FetchPress, navigate to the GitHub tab. Click the Get GitHub Token button, which will open a modal requesting access to your GitHub account.

Copy the token you receive and paste it into the FetchPress GitHub Token field on your WordPress site. Click Save Changes, and that’s it — you’re connected! It’s that easy.

Add a Plugin

I already had a private GitHub repository for a plugin I’ve been working on, so I was ready to get started. The process is pretty straightforward.

In the FetchPress admin bar menu, click Add plugin. On the Add Plugin screen, enter the info about your plugin using the fields at the top.

screenshot of FetchPress menu in WordPress

Repository: Enter your username/project-name

Branch: This defaults to master if left empty.

Repository subdirectory: This field is optional — it’s only required if your theme or plugin resides in a subdirectory within the repo.

Version Control and Other Choices

Select the radio button next to the version control service you’re using; GitHub, BitBucket, or GitLab.

Then choose Private Repository if necessary, and leave it unchecked if it’s public. If you select Deploy on Push, FetchPress sets up a webhook that automatically deploys your code from the repo whenever a change is pushed to the branch. If the plugin already exists on your site, you’ll want to select Link to existing plugin. You need to ensure that the existing plugin folder name matches the name of your git repo.

Once you’ve made all your selections, click the Add Plugin button. You’ll get a message telling you it was successfully installed — or, in my case, if it wasn’t. I struggled with this for a few minutes until I realized I had named my master branch “main.” Because I had left the Branch field blank, it wasn’t able to sync correctly. Something to be aware of if you have a different name for your master.

If you get the message that your plugin was installed successfully, you can activate it using the handy link in the message.

Add a Theme

You can also add and sync a theme to your WordPress site from your repository. It works exactly the same as adding a plugin.

Managing Your Themes and Plugins

FetchPress creates a “card” for each theme or plugin you install and sync. You can access them through either the Themes or Plugins items in the admin menu.

screenshot of FetchPress menu in WordPress

Managing is super easy. There are three options on each card for managing each plugin or theme:

Update: If you didn’t choose to Deploy on Push when you set up your plugin or theme, you’ll need to update manually.

Edit: Clicking the Edit Plugin (or Theme) button brings you to the now-familiar screen where you initially set it up. You can make any selections — like choosing to Deploy on Push — or edit the name of the folder, branch, or repository subdirectory.

Unlink: Clicking the broken link icon will disconnect the theme or plugin from syncing to your repo. It will remain installed but will no longer update through FetchPress.

Testing FetchPress Sync

Let’s see how this works by pushing some changes to my previously-installed movie-reviews plugin.

First, I made code changes on my local machine, then pushed them to GitHub like normal. I could see the pushed commit in my activity.

screenshot of GitHub Activity list

Then, I returned to my test site, and in FetchPress→Plugins, I clicked Update Plugin. FetchPress gave me the thumbs-up via a message saying, “Your plugin “Easy Movie Reviews” was upgraded successfully.” So far, so good, but I needed to see if my change actually synced.

Unfortunately, my code change was so small that it wouldn’t be readily apparent. So I checked the plugin code in my test site’s plugins folder.

screenshot of VSCode showing PHP code for plugin, with an arrow point to the line where the change was made

Success! I could see that the line of code that I had changed was updated, just as I intended, and pushed to GitHub.

FetchPress Pricing

As I mentioned, you can try FetchPress for free by creating an account on their site. When you’re ready to add a site plan, you can go live.

screenshot of FetchPress pricing table

Site plans are all based on an annual subscription model with three tiers:

Starter

For $99 per year, you get a license for up to 20 sites, with unlimited deployments to private and public repositories.

Pro

Pro gives you a license for up to 50 sites at $199 per year, with unlimited deployments to private and public repositories.

Enterprise

You can use FetchPress on up to 500 sites at the Enterprise level for $499 per year. Like the others, it includes unlimited deployments to private and public repositories.

FetchPress Works Like a Charm

It’s always gratifying when I find a plugin that just works, and FetchPress is one of those. The interface is uncomplicated and intuitive. It’s obviously made for developers in that they don’t insult your intelligence with a lot of overdone, bloated menus. FetchPress gets right to the point and does what it promises. Not that it’s an unattractive UI — it just stays out of your way and makes things easy to configure.

If you use version control when developing for WordPress, you need to be using FetchPress.