Title: PostDeploy
Author: Hassan Kazmi
Published: <strong>September 22, 2026</strong>
Last modified: September 22, 2026

---

Search plugins

![](https://ps.w.org/postdeploy/assets/banner-772x250.png?rev=3707523)

![](https://ps.w.org/postdeploy/assets/icon.svg?rev=3707523)

# PostDeploy

 By [Hassan Kazmi](https://profiles.wordpress.org/samworkdev/)

[Download](https://downloads.wordpress.org/plugin/postdeploy.0.9.62.zip)

 * [Details](https://wordpress.org/plugins/postdeploy/#description)
 * [Reviews](https://wordpress.org/plugins/postdeploy/#reviews)
 *  [Installation](https://wordpress.org/plugins/postdeploy/#installation)
 * [Development](https://wordpress.org/plugins/postdeploy/#developers)

 [Support](https://wordpress.org/support/plugin/postdeploy/)

## Description

Stop migrating your entire database just to publish one post.

PostDeploy lets administrators select one post (or page) on a remote WordPress site
and deploy just that object — along with its basic dependencies (post meta, taxonomies,
featured image, and referenced content media) — to the current site. Everything 
else on the destination site remains untouched.

**Included in the free version:**

 * Unlimited remote environment connections
 * Manual deployment (push)
 * Posts, Pages, and other public custom post types
 * Basic post meta
 * Basic taxonomies (categories, tags, public custom taxonomies)
 * Featured image
 * Basic content media
 * Stable object mapping (repeat deployments update, never duplicate)
 * Secure authentication and connection testing
 * Package validation and deployment verification
 * Deployment history and basic logs
 * Basic manual retry

Content built with Elementor, Advanced Custom Fields, or WPML migrates too — the
free version transfers everything through the same pipeline as any other post. What
it can’t do on its own is resolve site-specific references inside that content: 
an Elementor widget’s image, an ACF relationship or gallery field, or which WPML
translation to send. PostDeploy Pro adds that resolution, plus bulk/scheduled deployment,
snapshots, rollback, and WP-CLI.

## Screenshots

[⌊Dashboard overview⌉⌊Dashboard overview⌉[

Dashboard overview

[⌊Remote content browser⌉⌊Remote content browser⌉[

Remote content browser

[⌊Connections screen⌉⌊Connections screen⌉[

Connections screen

## Installation

 1. Upload the plugin files to `/wp-content/plugins/postdeploy`, or install directly
    through the WordPress plugins screen.
 2. Activate the plugin through the “Plugins” screen in WordPress.
 3. Go to PostDeploy  Connections to connect a remote WordPress site.
 4. Go to PostDeploy  Remote Content to browse and select a post to deploy.

## FAQ

### Does this replace my whole database?

No. PostDeploy never performs a full database migration or replaces core WordPress
tables. It transfers one selected object and its basic dependencies only.

### Can I connect more than one remote site?

Yes — connect as many remote environments as you need.

### Can I migrate custom post types?

Yes. Posts, Pages, and any other public custom post type (Products, Events, Portfolio
items, and similar) all migrate the same way.

### What happens to my data if I uninstall the plugin?

By default, uninstalling leaves your WordPress content and migration history untouched.
An explicit cleanup option is available if you want migration records removed.

### Can I migrate pages built with Elementor?

Yes, the underlying design data migrates along with everything else. What the free
version doesn’t do is resolve the attachment/image references inside it, so a migrated
Elementor page may show images pointing back at the source site until it’s re-saved
in the editor. PostDeploy Pro resolves those references automatically as part of
the transfer.

### Can I migrate content with Advanced Custom Fields (ACF) data?

Yes, ACF field values migrate along with the rest of the post. Fields that reference
other content (relationship, gallery, post object) keep their source-site IDs unless
something resolves them for the destination — that resolution is what PostDeploy
Pro adds.

### Can I migrate posts that are part of a WPML translation?

Yes, any post migrates regardless of its WPML language. The free version doesn’t
let you pick which translation to send or link it into the destination’s translation
group — it migrates the post itself, same as any other. PostDeploy Pro adds the 
ability to choose which language (or the whole translation group) to migrate and
links it correctly on the destination.

## Reviews

![](https://secure.gravatar.com/avatar/e22c913397c3f4c24801375ceba5ed5a164afb890e1743bec03bce6d7adcb424?
s=60&d=retro&r=g)

### 󠀁[Post Migration](https://wordpress.org/support/topic/post-migration/)󠁿

 [saifullahqadeer](https://profiles.wordpress.org/saifullahqadeer/) September 22,
2026

Great plugin! Easy to set up, works smoothly, and does exactly what it promises.
Highly recommended!

 [ Read all 1 review ](https://wordpress.org/support/plugin/postdeploy/reviews/)

## Contributors & Developers

“PostDeploy” is open source software. The following people have contributed to this
plugin.

Contributors

 *   [ Hassan Kazmi ](https://profiles.wordpress.org/samworkdev/)

[Translate “PostDeploy” into your language.](https://translate.wordpress.org/projects/wp-plugins/postdeploy)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/postdeploy/), check
out the [SVN repository](https://plugins.svn.wordpress.org/postdeploy/), or subscribe
to the [development log](https://plugins.trac.wordpress.org/log/postdeploy/) by 
[RSS](https://plugins.trac.wordpress.org/log/postdeploy/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 0.9.62

 * Custom post type migration is back — Posts, Pages, and any other public custom
   post type all migrate the same way, with no restriction.

#### 0.9.61

 * Removed `DryRunService`, a fully-implemented validation feature that shipped 
   in this plugin’s code but had no way to actually reach it from this plugin’s 
   own screens, REST API, or anything else — nothing in the free version ever called
   it. It’s now Pro-exclusive code, living only in that separate plugin.

#### 0.9.60

 * Fixed the previous fix: the ignore comment for the batch-query placeholder warning
   was on the wrong line (phpcs:ignore only suppresses the line immediately after
   it, not the whole statement), so the warning still showed. Moved it to the actual
   flagged line.

#### 0.9.59

 * Fixed the remaining Plugin Check warnings: an interpolated placeholder in a batch
   query wasn’t recognized as covered by the `$wpdb->prepare()` call it’s actually
   part of, and five `update()`/`delete()` calls on this plugin’s own tables were
   missing the “this is a write, not a cacheable read” justification for the no-
   caching sniff.

#### 0.9.58

 * Custom post type migration has been removed from this version — only Posts and
   Pages are supported.

#### 0.9.57

 * Updated the admin UI’s accent color.

#### 0.9.56

 * Custom post types and Pages are fully included in the free version again — no
   restriction.

#### 0.9.55

 * Custom post types and Pages now require PostDeploy Pro — only Posts migrate in
   the free version.

#### 0.9.54

 * Fixed the remaining escaping warnings Plugin Check flagged (the admin screens
   now call the escaping function directly at the point of output, not through a
   wrapper).
 * Two internal identifiers were still using the old short prefix and have been 
   renamed, with existing sites migrated automatically. No visible change.

#### 0.9.53

 * Custom post types and multiple site connections are now fully included in the
   free version — no longer restricted. Content built with Elementor, ACF, or WPML
   now migrates too; PostDeploy Pro adds correct reference resolution for that content
   rather than unlocking it.
 * Tightened output escaping across the admin screens.

#### 0.9.52

 * With more than one connection (PostDeploy Pro), the Dashboard now shows one push
   panel with a destination picker instead of a separate post list per connection—
   and any connection can now be a push destination, not just ones set up in the“
   push” direction.

#### 0.9.51

 * Internal hardening for the WordPress.org review: renamed internal identifiers
   to avoid clashing with other plugins, and tightened output escaping on the admin
   screens. No visible change for normal use.

#### 0.9.50

 * Some important fixes for push pull not working properly

#### 0.9.49

 * Custom post types (Products, Events, Portfolio items, and similar) now require
   PostDeploy Pro, the same way Elementor/ACF/WPML content already does — Posts 
   and Pages always migrate in the free version. The Custom Post Types toggle in
   Settings still exists but is inactive until Pro is active.

#### 0.9.48

 * The Deployments list now shows the actual reason a deployment failed, not just
   a short error code.

#### 0.9.46

 * Fixed a fatal error viewing an Elementor page after a push or pull.

#### 0.9.45

 * Fixed some media files being rejected during migration.

#### 0.9.44

 * Clarified wording in the push confirmation popup so it correctly reads for Pages
   and custom post types, not just Posts.

#### 0.9.42

 * A blocked deployment (PostDeploy Pro’s Conflict Detection) now shows a proper
   confirmation popup instead of a plain browser alert.

#### 0.9.40

 * “Media,” “Floating Elements,” and “Listing Items” no longer show up as custom
   post types you can migrate — they’re plugin-internal storage, not real content.

#### 0.9.39

 * Added protection against repeated or abusive connection requests.
 * The same media file is now reused instead of duplicated when migrated more than
   once.
 * A failed deployment no longer leaves orphaned media files behind.
 * Large media downloads get more time before timing out, and a clearer error if
   a file is too large for the destination site.
 * Added conflict detection: pushing or pulling now warns you if the destination
   has changed since the last deployment, instead of silently overwriting it.

#### 0.9.38

 * Fixed the dark/light mode toggle button losing its icon after switching to light
   mode.

#### 0.9.36

 * Added a “Custom Post Types” section to Settings — turn specific post types on
   or off for migration.

#### 0.9.35

 * The Dashboard’s push panel now shows every custom post type on your site, not
   just Posts and Pages.

#### 0.9.34

 * Added a “PHP Error Log” section to Settings, so an error can be diagnosed without
   needing FTP or a hosting file manager.

#### 0.9.32

 * Fixed wide tables overflowing the page on smaller screens.

#### 0.9.31

 * The firewall troubleshooting notice on Settings is now collapsed by default instead
   of an always-visible banner.

#### 0.9.27

 * Fixed the Settings page always showing PostDeploy Pro features as locked, even
   when Pro was active.

#### 0.9.26

 * The Review & Pull screen now tells you upfront whether a pull will create a new
   post or update an existing one.

#### 0.9.21

 * Settings’ Debug Info panel now shows whether PostDeploy Pro is installed.

#### 0.9.19

 * Remote Content now shows a locked badge on posts that need PostDeploy Pro (Elementor/
   ACF/WPML), before you click into them.
 * Lowered the minimum required PHP version for wider hosting compatibility.

#### 0.9.17

 * Posts in your site’s default language now migrate normally, even if part of a
   WPML translation set.

#### 0.9.16

 * Pushing a post now shows a proper confirmation screen instead of a plain browser
   pop-up.

#### 0.9.15

 * The Dashboard now shows upfront which posts can’t be pushed, instead of only 
   telling you after you try.

#### 0.9.14

 * ACF and WPML content is now clearly marked as requiring Pro, the same way Elementor
   content already was.
 * Pushing a post now asks for confirmation first.

#### 0.9.13

 * Pages built with Elementor now show a clear message that Elementor support requires
   PostDeploy Pro.

#### 0.9.11

 * Fixed the connection status occasionally showing an outdated version number for
   the other site.

#### 0.9.10

 * Fixed the version-mismatch warning not clearing up after a push or pull.

#### 0.9.9

 * Added a “What’s New” page to the admin sidebar.

#### 0.9.7

 * Fixed the Connections page not refreshing its version-mismatch warning after 
   testing a connection.

#### 0.9.6

 * Renamed “Push” to “Pull” on Remote Content’s review screen, to match what the
   button actually does.

#### 0.9.5

 * Fixed the version-mismatch warning showing an old, incorrect version number.

#### 0.9.4

 * Fixed Remote Content occasionally showing posts already deleted on the other 
   site.
 * Added item counts, readable dates, and quick Edit/Disconnect actions to Remote
   Content.
 * Added a warning when two connected sites run different plugin versions.

#### 0.9.3

 * Fixed pushing or pulling a post failing with “Invalid post ID” if that post had
   been manually deleted on the destination.

#### 0.9.2

 * Fixed Remote Content sometimes showing already-deleted posts, caused by the other
   site’s own caching.

#### 0.9.1

 * PostDeploy’s screens now use your full browser window and hide unrelated WordPress
   notices.

#### 0.9.0

 * Redesigned the whole admin area: sidebar navigation, dark mode, and faster search/
   pagination.

#### 0.8.0

 * Added search and pagination to the Dashboard’s post lists.
 * Connecting and testing a connection now happens instantly, without reloading 
   the page.

#### 0.7.0

 * Fixed a failed deployment sometimes leaving a broken, half-created post behind.

#### 0.6.3

 * Fixed pushed or pulled posts sometimes losing almost all their content in the
   block editor.

#### 0.6.1

 * Fixed the Dashboard occasionally showing everything twice.

#### 0.6.0

 * Renamed the plugin from “Post Migration” to “PostDeploy”.

#### 0.5.1

 * Fixed content images sometimes not updating to the new site’s address after a
   push or pull.

#### 0.5.0

 * Added a guided setup wizard for connecting to another site.

#### 0.4.1

 * Fixed a progress popup that appeared on every Dashboard visit and wouldn’t close.

#### 0.4.0

 * Redesigned the admin screens with a cleaner, card-based layout.

#### 0.3.0

 * Added the ability to push a post directly from the Dashboard, without logging
   into the other site first.

#### 0.1.0

 * Initial release.

## Meta

 *  Version **0.9.62**
 *  Last updated **1 day ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.4 or higher **
 *  Tested up to **7.1.2**
 *  PHP version ** 8.0 or higher **
 * Tags
 * [content](https://wordpress.org/plugins/tags/content/)[deployment](https://wordpress.org/plugins/tags/deployment/)
   [migration](https://wordpress.org/plugins/tags/migration/)[post](https://wordpress.org/plugins/tags/post/)
   [staging](https://wordpress.org/plugins/tags/staging/)
 *  [Advanced View](https://wordpress.org/plugins/postdeploy/advanced/)

## Ratings

 5 out of 5 stars.

 *  [  1 5-star review     ](https://wordpress.org/support/plugin/postdeploy/reviews/?filter=5)
 *  [  0 4-star reviews     ](https://wordpress.org/support/plugin/postdeploy/reviews/?filter=4)
 *  [  0 3-star reviews     ](https://wordpress.org/support/plugin/postdeploy/reviews/?filter=3)
 *  [  0 2-star reviews     ](https://wordpress.org/support/plugin/postdeploy/reviews/?filter=2)
 *  [  0 1-star reviews     ](https://wordpress.org/support/plugin/postdeploy/reviews/?filter=1)

[Your review](https://wordpress.org/support/plugin/postdeploy/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/postdeploy/reviews/)

## Contributors

 *   [ Hassan Kazmi ](https://profiles.wordpress.org/samworkdev/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/postdeploy/)