# Deploy New Product Version with Freemius

This guide is for [WordPress](https://freemius.com/help/help/documentation/wordpress/.md) only

There are two main reasons why Freemius manages its own repository and deployment process:

1. To securely serve paid plugin or theme downloads and updates to customers who own a valid license.
2. To simplify code management by enabling developers to maintain one codebase that contains both free and premium functionality. When you deploy a WordPress product in the Freemius Developer Dashboard, Freemius can automatically generate a free, WordPress.org-compatible version from that codebase. To learn how the generated free and premium packages are created, see the [WordPress deployment process](https://freemius.com/help/help/documentation/wordpress/deployment-process/.md).

## ZIP File Creation[​](#zip-file-creation "Direct link to ZIP File Creation")

Before you can deploy a new version of your product, you need to create a ZIP file of your plugin or theme. The ZIP file should contain the root folder of your plugin or theme, which includes all the necessary files and subfolders.

We recommend the following methods for creating ZIP files for deployment.

### Windows & macOS[​](#windows--macos "Direct link to Windows & macOS")

Create the ZIP file using your system's native ZIP tool to ensure compatibility with our deployment system.

* **Windows:** Select the files or folders you want to compress, right-click, and choose **Compress to... → ZIP File**.
* **macOS:** Select the files or folders, right-click, and choose **Compress**.

Avoid Using PowerShell

On Windows, avoid using PowerShell or other PowerShell-based ZIP tools, as they may produce incompatible files.

### Linux[​](#linux "Direct link to Linux")

Use the `zip` command in the terminal to create your ZIP archive and ensure compatibility with our deployment system.

```
# Create a ZIP archive

zip -r archive_name.zip folder_to_compress/
```

## Deploying to Freemius[​](#deploying-to-freemius "Direct link to Deploying to Freemius")

### Manual Deployment[​](#manual-deployment "Direct link to Manual Deployment")

1. Zip your plugin or theme root folder on your local machine. If you are using Windows or Windows-based archiving tools (e.g., PowerShell), please review these [important notes](#zip-file-creation) when creating the ZIP file.
2. Log in to your [Freemius Dashboard](https://dashboard.freemius.com/).
3. Navigate to the **Deployment** page.
4. Click the **+ Add New Version** button to browse and upload the product ZIP.
   <!-- -->
   ![Freemius Developer Dashboard Deployment Add New Version](/help/assets/ideal-img/freemius-developer-dashboard-deployment-add-new-version.9ffa25e.480.png)

### Deployment Automation[​](#deployment-automation "Direct link to Deployment Automation")

* **[deploy-on-freemius](https://github.com/marketplace/actions/deploy-on-freemius)**: a GitHub Action for deploying and releasing a new product version via Freemius. Created & maintained by [Jasper Vriends / Buttonizer](https://github.com/buttonizer)
* **[freemius-suite](https://github.com/CodeAtCode/freemius-suite)**: a Python-based Bash library for packaging, deploying, and releasing a new product version via Freemius. Created & maintained by [Daniele Scasciafratte](https://github.com/Mte90)
* **[gulp-freemius-deploy](https://www.npmjs.com/package/gulp-freemius-deploy)**: a Gulp NPM library for packaging and deploying a new product version via Freemius. Created & maintained by [James Kemp](https://github.com/jamesckemp)
* **[Freemius API](https://github.com/Freemius/freemius-php-sdk/blob/master/tests/deployment-test.php)**: a PHP example of how to deploy programmatically using the Freemius [REST API](https://docs.freemius.com/api).

## Release the Deployed Version[​](#release-the-deployed-version "Direct link to Release the Deployed Version")

When you're ready to make the new version available to your customers for downloads and updates, change the release status from **Unreleased** to **Released**.

![Freemius Developer Dashboard - Beta Release](/help/assets/ideal-img/freemius-deployment-beta-release.52a6946.480.png)

You can also deploy the new version as a **Beta Release**. This release will only be available to users who [signed up for the beta program](https://freemius.com/help/help/documentation/wordpress-sdk/features/wp-admin-account/.md#beta-program).

warning

The paid version will not be available for download or update for your customers until you change the release status to **Released**. If you have a beta program, you can also flag the release as **Beta release** to make it only available for customers who are part of the beta program.

Once a deployment is done, you can test the generated zips to ensure everything is working correctly. You can use the [Testing documentation](https://freemius.com/help/help/documentation/wordpress-sdk/testing/.md) to generate a license key for testing purposes and activate the premium features of your product.

## Free and Premium Version Generation[​](#free-and-premium-version-generation "Direct link to Free and Premium Version Generation")

When you deploy a new version of your **WordPress** product, Freemius automatically generates both the free and premium versions of your plugin or theme.

The free version is generated by removing premium-only code from the codebase, while the premium version retains all features. More information can be found in the [WordPress Deployment Process](https://freemius.com/help/help/documentation/wordpress/deployment-process/.md).
