WP-Stateless – Google Cloud Storage


Upload and serve your WordPress media from Google Cloud Storage (GCS) with the WP-Stateless plugin. In as little as two minutes, you will be benefitting from serving your media from Google Cloud’s distributed servers.

New to Google Cloud? Google is offering you a $300 credit to get you started.


  • Store and deliver media files on Google Cloud Storage instead of your server.
  • Google Cloud Storage is geo-redundant, meaning your media is delivered by the closest server – reducing latency and improving page speed.
  • Scale your WordPress website across multiple servers without the need of synchronizing media files.
  • Native integration between Google Cloud Storage and WordPress.
  • $300 free trial from Google Cloud. Nice!


  • Backup – Upload media files to Google Storage and serve local file urls.
  • CDN – Copy media files to Google Storage and serve them directly from there.
  • Stateless – Store and serve media files with Google Cloud Storage only. Media files are not stored locally.


  • Setup assistant makes getting started fast and easy.
  • No need to manually create service accounts or buckets – handled automatically.
  • Settings panel provides you with further GCS configuration and file url customization.
  • Mask the default GCS URL with your own custom domain.
  • Automatically replace hardcoded media URLs with GCS equivalents in post editor and meta.
  • Batch image thumbnail regeneration.
  • Synchronization tools for uploading existing files and images.
  • All settings supported with wp-config constants and network setting overrides.
  • Multiple modes: Backup, CDN, Stateless.
  • All files served in HTTPS mode.
  • Multisite compatible.

Support, Feedback, & Contribute

We welcome community involvement via the GitHub repository.

Custom Development

Looking for a unique feature for your next project? Hire us!


  • Settings Panel: Supports network setting and wp-config constant overrides.
  • Setup Assistant
  • Setup Assistant: Google Login
  • Setup Assistant: Approve Permissions
  • Setup Assistant: Project & Bucket
  • Setup Assistant: Complete
  • Edit Media: Image stored on Google Cloud Storage.


  1. Search, install, and activate the WP-Stateless plugin via your WordPress dashboard.
  2. Begin WP-Stateless setup assistant at Media > Stateless Setup and click “Get Started Now.”
  3. Click “Google Login” and sign-in with your Google account.
  4. Set a Google Cloud Project, Google Cloud Storage Bucket, and Google Cloud Billing Account and click “Continue.”
  5. Installation and setup is now complete. Visit Media > Stateless Settings for more options.
    For a more detailed installation and setup walkthrough, please see the manual setup instructions on Github.


What are the minimum server requirements for this plugin?

Beyond the official WordPress minimum requirements, WP-Stateless requires a minimum PHP version of 5.5 or higher and OpenSSL to be enabled.

What wp-config constants are supported?

For a complete list of supported wp-config constants, please consult the GitHub wiki.

How do I manually generate the Service Account JSON?

The WP-Stateless setup assistant will create the Service Account JSON automatically for you, but you can follow these steps if you choose to create it manually.

  1. Visit Google Cloud Console, and go to IAM & Admin > Service accounts.
  2. Click Create Service Account and name it wp-stateless.
  3. Set the role to Storage > Storage Admin.
  4. Check Furnish a new private key and select JSON as the key type.
  5. Open the JSON file and copy the contents into the Service Account JSON textarea within the WP-Stateless settings panel.
Where can I submit feature requests or bug reports?

We encourage community feedback and discussion through issues on the GitHub repository.

Can I test new features before they are released?

To ensure new releases cause as little disruption as possible, we rely on a number of early adopters who assist us by testing out new features before they are released. Please contact us if you are interested in becoming an early adopter.

Who maintains this plugin?

Usability Dynamics maintains this plugin by continuing development through it’s own staff, reviewing pull requests, testing, and steering the overall release schedule. Usability Dynamics is located in Durham, North Carolina and provides WordPress engineering and hosting services to clients throughout the United States.


Forced to uninstall, tons of bugs

After uninstalling, the module left behind hard-coded urls of images in post body pointing to Google Cloud Storage buckets.

The last update was filled with bugs (see review before mine for a detailed explanation). I was forced to uninstall but now have to deal with the hard-coded urls left behind by this module.

Bugs. So. Many. Bugs.

A critical bug in version 2.1.8 of WP-Stateless marks the very last straw for our team and our clients. We can no longer afford to drop everything we’re doing to troubleshoot why something that previously worked fine for many releases suddenly breaks without warning.

From defined constants going unrecognized to site-wide banners displaying for absolutely no reason to the CDN bucket name becoming unset, breaking media uploads and front-end references, we’re truly disappointed with what appears to be a refined, well-polished media management solution introducing unexpected bugs with every patch release.

