Skip to main content
Plugins Docs About Support Pricing My Account Browse Plugins

Bodholdt Backup for Google Drive Docs

Everything you need to set up, configure, and get the most out of the plugin.

Full Guide
v6.55.3

Don't have it yet? Bodholdt Backup for Google Drive is free: get it from its plugin page.

What Bodholdt Backup for Google Drive is

Bodholdt Backup for Google Drive makes a complete copy of your WordPress site, both your database and your files, and uploads it straight to your own Google Drive. You connect it once, pick a schedule, and it quietly keeps backups in the cloud on its own. If something ever goes wrong, you restore the whole site, or just the parts you want, from the Your Backups tab. You can even use a backup to move your site to a brand-new server. Nothing passes through a third-party service. Your backups live in your Drive, under your control.

Quick start (about 15 minutes)

Most of this time is a one-time setup with Google. After that, backups run themselves.

  1. Install & activate the plugin (Plugins → Add New → Upload Plugin, choose the ZIP, Install, Activate). Then open Bodholdt Backup for Google Drive in your WordPress admin sidebar.
  2. Connect Google. You’ll create a free Google Cloud project and copy two values (a Client ID and a Client Secret) into the plugin. The built-in Setup Wizard walks you through it, and full details are in “Connecting to Google” below.
  3. Authorize access. Click Authorize Google Access, approve on Google’s screen, and you’ll land back on a “Google Drive connected!” message.
  4. Pick a schedule (Hourly, Daily, or Weekly) and choose what to back up.
  5. Run your first backup by clicking Start Backup Now on the Dashboard. That’s it; your site is now protected.

No license key is required, and there is not one to buy. Bodholdt Backup for Google Drive is free, in a single edition, with every feature in it. Updates arrive in your WordPress dashboard with no key to enter.

Before you begin (what you need)

  • A WordPress website on version 6.0 or higher.
  • PHP 7.4 or higher (PHP 8.0+ recommended).
  • A Google Account (a personal Gmail or a Workspace account both work). You do not need a paid Google plan; every account comes with 15 GB of free Drive storage.
  • Administrator access to your WordPress dashboard.
  • Real security keys in wp-config.php: AUTH_KEY and AUTH_SALT of at least 32 characters each (or a BODHOLDT_BACKUP_KEY), not WordPress’s “put your unique phrase here” placeholder. If WordPress was set up with its standard installer, these keys were created for you. The plugin encrypts your cloud credentials with them and pauses backups rather than storing anything in plaintext if they are missing or still placeholders. Never paste these keys into an email or a support ticket.
  • These PHP extensions, which most hosts already have: OpenSSL or Sodium (for encrypting your credentials), cURL (for streaming downloads), and ZipArchive (for building the backup file).

Connecting to Google

This is the one part that takes a few minutes. You only do it once. You’re creating a free “Google project” so the plugin can talk to your Drive on your behalf. This keeps your Drive access entirely under your control, and Bodholdt never sees your Google login. No billing or credit card is required. The plugin’s Setup Wizard mirrors these steps in-app; this is the same flow written out.

Step 1: Create a Google project

  1. Log in to the Google Cloud Console.
  2. Click the project dropdown in the top-left header.
  3. Click New Project.
  4. For Project Name, enter Bodholdt Backup (or your website’s name).
  5. Click Create, then select the new project from the dropdown.

Step 2: Turn on the Google Drive API

  1. Search for “Google Drive API” in the console search bar.
  2. Select Google Drive API from the results.
  3. Click the blue ENABLE button.

Google requires this before it will let you create credentials, so it always appears on a new project.

  1. Go to APIs & Services → OAuth consent screen.
  2. Select External and click Create.
  3. Fill in the App Name, User Support Email, and Developer Contact Info.
  4. Click Save and Continue twice to skip the Scopes step.
  5. Test Users (this one matters): click + ADD USERS and enter your own Google email address. If you skip this, Google will block your sign-in later.
  6. Publish the app (this step matters): still on the OAuth consent screen (the Audience page in the newer console), set Publishing status to In production and confirm. If you leave the app in Testing, Google expires the connection about every 7 days and your scheduled backups quietly stop until you reconnect.

