BackupEase is built to be extended. Add-ons, including BackupEase Pro itself, register new storage providers, inject admin UI, and react to backup events entirely through standard WordPress action and filter hooks, without modifying the plugin’s source. This reference lists the hooks BackupEase fires and shows how to use them.

Who this is for

This is a developer reference. Everything here uses the normal WordPress add_action() and add_filter() functions, and these are the same public hooks BackupEase Pro is built on, so anything Pro does, your own add-on can do too.

How extension works

BackupEase exposes two kinds of hooks:

  • Actions (do_action) let you run code at a point in the lifecycle, or output markup into the admin UI.
  • Filters (apply_filters) let you change a value: register a provider, relabel a destination, veto a backup, swap the archive builder, and so on.

A typical add-on hangs its logic off plugins_loaded and checks that BackupEase is present first:

add_action( 'plugins_loaded', function () {
    if ( ! defined( 'BACKUPEASE_VERSION' ) ) {
        return; // BackupEase is not active.
    }
    // Register your hooks here.
}, 20 );

Backup lifecycle

React to backups as they run, or block them from starting.

HookTypeSignature & purpose
backupease_after_backup_complete Action ( int $backup_id, array $state )
Fires when a backup finishes successfully.
backupease_backup_failed Action ( string $error_message, array $state )
Fires when a backup fails.
backupease_can_start_backup Filter ( bool $can ) default true
Return false to veto a new backup (Pro uses this to block backups during a migration).
add_action( 'backupease_after_backup_complete', function ( $backup_id, $state ) {
    error_log( "BackupEase finished backup #{$backup_id}" );
}, 10, 2 );

Storage providers

The storage system is fully pluggable. These hooks are how Pro adds FTP, SFTP, OneDrive, Dropbox, and S3, and how you would add your own destination.

HookTypeSignature & purpose
backupease_valid_storage_providers Filter ( array $slugs ) default ['local','googledrive']
Register your provider’s slug.
backupease_storage_labels Filter ( array $labels )
Map of slug => display label.
backupease_provider_icons Filter ( array $icons )
Map of slug => inline <svg> markup.
backupease_parse_storage_destinations Filter ( array $destinations, array $post )
Add your slug when its checkbox is selected in a backup request.
backupease_upload_to_destination Filter ( mixed $result, string $destination, array $state )
Perform the upload for your provider and return the result.
backupease_retry_upload_to_destination Filter ( mixed $result, string $provider, int $backup_id, string $db_file, string $zip_file )
Handle a manual re-upload of an existing backup.
backupease_delete_from_provider Filter ( mixed $result, int $post_id, string $provider )
Delete a backup from your provider. Return WP_Error('not_found', ...) if already absent.
backupease_handle_test_storage Filter ( bool $handled, string $provider )
Handle the “Test connection” button for your provider.
backupease_active_storage_destinations Filter ( array $destinations, array $settings )
Add your provider to the dashboard’s Storage overview card.
backupease_available_remote_providers Filter ( array $providers )
Remote providers offered for on-demand “Upload to” actions.
// Register a custom "myhost" storage provider.
add_filter( 'backupease_valid_storage_providers', function ( $slugs ) {
    $slugs[] = 'myhost';
    return $slugs;
} );

add_filter( 'backupease_storage_labels', function ( $labels ) {
    $labels['myhost'] = 'My Host';
    return $labels;
} );

add_filter( 'backupease_upload_to_destination', function ( $result, $destination, $state ) {
    if ( 'myhost' !== $destination ) {
        return $result; // Not ours, leave it untouched.
    }
    // ... upload $state['zip_file'] / $state['db_file'] to your service ...
    return true; // true on success, or a WP_Error on failure.
}, 10, 3 );

Admin UI

Inject tabs, storage cards, credential sections, and settings into the BackupEase dashboard. These action hooks simply echo markup where they fire.

HookTypeWhere it renders
backupease_tabs_navActionTab bar, between Backup Log and License.
backupease_tabs_contentActionTab-panel area, for a custom tab’s body.
backupease_settings_storage_destinationsAction( array $settings ) Storage-destination cards in Settings.
backupease_manual_backup_storage_destinationsAction( array $settings ) Storage cards on the Manual Backup tab.
backupease_settings_storage_sectionsAction( array $settings ) Provider credential cards in Settings › Storage.
backupease_settings_sectionsAction( array $settings ) Extends the Compression settings panel.
backupease_after_settings_formAction( array $settings ) After the main settings form.
backupease_license_tab_contentActionLicense tab body (used by Pro for activation UI).
// Add a custom tab to the BackupEase dashboard.
add_action( 'backupease_tabs_nav', function () {
    echo '<a href="#myaddon" class="backupease-tab-link tab-item" data-tab="myaddon">My Add-on</a>';
} );

add_action( 'backupease_tabs_content', function () {
    echo '<div id="myaddon" class="backupease-tab-content">…</div>';
} );

Scheduling

HookTypeSignature & purpose
backupease_max_schedules Filter ( int $max ) default 1
Cap on the number of schedules. Ignored while Pro is active (Pro lifts it).
backupease_valid_schedule_frequencies Filter ( array $freqs ) default ['daily','weekly','monthly']
Frequency slug => label. Pro adds hourly and multi-hour options.
backupease_allowed_storage_destinations Filter ( array $slugs )
Destinations selectable in the schedule form.

Compression & other filters

HookTypeSignature & purpose
backupease_make_archive_builder Filter ( object $builder, array $settings )
Return a different archive builder (Pro swaps in the Zstandard builder here).
backupease_settings_saved Action ( array $validated_settings )
Fires after settings are sanitized and saved.
backupease_pro_upsell_url Filter ( string $url )
Override the upgrade CTA URL shown in the free plugin.

WP-CLI

BackupEase also ships a WP-CLI command for scripting backups outside the admin UI:

wp backupease run                       # full backup with saved settings
wp backupease run --database-only
wp backupease run --files-only
wp backupease run --schedule=<id>        # run a specific saved schedule
wp backupease run --storage=googledrive
Play nicely with Pro

These are the same hooks BackupEase Pro uses. When you filter shared values such as backupease_storage_labels or backupease_valid_storage_providers, always add to the incoming array and return it, never replace it, so you don’t remove the built-in or Pro providers. Prefix your own slugs and callbacks to avoid collisions.