← Inboard blog

How to install a WordPress plugin from a .zip file

By Coconut5 min read

Short answer: WordPress admin → Plugins → Add New Plugin → Upload PluginChoose File → pick the .zip your vendor gave you → Install NowActivate Plugin. The plugin is live across the whole site.

If that worked, close the tab. If you got "The uploaded file exceeds the upload_max_filesize directive", "Destination folder already exists", or "Link you followed has expired", the next 1,200 words are for you.


When you need this (and when you don't)

Most WordPress plugins live in the official WordPress.org directory and install via Plugins → Add New → search → Install Now, no .zip required. The .zip-upload path matters when:

  • The plugin is premium / paid and the vendor distributes it directly rather than via WP.org
  • The plugin is custom-built for your business or a client's
  • You're installing a pre-release / beta version a vendor emailed you
  • You're restoring a plugin from a backup that WP.org removed or that's on an older version

If the vendor's install instructions ever say "download this zip, then..." — that's the path this post covers.


Click path — the one that always works

  1. Log in to WordPress admin (/wp-admin).
  2. In the left sidebar, click Plugins → Add New Plugin. (Called Add New on older WordPress versions — same destination.)
  3. At the top of the page, click the Upload Plugin button.
  4. Click Choose File and select the .zip your vendor gave you.
  5. Click Install Now.
  6. WordPress uploads, unpacks, and shows a success screen with an Activate Plugin button.
  7. Click Activate Plugin. The plugin is now live.

You can now set up the plugin from wherever the vendor told you — often Settings → [Plugin Name] or a new top-level sidebar item.

Don't unzip the file first. WordPress expects the compressed .zip, not the folder inside it. Unzipping and uploading the loose folder, or re-zipping after unzipping, breaks the install more often than it works.


Three things that break the upload

1. "The uploaded file exceeds the upload_max_filesize directive"

Your host has a PHP upload-size limit below the plugin's zip size. Common on shared hosting where the limit is 2 MB or 8 MB and the plugin is 15 MB.

Three fixes, in order of how much control you have:

  • Ask your host to raise it — support ticket: "please raise upload_max_filesize and post_max_size to 64M". Most managed WordPress hosts do this same-day.
  • Edit php.ini or .htaccess if you have SFTP/shell access. The WordPress docs have a good rundown of which file to edit on which stack.
  • Upload via SFTP and skip the admin UI. Unzip the plugin locally, upload the resulting folder to /wp-content/plugins/, then refresh the Plugins admin page — WordPress will show the new plugin ready to activate. This works regardless of PHP upload limits.

2. "Destination folder already exists. [plugin-name]"

You're trying to install a plugin that already exists. Either an older version, or a previous failed install that left a folder behind.

Fixes, in order:

  • If this is an update, use Plugins → Installed Plugins, find the plugin, click Deactivate, then use the plugin's own update flow — most premium plugins have a Check for updates link in their settings, or WordPress's admin-bar update notification works.
  • If you need to force a fresh install: DeactivateDelete the existing plugin from the Installed Plugins page, then re-upload the new zip. WordPress won't delete a plugin that's active.
  • If the Plugins admin page doesn't show it but the folder exists (classic symptom of a half-installed plugin), connect via SFTP, delete the folder at /wp-content/plugins/[plugin-name]/, re-upload.

3. "The link you followed has expired"

This one is a red herring. It usually means your upload exceeded post_max_size — the PHP limit for the whole POST request, separately from upload_max_filesize. WordPress returns this generic error because PHP rejected the whole request before WordPress could parse it.

Same fix as #1: raise post_max_size, or upload via SFTP.


How to tell if the plugin activated correctly

Activation doesn't always mean "working". Three checks:

  1. It's in the Installed Plugins list, marked active. Plugins → Installed Plugins. The plugin row is highlighted blue (active), not grey (inactive).
  2. Its settings page loads without errors. Follow whatever link the plugin adds to your sidebar. A white page with no content, or a PHP error, means the plugin activated but can't run — usually a PHP-version mismatch (plugin needs PHP 8+, your host is on 7.4) or a missing dependency.
  3. The frontend doesn't crash. Open your homepage in an incognito tab. If it loads, the plugin isn't throwing on the public side. If the site is white-screened, the plugin has a fatal error — see the next section.

If the site is white after activation

Classic WordPress failure mode. The plugin activated, ran its boot code, threw a fatal PHP error, and WordPress couldn't render any page. You now can't get into wp-admin either because the same error fires there.

Fix: connect via SFTP, rename /wp-content/plugins/[plugin-name]/ to something like /wp-content/plugins/[plugin-name].off/. WordPress deactivates any plugin it can't find, and your site comes back. Then email the vendor with the exact error from your PHP error log.

Keep SFTP access ready before you install anything from outside WP.org. It's the one path that always gets you out.


Why your users shouldn't have to read this

If you're a SaaS founder reading this because you ship a WordPress plugin and your users are bouncing off the upload step — you're in the right place for a different reason.

The install step your users hit is full of platform quirks like the ones above. Upload-size limits, deactivate-before-updating, plugin folders left behind by a failed install, white screens from a PHP-version mismatch. Every one of those is a support ticket, or worse, a user who closes the tab and doesn't come back.

We built Inboard for this. Your user signs up, lands on a widget in your dashboard that walks them through the install on their WordPress site — detecting host PHP version, the right upload path for their limit, and verifying the plugin activated before they close the tab. If your SaaS ships a WordPress plugin (and a Shopify app, and a Chrome extension, and whatever else this guide didn't cover), this is the page for you.

If you're the WordPress admin who came here to upload a zip — you've got what you need above. Good luck.