A mechanical typewriter with blurred warm background — the writer's craft, now on WordPress.

Setup guide

CMS Platforms

How to Connect WordPress to Univaultport with Application Passwords

Generate a WordPress Application Password, verify your user role, and connect WP media to Univaultport — works for any site running WP 5.6 or newer.

Univaultport TeamMay 18, 20265 min readEasy · 5 min

Univaultport talks to WordPress via the REST API, authenticating with HTTP Basic and Application Passwords — a feature built into WordPress 5.6 and newer. No plugins required, no OAuth dance, no consumer key/secret pair. This guide covers the full setup and the two gotchas that catch most teams.

Two prerequisites you must check first

Before generating credentials, verify these two things in your WordPress admin. If either is wrong, the integration won't work and the error messages will be cryptic.

Go to Settings → Permalinks.

Common Settings:
  ○ Plain          ← will break REST API
  ● Post name      ✓ recommended
  ○ Day and name
  ○ Month and name
  ○ Numeric
  ○ Custom Structure

If "Plain" is selected, the REST API at /wp-json/... returns 404 because URL rewriting is off. Switch to any other option and click Save Changes.

2. The WP user needs the upload_files capability

Application Passwords inherit the user's role. To upload to WP from another platform, the user must be at least an Author. Subscribers and Contributors cannot upload — they'll get 403 errors.

Quickest check: Users → All Users → your user → Role. If it says Subscriber or Contributor and you want writes, change it (or create a dedicated migration user with the Author role).

For read-only migrations (WP → another platform), any role works because listing media doesn't require upload_files.

Step 1 — Open your user profile

In WP Admin, click your avatar at the top-right → Edit Profile, or go to Users → Profile.

Scroll all the way down. You'll find a section called Application Passwords.

Step 2 — Generate a new application password

  1. Name the password

    Type something descriptive like asset-migrator-prod. This is just a label for your reference — pick something you'll recognize later.
  2. Click 'Add New Application Password'

    WordPress generates a 24-character password split into 6 groups of 4 with spaces between them.
  3. Copy immediately

    You will not see this password again. Copy it now. If you lose it, you'll have to revoke and generate a new one.

The password looks like this:

abcd EFGH 1234 ijkl MNOP 5678

The spaces are fine — paste it as-is into Univaultport. WordPress accepts the password with or without spaces.

Step 3 — Paste credentials into Univaultport

In the connector wizard:

  1. Site URL

    The root URL of your WordPress site. Example: https://mysite.com. Don't include /wp-json or any path — just the origin.
  2. Username

    Your WP login username (not your email, unless the username and email are the same).
  3. Application Password

    Paste the 24-character password including the spaces.

Click Save & test. Univaultport hits /wp-json/wp/v2/users/me to validate. A green check means everything is wired up correctly.

How WordPress chooses where to upload files

This is the one quirk you cannot work around: WordPress decides the file path itself.

When you migrate a file into WP, the destination URL becomes:

https://mysite.com/wp-content/uploads/2026/05/<filename>
                                       └─ year / month based on upload date

The original folder structure from your source connector is discarded — WP's media library is flat. The destFolderMode: 'new' option in the Univaultport wizard has no effect for WordPress destinations and is silently ignored.

If you need a hierarchical media library, look into plugins like FileBird or Real Media Library — but those plugins use custom taxonomies, not real folders on disk.

File size limits

WordPress upload limits come from three different layers of PHP/WP configuration:

SettingWhereDefault
upload_max_filesizephp.ini2 MB on shared hosting, 64 MB on most managed WP
post_max_sizephp.iniMust be ≥ upload_max_filesize
WP_MEMORY_LIMITwp-config.php40 MB

If you hit a 413 Payload Too Large, your host's PHP config is the bottleneck. Most managed WP hosts have a "Upload Size Limit" toggle in the control panel. For self-hosted, edit php.ini and restart php-fpm.

For migrations of large video files (>100 MB), confirm the limits before running a job — there's no way for Univaultport to split a single file across multiple requests.

Troubleshooting

ErrorCauseFix
401 UnauthorizedWrong username, wrong app password, or pasted the regular login passwordRe-generate app password; use the username, not email
403 Forbidden on uploadUser role lacks upload_filesChange role to Author or higher
404 Not Found on /wp-json/...Permalinks set to PlainChange to "Post name"
413 Payload Too LargePHP upload limitRaise upload_max_filesize in php.ini
Disabled by security pluginWordfence/iThemes blocked Application PasswordsRe-enable in plugin settings

Read-only vs. read-write migrations

The same Application Password works for both directions. The only difference is the user role behind it:

  • WP → another platform (read-only): any role works
  • Another platform → WP (write): user must be Author or higher
  • Both directions on the same connector: Author or higher

We recommend creating a dedicated WP user for migrations (e.g., migration-bot, role Author) so the credentials aren't tied to a real human's account.

Next steps

With WordPress connected, common patterns are:

  • WP → Cloudinary or S3: offload media to cheaper/CDN-fronted storage
  • Cloudinary → WP: bring a DAM library into WordPress for a content team
  • WP → WP: site cloning between staging and prod

Keep going

Related guides