Step 4: Create your credentials (Client ID & Secret)

  1. Go to Credentials → + CREATE CREDENTIALS → OAuth client ID.
  2. For Application Type, choose Web application.
  3. For the Authorized Redirect URI, copy the Redirect URI shown in the plugin’s Settings tab and paste it here.
  4. Click Create, then save your Client ID and Client Secret. You’ll paste them into the plugin next.

Step 5: Connect the plugin

  1. In WordPress, go to Bodholdt Backup for Google Drive → Settings.
  2. Paste in your Client ID and Client Secret.
  3. Click Save Settings.
  4. Click Authorize Google Access.
  5. Grant permission on the Google consent screen.
  6. You’ll be redirected back to a confirmation: “Google Drive connected!”

Your Google credentials are encrypted at rest the moment they’re saved, so they’re never stored in plain text.

Backup settings & automation

The Setup Wizard

First-time users get a friendly step-by-step wizard that walks through connecting Google Drive, choosing a schedule, and running the first backup, so you don’t have to hunt through settings.

Automated schedule

Choose Hourly, Daily, or Weekly backups. Scheduling is timezone-aware, so a “Daily” backup runs at the right local time.

Note: scheduled backups rely on WP-Cron, which fires when someone visits your site. On low-traffic sites a scheduled backup may be slightly delayed until a visitor arrives, unless you have a server-side cron trigger.

Backup type: Complete or Fast

Pick how each run works:

  • Complete (full) backs up everything every time.
  • Fast (incremental) only backs up files that changed since your last full backup, which makes later backups much quicker and smaller. It uses manifest-based fingerprinting to spot what changed. Your database is always fully exported regardless of which mode you pick, and you can force a full backup any time.

What to back up (selective scope)

Turn each piece on or off:

  • Database is always included.
  • WordPress System Files
  • Themes
  • Plugins
  • Uploads

Your must-use plugins (wp-content/mu-plugins/) and the standard WordPress drop-ins (object-cache.php, advanced-cache.php, db.php, maintenance.php) travel with the Plugins selection, and your language files (wp-content/languages/) travel with Core. So if you switch Plugins off to save space, that backup does not contain your must-use plugins, and switching Core off leaves the language files out. The same rule decides what a selective restore brings back.

Custom exclusions

List any file or folder names you want skipped, one per line. The plugin already excludes some common ones for you by default: bodholdt-backups, bodholdt-gdrive-backups, .git, node_modules, .DS_Store, and __pycache__, plus anything ending in .pyc or .source.php. Cache directories and error logs are not excluded by default. If you want wp-content/cache or error_log left out, add them here yourself.

Retention policy (how many backups to keep)

This is how many backups are kept before the oldest is automatically deleted from your Google Drive. You can keep anywhere from 1 to 500. It is a number you set, not something you buy.

Any files you place in the backup folder yourself are never auto-deleted. The cleanup only ever removes backups the plugin made.

Notifications

You get a clean, professional HTML email report after each backup, and if a backup fails it includes an automatic diagnosis of what went wrong. There’s a Test email button so you can confirm delivery works. Email notifications are simply part of the plugin, with nothing to buy and nothing to switch on.

Slack and Discord. These are not part of this plugin. They live in the separate Bodholdt Backup Pro companion, which posts the same events to a webhook you own, with a toggle per event and the same auto-diagnosis hint the failure email carries. It also posts two this plugin never emails: a restore starting, and a database view that would stop the next backup. Nothing here depends on it.

Reset to Defaults

Restores all your preferences to factory settings while keeping your Google connection intact (your saved OAuth credentials are preserved).

Restore & migration

Migrating to a new site or a new Google Cloud project

