Plugins Documentation How It Works About Support My Account Browse Plugins

Bodholdt Backup for OneDrive Docs

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

Full Guide
v5.25.0

What Bodholdt Backup for OneDrive is

Bodholdt Backup for OneDrive makes a complete copy of your WordPress site — both your database and your files — and stores it safely in your own Microsoft OneDrive account. You stay in control of where your backups live; there’s no third-party storage service in the middle. It can run on a schedule or on demand, only re-uploads the files that actually changed, and brings everything back with one click if something goes wrong. When you need to move your site to a new host or domain, it can build a self-contained installer that rebuilds the site anywhere — even on servers where most restores would choke.

Quick start (about 10 minutes)

  1. Install & activate the plugin (Plugins → Add New → Upload Plugin, choose the bodholdt-backup.zip file, Install Now, Activate).
  2. Enter your license key under Bodholdt Backup → License (skip this to run on the free tier — the Free tier is a real, full backup product).
  3. Connect OneDrive. Create a free Microsoft app registration (about 5 minutes — we walk you through it below), paste the Client ID and Client Secret into Settings, and click Authorize OneDrive Access.
  4. Pick a schedule (Daily, Weekly, Hourly, or Manual only) and a notification email.
  5. Run your first backup — click Start Backup Now (also shown as Initiate Instant Backup) on the Dashboard and watch the progress bar.

A first-run setup wizard walks you through these same steps in one flow: Welcome → Connect OneDrive → Schedule → Run Your First Backup.

Installation & license

Step 1: Install the plugin

  1. Log in to your WordPress Dashboard.
  2. Go to Plugins → Add New.
  3. Click Upload Plugin and select the bodholdt-backup.zip file.
  4. Click Install Now, then Activate.

After activating, a handy “Set up” / “Backups” link appears next to the plugin in your Plugins list for one-click access to the dashboard.

Step 2: Activate your license

The Free tier works without a license key. A key only unlocks the higher tiers’ extras (higher retention caps, selective restore, Slack/Discord alerts).

  1. Go to Bodholdt Backup in your admin sidebar.
  2. If the dashboard is locked, click the link to the License tab (or go to Bodholdt Backup → License).
  3. Enter your License Key and click Save & Activate.
  4. Once the status turns green (ACTIVE), the full dashboard unlocks.

On a multisite network, activate the license once and every subsite recognizes it automatically.

Your plans & what each unlocks

Your tier decides how many backups you can keep and which premium features are on:

  • Free — the complete backup engine: full + incremental backups, scheduled or manual runs, one-click full restore, migration installer, logs, email notifications, and the cloud browser. Keeps up to 10 backups.
  • Solo — everything in Free, plus up to 50 retained backups (5× the Free cap). Lifetime license available; email support while active.
  • Pro — up to 100 retained backups, selective restore (choose exactly what comes back), Slack & Discord notifications, and use on up to 5 sites on one license.
  • Agencyunlimited retained backups (up to the system maximum of 500), plus selective restore and Slack/Discord notifications.
  • Bundle — Pro features on both Bodholdt Backup for OneDrive and Bodholdt Backup for Google Drive, two separate license keys, one purchase.

If a paid license lapses, your backups keep running. The plugin simply soft-degrades to Free-tier limits — backups continue, scheduled runs continue, restore continues — just at the Free cap of 10 retained backups and with selective restore turned off. A dismissible banner reminds you to renew, and none of your existing backups are ever deleted.

Connecting to OneDrive

Backups are stored in your own personal or business Microsoft OneDrive. To let the plugin talk to OneDrive securely, you create a free Microsoft “app registration” once. You don’t need a paid Microsoft 365 subscription — any Microsoft account comes with 5 GB of free OneDrive storage (upgrade your OneDrive, or use Microsoft 365’s included 1 TB, for larger sites).

Step 1: Create your Microsoft app credentials

