Bodholdt Backup for Google Drive Docs
Everything you need to set up, configure, and get the most out of the plugin.
What Bodholdt Backup for Google Drive is
Bodholdt Backup for Google Drive makes a complete copy of your WordPress site — 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) with one click. 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 10 minutes)
Most of this time is a one-time setup with Google. After that, backups run themselves.
- 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.
- 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 — full details are in “Connecting to Google” below.
- Authorize access. Click Authorize Google Access, approve on Google’s screen, and you’ll land back on a “Google Drive Connected & Ready” message.
- Pick a schedule (Hourly, Daily, or Weekly) and choose what to back up.
- Run your first backup — click Start New Backup on the Dashboard. That’s it; your site is now protected.
No license key is required — the Free tier is a real, working backup. A license only unlocks higher limits and a few extra features (see “Plans & what each one adds”).
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.
- A valid Bodholdt license key if you want Pro features (it’s emailed to you after purchase). The Free tier needs no key.
- 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
- Log in to the Google Cloud Console.
- Click the project dropdown in the top-left header.
- Click New Project.
- For Project Name, enter Bodholdt Backup (or your website’s name).
- Click Create, then select the new project from the dropdown.
Step 2 — Turn on the Google Drive API
- Search for “Google Drive API” in the console search bar.
- Select Google Drive API from the results.
- Click the blue ENABLE button.
Step 3 — Set up the consent screen
Google requires this before it will let you create credentials, so it always appears on a new project.
- Go to APIs & Services → OAuth consent screen.
- Select External and click Create.
- Fill in the App Name, User Support Email, and Developer Contact Info.
- Click Save and Continue twice to skip the Scopes step.
- 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.
Step 4 — Create your credentials (Client ID & Secret)
- Go to Credentials → + CREATE CREDENTIALS → OAuth client ID.
- For Application Type, choose Web application.
- For the Authorized Redirect URI, copy the Redirect URI shown in the plugin’s Settings tab and paste it here.
- Click Create, then save your Client ID and Client Secret — you’ll paste them into the plugin next.
Step 5 — Connect the plugin
- In WordPress, go to Bodholdt Backup for Google Drive → Settings.
- Paste in your Client ID and Client Secret.
- Click Save Settings.
- Click Authorize Google Access.
- Grant permission on the Google consent screen.
- You’ll be redirected back to a confirmation: “Google Drive Connected & Ready.”
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. (Scheduling is available on every plan, including Free.)
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 — always included.
- WordPress System Files
- Themes
- Plugins
- Uploads
Your must-use plugins (wp-content/mu-plugins/), language files (wp-content/languages/), and the standard WordPress drop-ins (object-cache.php, advanced-cache.php, db.php, maintenance.php) are always captured when present, so a restore lands a truly complete site.
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: node_modules, .git, .DS_Store, wp-content/cache, and error_log.
Retention policy (how many backups to keep)
This is how many backups are kept before the oldest is automatically deleted from your Google Drive. Your maximum depends on your plan:
- Free keeps 10
- Solo keeps 50
- Pro keeps 100
- Agency is unlimited (up to the system maximum)
Any files you place in the backup folder yourself are never auto-deleted — the cleanup only ever removes backups the plugin made.
Migration Mode
Turn this on to bundle a standalone installer.php inside your backup ZIP. That installer is what lets you restore a backup onto a completely different server (see “Restore & migration”).
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 included on every plan.
Slack & Discord notifications (Pro and up). Paste a single webhook URL and the plugin auto-detects whether it’s Slack or Discord. You can toggle alerts per event — backup success, backup failure, restore initiated, and the watchdog stale-backup alert — and there’s a Send Test Notification button. Failure alerts include the same auto-diagnosis hint as the email report.
Reset to Defaults
Restores all your preferences to factory settings while keeping your Google connection intact (your saved OAuth credentials are preserved).
Restore & migration
One-click 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 with a single click.
Selective restore (Pro and up)
Restore Everything, or pick exactly which parts to bring back: Database, Plugins, Themes, Uploads, and WordPress System Files. On Free and Solo, restore always brings back everything (full restore only); the parts-picker unlocks on Pro and up.
A safety snapshot, automatically
Before every restore, the plugin takes a pre-restore safety snapshot of your current database. So even a restore has a safety net.
Moving to a new server (Migration Mode)
- Turn on Migration Mode in Settings.
- Run a backup — the ZIP now includes the standalone Universal Installer.
- On your new server, upload the backup ZIP and the
installer.php, then open the installer in your browser.
The installer handles the heavy lifting for you: Universal SQL Translation, automatic URL rewriting, wp-config.php generation, plus built-in CSRF protection, rate limiting, and a self-destruct mechanism so it can’t be left behind as a security hole.
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, your plan badge, 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. Each site in the network operates independently.
Common errors and how to fix them
- “Could not create folder.” The Google Drive API isn’t enabled — enable the Google Drive API in the Cloud Console.
- “Access Blocked” / 403. Your email isn’t in the Test Users list — add it under the OAuth Consent Screen → Test Users.
- “Token Expired.” Your OAuth token expired — disconnect and re-authorize in Settings.
- “Upload Failed (Timeout).” Usually an unstable connection. The auto-retry handles most cases; if it persists, check your server connection.
- “Backup already in progress.” A stale lock — wait 30 minutes or click Force Unlock.
- “Google Drive full.” No free storage left — delete old backups or upgrade your storage.
- ZipArchive / disk error. Low server disk space — free up disk space or exclude large directories.
- Backups (or restores) silently stop at “Fetching Download link.” This means the temporary staging folder isn’t writable. The plugin now falls back through several safe locations automatically, so this is rare — but if you need to pin a specific folder, add this to your
wp-config.php(above the “That’s all, stop editing!” line), using__DIR__(notWP_CONTENT_DIR):define( 'BODHOLDT_GDRIVE_DIR', __DIR__ . '/wp-content/uploads/bodholdt-staging-gdrive/' );
Plans & what each one adds
Enter your key on the License page to unlock a higher plan. The Free tier is a complete backup product on its own; paid plans raise your limits and add a couple of features.
- Free — full + incremental backups, scheduled or manual, one-click full restore, migration mode, cloud browser, logs, email notifications, multisite. Keeps up to 10 backups.
- Solo — everything in Free, with up to 50 kept backups.
- Pro — up to 100 kept backups, plus selective restore (choose what to bring back) and Slack/Discord notifications. Covers 5 sites on one license.
- Agency — unlimited retention (up to the system maximum), and includes selective restore and Slack/Discord notifications.
If a paid license lapses, your backups keep running. The plugin simply falls back to Free-tier limits (up to 10 kept, full-restore only) and shows a gentle reminder banner with a renew link. Nothing is ever deleted, and scheduled backups continue — backup software that stops backing up because a card expired is the worst possible outcome, so it doesn’t do that.
What’s new
The current release adds polish across the board — celebration moments when a backup or restore completes, accessibility improvements (animations respect “reduce motion,” proper screen-reader labels), a running “backups protected” stat on the health card, and friendlier first-run guidance.
The 6.0 line also rebuilt the database backup engine so backups are reliably restorable — both through the plugin’s one-click 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.
The exact version you have is shown at the top of this page.
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 WooCommerce site, and the Dashboard shows a size estimate before each backup.
Do I need a Bodholdt license key?
No. The Free tier works without a license and is a real backup product. A license key only unlocks Pro features (higher retention, selective restore, Slack/Discord notifications).
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 in about two minutes, 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. Turn on Migration Mode to include the standalone installer in your backup ZIP. Upload the ZIP and installer.php to the new server, open the installer in a browser, and it handles the database import, URL replacement, and wp-config.php setup.
What happens if my Pro subscription lapses?
Your backups keep running. The plugin soft-degrades to Free-tier limits — backups continue, scheduled runs continue, and restore continues — just at the Free cap (10 kept) with selective restore turned off. A dismissible banner reminds you to renew, and your existing backups stay intact.
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-blog mode in Settings if they’d rather each subsite back up independently.
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), your selected portions of wp-content/themes/, wp-content/plugins/, and wp-content/uploads/, and — if Migration Mode is on — the standalone installer.php.
Is the plugin GPL?
Yes. The plugin source is GPL-2.0-or-later. The Pro features are gated by a license key (a separate commercial agreement), but the code itself is freely modifiable.
Support & lifetime credits
Need a hand? Open a ticket on our Support page using the email you bought with. If you’re on an annual or monthly plan, support is included while your plan is active. If you bought a lifetime license, your purchase includes support credits that never expire — 15 for a single site, 50 for 5 sites, and 150 for 25 sites — applied automatically at checkout and added to any credits you already have. One credit covers one support request; pre-sales questions, feature requests, bug reports, and billing questions are always free. The documentation home has the full support policy.