Reuse the same OAuth Client ID and Client Secret. This plugin requests Google’s drive.file scope, which only ever grants access to files the plugin itself created. A new Google Cloud project is a different client, so it cannot see backups an earlier client uploaded: your Your Backups list will come up empty, at exactly the moment you are relying on it. Copy the existing Client ID and Client Secret into the new site before you authorize, and confirm your backups are listed before you decommission the old one.

Restore from the cloud

Open the Your Backups tab to browse every backup sitting in your Drive. From there you can download or restore any backup.

Selective restore (free on every install)

Restore Everything, or pick exactly which parts to bring back: Database, Plugins, Themes, Uploads, and WordPress System Files. Like everything else here, it is free.

A safety snapshot, automatically

Before every restore, the plugin saves a pre-restore safety copy of your current database. There is no one-click undo, so treat a restore as a change you cannot easily reverse.

Moving to a new server

A restore runs inside WordPress, so the destination needs a working WordPress install. This release does not ship a standalone installer that runs outside WordPress.

  1. Install WordPress on the new server or domain.
  2. Install and activate Bodholdt Backup for Google Drive there, and connect it to the same Google Drive account.
  3. Open the Your Backups tab. Your existing backups are listed there, because they live in your Drive rather than on the old server.
  4. Choose the backup you want and click Restore.

Two things to set up first. The new site must use the same database table prefix as the backup. And run the same plugin version on both sites.

The Dashboard & backup health

The Dashboard is your home base: it shows a health summary, your last backup’s status, a size estimate before you run, and a big button to start a backup. It also tracks a running total of how many backups you’ve protected and how much data you’ve kept safe. Backups run in the background. Your visitors won’t notice, and your site stays online the whole time.

Troubleshooting & audit logs

The audit log

Every event is recorded in a filterable, sortable, paginated log with an automatic diagnosis attached. You can view successes or failures, along with each run’s duration, file size, and the Google Drive path it used.

Force Unlock

If a backup ever gets stuck, you can release the lock from the Dashboard once it’s been inactive for 15 minutes, using Force Unlock.

Security & encryption

Your OAuth credentials are encrypted at rest using Sodium secretbox or, as a fallback, HMAC-authenticated AES-256-CBC. Every form is CSRF-protected, and every background (AJAX) action verifies your permissions first.

Multisite support

The plugin adds a Network Admin menu and checks the manage_network_options capability throughout. By default one backup covers the whole network; per-site mode is available in Settings.

Common errors and how to fix them

  • “Could not create folder: [folder name]” The Google Drive API isn’t enabled. Enable it in the Cloud Console (Step 2 above).
  • “Access Blocked” / 403. Your email isn’t in the Test Users list. Add it under the OAuth Consent Screen → Test Users.
  • Google sign-in expired. The plugin’s Help tab lists this as Token expired: go to Settings and click Authorize Google Access to reconnect.
  • The connection stops about a week after setup. Your Google Cloud app is most likely still on Publishing status: Testing, which expires the connection after 7 days. Set it to In production (Step 3 above), then reconnect.
  • An upload times out. Usually an unstable connection. The auto-retry handles most cases; if it persists, check your server connection.
  • “A backup is already in progress. If this persists for more than 15 minutes, try refreshing the page.” A stale lock. Wait 15 minutes or click Force Unlock.
  • Backups seem delayed. Scheduled backups run via WP-Cron, which fires when someone visits your site. On very low-traffic sites, add a real server-side cron trigger.
  • “Google Drive storage may be full.” Free up space in your Drive or expand your storage.
  • ZipArchive / disk error. Low server disk space. Free up disk space or exclude large directories.
  • A backup or restore stops, and the plugin says “No secure backup staging directory is available”. This means the temporary staging folder isn’t writable. The plugin falls back automatically, so this is rare: it uses the prepared directory under /var/lib/, then a private directory in your system temp folder. Both sit outside your web document root. If you need to pin a specific folder, add this to your wp-config.php (above the “That’s all, stop editing!” line), using an absolute path outside your web root (a path inside ABSPATH or wp-content/uploads is rejected by the plugin’s security check): define( 'BODHOLDT_GDRIVE_DIR', '/var/lib/bodholdt-staging/gdrive/' ); Defining this constant turns the automatic fallback off. From then on it is the only staging path the plugin will use, so if it is missing or not writable by the user your web server runs as, backups and restores stop rather than falling back. Create the directory first, and make sure its parent exists and is writable by that same user.