The plugin’s Settings tab has a built-in “How do I get these?” guide. Here are the same steps:

  1. Open the Microsoft Developer Portal at https://portal.azure.com/ and sign in with your regular Microsoft account.
  2. Click New registration. Give it a name you’ll recognize (e.g., “My Site Backup”). Under Supported account types, choose “Accounts in any organizational directory and personal Microsoft accounts”. Click Register.
  3. Set the Redirect URI. Go to Authentication → Add a platform → Web, paste the exact Redirect URI shown in the blue information box on the plugin’s Settings tab, then click Configure.
  4. Create a Client Secret. Go to Certificates & secrets → New client secret, add a description (e.g., “Backup”), pick an expiry, and click Add. Copy the Value immediately — you won’t be able to see it again. (Copy the Value, not the Secret ID.)
  5. Set API permissions. Go to API permissions → Add a permission → Microsoft Graph → Delegated permissions, then add Files.ReadWrite.All and offline_access. Click Grant admin consent if it’s available.
  6. Go back to your app’s Overview page and copy the Application (client) ID.

Step 2: Save your credentials

  1. On the Bodholdt Backup Dashboard (or Settings tab), find the OneDrive Connection card.
  2. Enter your Client ID and Client Secret (from the steps above).
  3. Make sure your Microsoft app has the Redirect URI listed in the blue information box.
  4. Click Save Settings (in the wizard this button is Save & Connect OneDrive).

Step 3: Authorize the connection

  1. After saving, an Authorize OneDrive Access button appears.
  2. Click it to sign in with your Microsoft account.
  3. Grant the requested permissions (Microsoft opens a confirmation page; click Accept).
  4. You’re redirected back to the dashboard with a success message: ✅ OneDrive Connected & Ready.

Your backups land in Your OneDrive → Apps → Bodholdt Backup → [Site Name] (the full path is /Apps/Bodholdt Backup/[Site Name]/).

Settings & backups

Backup schedule & precision timing

  • Frequency — choose Manual Only, Hourly, Daily, or Weekly.
  • Start Time — unlike plugins that run relative to when you hit “Save,” you can set a specific start time (e.g., 03:00 AM) so backups run during your real off-peak hours.
  • Timezone — the schedule automatically syncs with your WordPress Timezone setting.

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

What to back up & backup mode

You can choose which parts of your site are included (database, plugins, themes, uploads). Backups can run as Full or Incremental: incremental backups keep a manifest of your files and only upload the ones that have changed since last time, so they’re fast and lightweight. The database is always exported in full (databases don’t merge incrementally), and you can force a full backup from the Dashboard at any time. Common developer junk (e.g. __pycache__/, *.pyc) is excluded by default, and you can add your own file-exclusion patterns.

Retention policy (smart lifecycle)

  • Max Backups to Keep — enter a number (e.g., 10) to set your retention limit. Your maximum depends on your plan: Free keeps 10, Solo 50, Pro 100, and Agency is unlimited (up to the system maximum of 500).
  • Auto-pruning — after every upload, the plugin scans your OneDrive folder and, if the number of backups exceeds your limit, automatically deletes the oldest ones to free up space.

If you save a number higher than your current plan allows (for example after a downgrade), an inline notice tells you and the cap is applied automatically.

Notifications

  • Notification Email — the address that receives success/failure alerts and Migration Keys. Failure emails include an auto-diagnosis hint (token / quota / disk / network).
  • Slack & Discord (Pro and up) — paste your webhook URL in Settings (the provider is auto-detected) to also send alerts there. Per-event toggles cover backup success, backup failure, restore initiated, and the watchdog stale-backup alert, and there’s a Send Test Notification button.

Split size (MB)

For large sites, the zipper splits archives into chunks of this size to prevent memory errors. Default: 200MB. Each chunk upload retries up to 3 times before reporting a failure.

Migration mode

  • OFF — standard backup (database + files).
  • ON — migration backup. This adds a special installer.php file inside the zip so you can move the site to a completely new server or domain (see the Restoration guide below).

Running a manual backup

  1. Scroll to the Manual Operation card.
  2. Click Initiate Instant Backup.
  3. The progress bar tracks the job in real time as it:
    • Exports the database.
    • Compresses your files.
    • Uploads the archive to OneDrive (folder: /Apps/Bodholdt Backup/[Site Name]/).
    • Enforces retention — checks and deletes old backups if the limit is exceeded.

If you refresh the admin tab while a backup is mid-run, the progress bar re-attaches and picks up where it was.

The cloud browser & logs

