Migrate away from Elementor
Elementor stores its pages as _elementor_data JSON. That single fact decides what a migration can carry across and what it cannot, so it is where this page starts.
What Elementor stores
Elementor stores a JSON widget tree in the _elementor_data post meta key, and post_content holds only rendered output. That makes it the most machine-readable source on this list: the tree can be walked directly instead of parsed out of a string.
The part that actually costs time
The tree is readable, but widget settings are deeply nested and version-dependent, and third-party widget packs store their own shapes inside the same tree. Anything from a plugin that is not installed on the destination has no equivalent and has to be decided about rather than converted.
Carries across
- The full section, column and widget hierarchy
- Text, images and links
- Most spacing and typography settings
- Responsive breakpoint values
Needs a decision, or a rebuild
- Third-party widget packs with no counterpart on the destination
- Global styles and theme-style defaults
- Popups and Theme Builder templates, which are separate post types
Where you can go from Elementor
Coming the other way, into Elementor
How the migration actually runs
The agent works on a duplicate of the page, not the live one. The original keeps serving while the converted copy waits for review, and every write captures a before-state so a bad conversion is one call to undo. Nothing publishes without a human approving it.