What you get, and what it costs

There is one edition and it is free. There is no license key, no tier, no trial, and no activation limit, because the plugin contains no license client to enforce one.

  • Full and incremental backups, scheduled or manual, to a Google Drive account you own.
  • Full restore, and selective restore so you can bring back only the database, plugins, themes, uploads, or core files.
  • Cloud browser, activity log, multisite network backup, and up to 500 backups kept.
  • An email report after every backup attempt, success or failure, with a plain-language diagnosis when something goes wrong.
  • Updates in your WordPress dashboard, with no key to enter.
  • Install it on as many sites as you like.

The paid Complete plan that used to sit alongside this is retired as of 2026-09-01. Every backup and restore feature it had is in the list above, and so are the dashboard updates it was once the only way to get. Its Slack and Discord delivery now lives in the separate Bodholdt Backup Pro companion. If you hold an older paid backup license, your backups and restores carry on, but that paid build no longer receives updates. To keep getting them, install the free edition from its product page. Your existing archives stay where they are.

Getting the same news in Slack or Discord

The email report above is part of this plugin and always has been. If you would rather have those events arrive in a chat channel, or you want a scheduled summary of how a site is doing rather than one message per run, that is a separate paid companion plugin, Bodholdt Backup Pro. It posts five backup events to your own Slack or Discord webhook, each with its own toggle, and sends a per-site backup-health digest weekly or daily. One license covers both the Google Drive and the OneDrive plugin.

It takes no backups of its own and it is not required for anything. Install it, or don’t; this plugin behaves identically either way.

Highlights

The plugin celebrates a finished backup or restore, respects your system’s “reduce motion” setting, labels its controls for screen readers, keeps a running “backups protected” stat on the health card, and walks you through the first run. For what changed in any particular release, see the changelog.

The 6.0 line also rebuilt the database backup engine so backups are reliably restorable, both through the plugin’s restore and from a raw SQL dump. Highlights: triggers, stored procedures, functions, and events are now exported and restored; dumps use the standard mysqldump shape so they import cleanly from cPanel, phpMyAdmin, or the command line; very large databases restore without running out of memory (the file is streamed line-by-line); restores are faster thanks to batched multi-row INSERTs; and dumps are server-portable (DEFINER= clauses are stripped so they work across servers). Fixes include VIEWs no longer breaking a dump, foreign-key references no longer aborting a restore, BLOB/BINARY columns being hex-encoded, and per-statement restore errors now being reported instead of silently passing. Older pre-6.0 backups still restore cleanly through the plugin.

Frequently asked questions

Do I need a paid Google account?

No. Every Google account includes 15 GB of free Drive storage. Backups range from about 50 MB for a small blog up to a few GB for a large e-commerce site, and the Dashboard shows a size estimate before each backup.

Do I need a Bodholdt license key?

No, and there is no longer one to buy. The plugin is free in a single edition with no activation limit. Every backup and restore feature, selective restore included, is in it, updates arrive in your dashboard with no key, and it emails you after every backup attempt.

What is a Google Cloud project, and why do I need one?

To use the Google Drive API on your own behalf, Google requires a free Cloud project with your own credentials. This keeps your Drive access under your control. Bodholdt never sees your Google login. The plugin’s guide walks you through it, plan on about 15 minutes, once, and it’s free.

What is incremental (Fast) backup mode?

It only backs up files that changed since your last full backup, so later backups are much faster and smaller. The database is always fully exported regardless of mode, and you can force a full backup any time.