The Cloud Backups tab (the cloud browser) lists every backup in your OneDrive — date, size, and restore/delete actions — right inside WordPress, so you can view, download, restore, or remove any backup without leaving the dashboard. The Logs tab shows your paginated backup history with status pills (success / error / running) and per-row troubleshooting hints. The Dashboard also keeps a running tally of how many backups you’ve made and the total size kept safe.

Restoring & migrating

There are two ways to bring a backup back. Either way, your OneDrive credentials and tokens are always encrypted at rest (Sodium preferred, AES-256-CBC with HMAC fallback).

Restore in place (same site)

  1. Open the Cloud Backups tab.
  2. Choose a backup and click Restore.
  3. The plugin takes a safety snapshot first, then rolls your site back.

Selective restore (Pro and up) lets you choose exactly what comes back — database, plugins, themes, uploads, or core. On Free and Solo, restore brings back everything (an inline upgrade hint to Pro appears next to the locked scope chooser). Your must-use plugins (mu-plugins), languages, and the standard WordPress drop-ins (object-cache.php, advanced-cache.php, db.php, maintenance.php) are always backed up and restored too.

Moving to a new server or domain (the migration installer)

To move to a different server or domain, use the standalone migration installer. The plugin includes a production-grade Installer capable of restoring sites even in hostile environments — it handles database conflicts (MariaDB vs MySQL), strict-mode errors, and broken plugins automatically.

Prerequisites

  • The backup file — download your latest backup .zip from your OneDrive folder.
  • The Migration Key — if you ran the backup in “Migration Mode,” check your email for the Migration Key (e.g., Bodholdt_a1b2c3d4).
  • A destination — an empty folder on your web server and a fresh, empty MySQL database.

Step 1: Upload the files

  1. Upload the backup .zip to your server’s public web folder (e.g., public_html).
  2. Unzip the archive.
  3. You should see your WordPress folders (wp-content, wp-admin, etc.) and two special files: database.sql and installer.php.

Step 2: Run the installer

  1. In your browser, go to: http://your-new-domain.com/installer.php?key=YOUR_MIGRATION_KEY
  2. Replace YOUR_MIGRATION_KEY with the key from your email.
  3. If the key is correct, you’ll see the Bodholdt Migration Wizard.

Step 3: Database connection

  1. Click Start Migration.
  2. Enter your new database credentials:
    • Database Host (usually localhost)
    • Database Name
    • Database User
    • Database Password
    • New Site URL (pre-filled with your current domain)
  3. Click Run Installation.

What happens next (the “Universal Translator”)

The installer performs a “Bulldozer Mode” import:

  • Safe Mode — runs without loading plugins, so a broken plugin can’t crash the restore.
  • Universal Translation — automatically fixes incompatibilities between database versions (e.g., converting MariaDB “Zero Dates” to valid MySQL dates, and translating newer MariaDB collations to portable equivalents).
  • Structure Fixes — forces table creation regardless of foreign-key constraints.

Step 4: Success & cleanup

  1. When the import finishes you’ll see a green Migration Complete! screen.
  2. Click Clean Up & Log In.
  3. Important: this button automatically deletes installer.php and database.sql from your server. Never leave these files on a live server.
  4. You’ll be sent to the WordPress Login page — log in with your original site credentials.

Post-restore steps

After logging in, do these final checks.

  1. Go to Settings → Permalinks.
  2. Click Save Changes (you don’t need to change anything). This rebuilds your .htaccess file and fixes 404 errors.

2. For Multisite networks only

If you restored a Multisite Network, the installer first sets it up as a Single Site so you can log in. You must then re-enable the network manually:

  1. Connect to your server via FTP or File Manager.
  2. Edit wp-config.php.
  3. Paste your Multisite configuration constants just above the line that says “That’s all, stop editing”. Example:
    define( 'WP_ALLOW_MULTISITE', true );
    define( 'MULTISITE', true );
    define( 'SUBDOMAIN_INSTALL', true ); // Set to false if using subdirectories
    define( 'DOMAIN_CURRENT_SITE', 'your-new-domain.com' );
    define( 'PATH_CURRENT_SITE', '/' );
    define( 'SITE_ID_CURRENT_SITE', 1 );
    define( 'BLOG_ID_CURRENT_SITE', 1 );
  4. Save the file and refresh your dashboard.
  5. Go to My Sites → Network Admin → Sites and make sure every sub-site URL matches the new domain.

Backups & Multisite

