Skip to content

Storage Profiles

Free manages exactly one storage profile. Pro adds the ability to create additional profiles, each with its own independent credentials — useful when different content needs to live on different providers or buckets (for example, a CDN-fronted bucket for public media and a separate private bucket for restricted files).

Before you begin

KAZCODE Universal Storage Pro active, and at least one working profile already configured under Universal Storage → Storage.

Steps

  1. On Universal Storage → Storage, use the Add profile action (available with Pro active) to give the profile a name, provider, bucket, region, endpoint, and delivery settings.
  2. By default a new profile authenticates with the same site-wide credentials configured under Settings. To give a profile its own independent credentials instead — useful when two profiles are on different providers, since they virtually always need different access keys — set them via the REST API (POST /wp-json/kazcode-storage/v1/storage-profiles/save) or WP-CLI; there’s no in-admin form for this yet.
  3. Set which profile is the default upload target for new uploads.
  4. Delete only profiles that are no longer the default and have no object inventory rows. If a profile is protected, the Delete control stays visible but disabled with the reason shown in the browser tooltip.

Verify it worked

Multiple profiles are listed on Universal Storage → Storage, each independently testable via Test connection.

Troubleshooting

A profile’s location fields (bucket/prefix) won’t change — once a profile has objects recorded against it, its bucket/prefix become locked to prevent silently repointing an already-in-use destination. This is intentional: changing where a profile with existing objects points would orphan those objects’ delivery.

Delete is disabled — a profile cannot be deleted if it is the only profile, the current default upload target, or still has object inventory rows. Migrate or restore/reconcile the media first, then delete the now-empty non-default profile.