Will backups slow down my site?

No. Backups run in the background via WordPress cron, and your site stays online. Visitors won’t notice them.

What if a backup fails?

The plugin emails you with the error and a suggested fix, and the audit log shows every backup with diagnosis hints (for example, expired tokens → reconnect; quota exceeded → expand Drive storage). Each chunked upload retries up to 3 times before reporting failure.

Can I restore to a different server?

Yes, with a working WordPress installation on the destination. Install WordPress on the new server, install and connect this plugin to the same Google Drive account, then restore the backup from the Your Backups tab. The new site needs the same database table prefix as the backup. This release does not ship a standalone installer that runs outside WordPress.

I have an older paid backup license. What happens to it?

Your backups, scheduled runs and restores all carry on. Two things in the old answer here were not true, and we would rather correct them than leave them up. First, the paid update channel was stood down when the paid editions were retired, so a paid build no longer receives updates through it. To keep getting updates, install the free edition from the product page: it is the same backup engine, it updates normally, and your existing archives stay exactly where they are. Second, if a paid license lapses, its Slack and Discord messages stop. That chat delivery now lives in Bodholdt Backup Pro, a separate paid companion, rather than in the free edition. If you want Slack or Discord messages from Bodholdt Backup Pro, install the free edition first. Backup Pro stays quiet for a cloud while an older paid build is active on it.

Will the plugin delete files I put in the backup folder myself?

No. The cleanup only removes backups the plugin created. Files you drop into the backup folder yourself are left alone.

Does this work with WordPress Multisite?

Yes. There’s a Network Admin menu and manage_network_options capability checks throughout. By default a multisite backup is complete. One backup per network captures every blog plus the shared user/site tables, and a restore recreates the full multisite layout. Network admins can switch to per-site mode in Settings if they’d rather each subsite back up its own content only. One thing to check after switching: on the network’s primary site, a per-site backup stops before uploading if another plugin has created a table at the network’s base prefix that this plugin cannot place on one side of the boundary. Nothing is uploaded and nothing on your site is changed; the backup log explains why, and the bodholdt_gdrive_blog_local_tables filter is how you declare such a table. Subsites are not affected.

What’s actually inside a backup ZIP?

A database.sql dump, a bodholdt-manifest.json file the restore engine reads first (it describes the mode, blog layout, versions, and tables), and your selected portions of wp-content/themes/, wp-content/plugins/, and wp-content/uploads/. Must-use plugins and the standard drop-ins are in there when Plugins is selected. When Core is selected the zip also holds wp-admin/, wp-includes/, wp-content/languages/, the WordPress files at your site root, and .htaccess, which is the start-up file most sites rely on to boot. wp-config.php is never included. The backup zip is not encrypted, so keep your cloud folder private.

Is the plugin GPL?

Yes. The plugin source is GPL-2.0-or-later, all of it, and it is yours to run and modify.

Support

This plugin is free, and I support it the same way as everything else here: open a ticket on the Support page and I will answer, usually within a business day or two. Bug reports are always read.

The Night Watch (gamification)

Backups are quiet, thankless work, so The Night Watch gives them a heartbeat. It is a calm layer of play built for backups, not a noisy arcade.

  • The Unbroken Watch streak. Every clean scheduled backup extends your streak. Manual runs do not count, and a failed backup resets it, so the streak reflects real, hands-off protection.
  • The protection Shield. A live gauge shows how well protected your site is right now, based on your last successful backup and the stale-backup watchdog.
  • Levels and trophies for your first backup, long streaks, overnight runs, and the total amount of data you have protected.

The whole arcade is off by default, so the admin stays plain until you opt in, and it is free like the rest of the plugin. Turn it on any time from the Night Watch Arcade section of the plugin’s Settings. Sound effects are off by default, and animations respect your browser’s reduced-motion setting.

Everything the arcade tracks (your XP, level, streak, and trophies) is stored in your own WordPress database. Nothing is sent to us or to any third party.