On a multisite network the plugin backs up the entire network by default — one backup captures every blog plus the shared user, sitemeta, and blogs tables, and restoring recreates the full multisite layout. Network admins who want per-customer isolation can switch to per-blog mode in Settings, where each subsite backs up its own content only (per-blog backups are content-only, so a full network restore isn’t possible from them). The license and retention settings are network-wide, so you configure them once.

What’s in a backup

Every backup zip contains:

  • database.sql — the SQL dump (single-site, per-blog, or network depending on your mode).
  • bodholdt-manifest.json — describes the mode, blog layout, plugin/WP versions, and tables dumped; the restore engine reads it first.
  • Your selected portions of wp-content/themes/, wp-content/plugins/, and wp-content/uploads/, plus mu-plugins/, languages/, and standard drop-ins.
  • installer.php — included only when Migration Mode is on.

Security & privacy

  • OneDrive credentials and OAuth tokens are encrypted at rest (Sodium preferred, AES-256-CBC with HMAC fallback).
  • The Free version never phones home unless you enter a license key — no telemetry, no analytics, and no outbound calls except to OneDrive itself.
  • All admin forms are protected by nonces and capability checks, backups are assembled in a staging directory outside your web root, and concurrent runs are blocked by atomic locks.

Troubleshooting

  • “Access Denied” on the installer. Make sure you’re using the correct ?key= in the URL. Check the email notification sent during the backup for the exact key.
  • “OneDrive Token Missing” error. On the plugin dashboard click Disconnect, then re-authorize the connection. Tokens can expire if the site is inactive for long periods.
  • White screen / fatal error after a restore. The installer uses “Safe Mode” to bypass plugins during restore. If a plugin crashes after you log in, rename that plugin’s folder via FTP (e.g. wp-content/plugins/jet-engine_jet-engine) to disable it, then log in and reactivate it.
  • A backup or restore stalls at “Fetching Download link.” This usually means the staging directory isn’t writable. The plugin automatically falls back through a system temp directory and then a hardened folder inside wp-content/uploads/, so most hosts work out of the box. To pin a specific location, add define( 'BODHOLDT_OD_DIR', __DIR__ . '/wp-content/uploads/bodholdt-staging-onedrive/' ); to your wp-config.php (use __DIR__, not WP_CONTENT_DIR). On nginx, also add a deny all; rule for /wp-content/uploads/.bodholdt-staging.
  • A backup failed. The plugin emails you the error with a suggested fix, and the Logs tab shows every backup with diagnosis hints.
  • 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.

Frequently asked questions

Do I need a paid Microsoft 365 subscription?

No. Every Microsoft account includes 5 GB of free OneDrive storage. For larger sites you can upgrade your OneDrive storage or use a Microsoft 365 subscription (which includes 1 TB).

Do I need a license key to use the Free tier?

No. The Free tier is a full backup product on its own — full + incremental backups, scheduling, one-click restore, and the migration installer. A key only unlocks higher retention caps, selective restore, and Slack/Discord alerts.

Will backups slow down my site?

No. Backups run in the background via WordPress cron; visitors don’t notice them.

How does incremental backup work?

The plugin keeps a manifest of your files and their timestamps and only uploads files that changed since the last run. The database is always exported in full, and you can force a full backup anytime from the Dashboard.

Can I restore to a different server?

Yes. Turn on Migration Mode so your backup includes a standalone installer. Extract it on the new server, run the installer, and it handles the database import, URL replacement, and wp-config.php setup.

What happens if my Pro subscription lapses?

Nothing is deleted. The plugin soft-degrades to Free-tier limits — backups, scheduled runs, and restores all keep working, just at the Free cap of 10 retained backups and with selective restore disabled. Renew anytime to restore your plan.

Is my data encrypted?

Your OneDrive credentials and OAuth tokens are encrypted at rest (Sodium preferred, AES-256-CBC with HMAC fallback). The backup files themselves are standard ZIP archives; if you want zip-level encryption, encrypt them yourself before they’re placed in wp-content.

Does this work with WordPress Multisite?

Yes. By default one backup captures the entire network (every blog plus shared tables), and restoring recreates the full layout. Network admins can switch to per-blog mode for per-customer isolation. The license is network-wide — activate once and every subsite recognizes it.

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.