UpdraftPlus Backup Failed or Stuck? How to Fix It
UpdraftPlus is the most-installed WordPress backup plugin for a reason — it's free, it schedules itself, and it pushes copies off-server to Google Drive, Dropbox, or S3. Right up until the day it doesn't. You open the Backup/Restore tab and see a red "Backup Failed" notice, a progress bar frozen at 40%, or a restore that just sits there. Here's what's actually going on under the hood, and how to get a clean backup (and a working restore) again.
Why UpdraftPlus Backups Break in the First Place
UpdraftPlus does three jobs in sequence: zip your files, dump your database, then upload both to remote storage. Any one of those steps can time out, run out of memory, or hit an authentication wall — and the plugin's error messages don't always point at the real cause. Most failures trace back to one of four things:
- WordPress's built-in cron (WP-Cron) never actually firing, so scheduled backups silently stop running
- PHP memory or execution-time limits cutting the process off mid-zip or mid-dump
- An expired or revoked token on the remote storage side (Google Drive OAuth is the usual suspect)
- Leftover files or a half-written database from a previous failed run confusing the next attempt
Backup Stuck at "Scheduled" or Never Starts
Symptom: The backup shows as scheduled in UpdraftPlus's log, but the time comes and goes with nothing happening. Manually clicking "Backup Now" works fine, though.
Cause: WP-Cron only fires when someone visits your site — it's not a real system cron job, it's a request-triggered fake. On a low-traffic site (or one sitting behind aggressive full-page caching that serves cached pages without ever loading PHP), nothing ever triggers it.
Fix: Disable WP-Cron's request-based trigger and replace it with a real cron job in cPanel:
- Add this to
wp-config.phpabove the "That's all, stop editing!" line:define('DISABLE_WP_CRON', true); - In cPanel, go to Cron Jobs and add a job that runs every 15 minutes:
*/15 * * * * wget -q -O /dev/null "https://yourdomain.com/wp-cron.php?doing_wp_cron" >/dev/null 2>&1
If WP-CLI is available on your plan, this is more reliable than curling the URL because it doesn't depend on your site's public HTTP response:
*/15 * * * * php /home/username/public_html/wp-cli.phar --path=/home/username/public_html cron event run --due-now >/dev/null 2>&1
"Backup Failed" With No Useful Detail
Symptom: A generic failure notice, sometimes with "PHP fatal error" buried in the debug log.
Cause: Almost always memory_limit or max_execution_time running out while zipping a large wp-content/uploads folder or dumping a big database in one pass.
Fix:
- In cPanel's MultiPHP INI Editor, raise
memory_limitto at least 256M andmax_execution_timeto 300 for the domain. - In UpdraftPlus, go to Settings → Expert settings and lower the "Split backups into archives of no more than" size (250MB is a safe default on shared resources) — smaller chunks finish inside the time limit instead of one giant zip that never completes.
- Turn on "Debug mode" for one run under Settings, then check the raw log UpdraftPlus links to — it names the exact file or table it choked on.
Remote Storage Won't Connect (Google Drive, Dropbox, S3)
This is the single most common support ticket for UpdraftPlus, and it's almost never the plugin's fault.
| Error you see | Real cause | Fix |
|---|---|---|
| "Not authenticated" / re-auth loop with Google Drive | OAuth token expired or Google revoked API access after inactivity | Settings → Google Drive → click "Sign Out," clear the field, then Save and re-authenticate from scratch |
| Upload hangs at a fixed percentage | Outbound HTTPS blocked or curl/openssl PHP extension missing | Confirm curl and openssl are enabled in MultiPHP; ask support to confirm outbound 443 isn't firewalled on the VPS |
| "Access Denied" on S3-compatible storage | Bucket policy or IAM user missing PutObject/ListBucket permission | Re-check the bucket policy grants the exact key both read and write, not just read |
| Dropbox shows connected but nothing uploads | App folder permission scope was set to "app folder" after the token was issued for full Dropbox access | Disconnect, delete the old UpdraftPlus app-folder link in Dropbox's connected-apps settings, reconnect |
Restore Hangs or Fails Partway Through
Symptom: You upload a backup set and click Restore. It gets through the database import, then stalls or throws a white screen on the plugins/themes step.
Cause: Usually one of two things — the restore process itself hits the same PHP timeout that broke the backup, or file permissions on wp-content block UpdraftPlus from writing the restored plugin/theme files.
Fix:
- Check
wp-contentand its subfolders are owned by your cPanel user with 755 on directories and 644 on files — a previous migration or a security plugin sometimes locks these down tighter than UpdraftPlus can work with. - Deactivate all other plugins before restoring (rename the
pluginsfolder via File Manager if you can't reach wp-admin) — a conflicting security or caching plugin intercepting requests mid-restore is a common cause of silent stalls. - If it still won't finish, fall back to a manual restore: import the SQL file directly through phpMyAdmin, and unzip the files archive into
public_htmlthrough File Manager. UpdraftPlus's backup sets are just a standard SQL dump plus a zip, so nothing about them requires the plugin's UI to restore.
Site Shows "There Has Been a Critical Error" After a Restore
This almost always means the restored database still references a plugin or theme that isn't in the restored files (or vice versa) — usually because the backup and the current site drifted out of sync, or you restored an old backup onto a site that's since changed PHP version. Turn on WP_DEBUG temporarily to see the actual fatal error, and check the PHP version in MultiPHP Manager matches what the backup's plugins expect (a site backed up under PHP 7.4 and restored onto PHP 8.3 will often crash on an outdated plugin).
Backups Are Running but Silently Incomplete
Don't assume a green "Backup complete" notice means everything's actually recoverable. Check two things periodically:
- Retention settings eating old backups too fast: under Settings, "Retain this many scheduled backups" — if it's set to 2 and your remote storage quota fills up mid-run, you can end up with zero complete sets.
- Remote storage quota: a full Google Drive or Dropbox account will let the local zip finish but silently fail the upload step — the backup log shows this, the dashboard notice often doesn't.
Prevention: Make Backups You Can Actually Trust
- Use a real cron job (as above), not WP-Cron's request-based trigger, for anything you depend on.
- Test a full restore on a staging copy at least once a quarter — a backup you've never restored is a guess, not a backup.
- Keep at least two remote storage destinations if the site matters — Google Drive quotas and OAuth revocations happen without warning.
- Pair plugin-level backups with your host's server-side backups (cPanel's own Backup Wizard or JetBackup, if enabled) so a WordPress-level failure isn't your only safety net.
If none of this gets a clean backup running, that's usually a sign of a server-side resource limit rather than a plugin bug — Getwebup support can check PHP limits, outbound connectivity, and disk I/O on your plan directly.
Frequently asked questions
Why does UpdraftPlus say "Backup Failed" with no error message?
It's almost always a PHP memory_limit or max_execution_time cutoff hit while zipping files or dumping the database. Turn on Debug mode under Settings for one run and check the linked log — it names the exact file or table that failed.
My scheduled backups stopped running but manual backups work fine. Why?
WordPress's default cron (WP-Cron) only fires when a visitor loads a page. Low-traffic sites or sites behind full-page caching can go days without triggering it. Set DISABLE_WP_CRON in wp-config.php and add a real cron job in cPanel instead.
Can I restore an UpdraftPlus backup without using the plugin at all?
Yes. An UpdraftPlus backup set is just a standard SQL dump plus a zip of your files. You can import the SQL through phpMyAdmin and unzip the files into public_html through File Manager if the plugin's restore process won't finish.
Why does Google Drive keep disconnecting from UpdraftPlus?
Google periodically revokes OAuth tokens after long inactivity or a permissions change on your Google account. Sign out of the connection in UpdraftPlus's settings, clear the field, save, and re-authenticate from scratch rather than trying to reconnect the old token.
Is it safe to restore a backup taken on an older PHP version?
Usually, but check MultiPHP Manager first. If the backup's plugins were built for PHP 7.4 and your site now runs PHP 8.3, an outdated plugin can throw a fatal error right after restore — update or replace it before going live again.