Question: Since when does a patch release introduce new bugs and break existing functionality?
Answer: When semantic versioning practices aren’t adhered to.

Given a version number MAJOR.MINOR.PATCH, increment the:

  1. MAJOR version when you make incompatible API changes,
  2. MINOR version when you add functionality in a backwards-compatible manner, and
  3. PATCH version when you make backwards-compatible bug fixes.

Version 2.1.6 introduced new constants, or, more precisely, replaced constants. This should have been reserved for a MAJOR version release, something considered as “incompatible API changes.”

Version 2.1.4 introduced an updated version of Google OAuth, a change which broke new setups for our entire team. This should have been reserved for a MINOR version release, something considered “a backwards-compatible change”.

Version 2.1.7 introduced a dashboard-wide notice for sites set to use Stateless mode, forcing file name rewriting even for users of the CDN mode. The banner meant for Stateless settings persisted even when unnecessary, causing confusion for all. This should have been reserved for a MAJOR version release, something considered as “incompatible API changes.”

The list goes on. Fortunately for us, the list will no longer be something that causes our team to scramble or our account managers and directors to have uncomfortable discussions with multi-million-dollar clients and projects.

Awesome !!!

This plugin saved my drive capacity and traffic. Please grow with WordPress!

Awesome Plugin

It simply works. I am really happy to see that you are starting to add support for various plugins and themes. It would be awesome to see support for Divi as well in the future. Keep up the good work!

Read all 22 reviews

Contributors & Developers

“WP-Stateless – Google Cloud Storage” is open source software. The following people have contributed to this plugin.




  • FIX – Resolved fatal error with OneCodeShop RML Amazon S3 plugin. GitHub Issue #317.
  • FIX – Resolved missing bucket in file URL when “storage.googleapis.com” was supplied in Domain field. GitHub Issue 318.
  • ENHANCEMENT – Support synchronization of files without metadata, such as .doc and .docx files. GitHub Issue 316.


  • FIX – WooCommerce product export.
  • FIX – PDF previews in media library now supported.
  • ENHANCEMENT – Improved error message when there is nothing to sync.
  • ENHANCEMENT – Domain field functionality now allows webmaster to control http or https
  • ENHANCEMENT – Notice about Stateless mode requiring the Cache-Busting option is displayed to those using Stateless mode.
  • ENHANCEMENT – Upload full size image before generating thumbnails.
  • COMPATIBILITY – Added compatibility support for Learndash plugin.
  • COMPATIBILITY – Added compatibility support for BuddyPress plugin.
  • COMPATIBILITY – Added compatibility support for Divi Builder export.
  • COMPATIBILITY – Added compatibility support for Elementor plugin.


  • ENHANCEMENT – Display dashboard-wide notice for existing users explaining stateless mode now enables cache-busting option.
  • ENHANCEMENT – Display notice when selecting stateless mode explaining stateless mode now enables cache-busting option.
  • ENHANCEMENT – Display required message on cache-busting setting description when stateless mode is enabled.


  • FIX – Resolved Google SDK conflict.
  • FIX – ICompatibility.php errors notice.
  • FIX – Undefined index: gs_link in class-bootstrap.php.
  • FIX – Media files with accent characters would not upload correctly to the bucket.
  • ENHANCEMENT – Force Cache-Busting when using Stateless mode.
  • ENHANCEMENT – New admin notice design.
  • ENHANCEMENT – Improved and clear error message.
  • ENHANCEMENT – Update Google Libraries.
  • COMPATIBILITY – Added support for WooCommerce Extra Product Options.
  • COMPATIBILITY – Added support for WPForms Pro.
  • COMPATIBILITY – Improved ShortPixel compatibility.
  • COMPATIBILITY – Fixed ACF Image Crop compatibility.


  • FIX – Fatal error with PHP 5.4.45 on activation.
  • FIX – E_WARNING: Illegal string offset ‘gs_bucket’.
  • FIX – Resolved ‘save_network_settings’ message when saving network settings.
  • COMPATIBILITY – Added support for WP Forms plugin
  • COMPATIBILITY – Added support for WP Smush plugin
  • COMPATIBILITY – Added support for ShortPixel Image Optimizer plugin.
  • COMPATIBILITY – Added support for Imagify Image Optimizer plugin.
  • COMPATIBILITY – Added support for SiteOrigin CSS plugin.
  • COMPATIBILITY – Added support for Gravity Forms plugin.
  • COMPATIBILITY – Added support for WPBakery Page Builder plugin.
  • COMPATIBILITY – Added wp-config constant support for compatibility options.


  • ENHANCEMENT – Updated Google OAuth URL for Setup Assistant.

Earlier versions

Please refer to the separate changelog.txt file.