Migrate Elementor to Breakdance
Version: 2.1.0
Updated: 2026-08-04
Freshly updated: v2.1.0 adds design-token awareness: conversion writes now register the colors and typography they carry as named design tokens in Breakdance's own global styles, and converted pages reference those tokens instead of carrying value copies. Reuse registered tokens instead of re-inlining raw values, and report the registration in the migration summary.
Converts Elementor-built WordPress pages to Breakdance Builder. Reads Elementor's JSON widget tree from post meta, maps each widget to its Breakdance element equivalent, generates a migration plan for approval, and writes Breakdance content to the target pages. Use this skill whenever someone wants to move from Elementor to Breakdance, switch builders from Elementor to Breakdance, or rebuild Elementor pages in Breakdance.
What This Skill Does
Breakdance is a newer builder created by the Oxygen team with a focus on clean output and familiar visual editing. Both Elementor and Breakdance are widget/element-based builders, making this a relatively smooth migration path. The main challenge is mapping Elementor's JSON widget tree (_elementor_data) to Breakdance's post meta format, translating settings names, and handling the structural differences in how each builder handles sections, columns, and responsive design. Both sit among the 16 page builders Respira reads and writes natively, so extraction and injection run through the same builder-aware tooling Respira uses everywhere else.
Handles:
- Section/Column layouts → Breakdance Section/Div elements
- Text Editor, Heading, Image, Video, Button → native Breakdance equivalents
- Icon, Icon Box, Image Box → Breakdance icon and media elements
- Tabs, Accordion, Toggle → Breakdance interactive elements
- Form widgets → Breakdance form element
- Spacer, Divider → Breakdance spacing and separator elements
- Google Maps → Breakdance map element
- Image Gallery → Breakdance gallery element
- Pricing Table → Breakdance pricing element
- Progress Bar, Counter → Breakdance equivalents
- Custom CSS → Breakdance custom CSS fields
- Responsive visibility → Breakdance breakpoint controls
Preserves:
- All text content, headings, links, and inline formatting
- Image URLs, alt text, captions
- Typography settings (font, size, weight, line-height)
- Color values and gradients
- Spacing (margin, padding)
- Background images and overlays
- Border and shadow settings
- Button styles, links, and targets
- CSS classes and custom attributes
What This Skill Does NOT Do
- Third-party Elementor addons — Widgets from Essential Addons, JetElements, Crocoblock, etc. are flagged for manual migration.
- Elementor Pro dynamic tags — ACF fields, custom loops, and dynamic content need Breakdance's dynamic data system configured separately.
- Theme Builder templates — Elementor headers, footers, archive templates are not page content and require Breakdance's own template system.
- Popup content — Elementor popups need to be rebuilt as Breakdance popups manually.
- WooCommerce widgets — Elementor's WooCommerce elements need Breakdance's WooCommerce builder.
- Motion effects — Parallax, entrance animations, and scroll effects have different implementations in Breakdance.
- Global widgets — Referenced by
templateID in Elementor; these are resolved to inline content. Breakdance global blocks must be set up separately.
Requirements
- Respira for WordPress plugin installed and connected
- MCP connection active (desktop or WebMCP)
- Elementor plugin active (to read source content)
- Breakdance plugin installed and active (to write target content)
- Read access to scan Elementor content
- Write access to create duplicates with Breakdance content
Trigger Phrase
- "migrate elementor to breakdance"
Alternative Triggers
- "convert elementor to breakdance"
- "switch from elementor to breakdance"
- "rebuild elementor pages in breakdance"
- "move from elementor to breakdance"
- "elementor to breakdance migration"
Source Builder: Elementor
Elementor stores page content in the _elementor_data post meta field as a JSON string. The structure is a nested tree:
Document
└─ Section (type: "section")
├─ settings: { structure, layout, content_width, ... }
└─ elements: [
Column (type: "column")
├─ settings: { _column_size, ... }
└─ elements: [
Widget (type: "widget", widgetType: "heading")
└─ settings: { title, size, header_size, ... }
]
]
Key Elementor specifics:
- Widget types are in the
widgetType field (e.g., heading, text-editor, image, button)
- Responsive settings use suffixes:
margin, margin_tablet, margin_mobile
- CSS is cached in
_elementor_css post meta
- Page settings in
_elementor_page_settings
- Global widgets reference a template via
templateID
Read Elementor content via respira_extract_builder_content with builder=elementor.
Target Builder: Breakdance
Breakdance stores content in post meta. Elements follow a structured format with type, settings, and children.
Key Breakdance specifics:
- Elements have types like
EssentialElements\\Heading, EssentialElements\\Text, EssentialElements\\Image
- Section/Div structure for layouts (similar conceptual model to Elementor sections/columns)
- Clean CSS output — Breakdance generates minimal, optimized CSS
- Built-in WooCommerce support, form builder, and popup system
- Responsive design uses breakpoint-specific settings within element properties
Write Breakdance content via respira_inject_builder_content with builder=breakdance.
Execution Workflow
Phase 1: Pre-Migration Audit
- Verify Respira + MCP connection via
respira_get_site_context. If unavailable, stop and show setup guidance.
- Confirm Elementor is active via
respira_list_plugins.
- Confirm Breakdance is installed and active via
respira_list_plugins.
- Inventory and scope the source pages with
respira_find_builder_targets (builder=elementor) — a fast, ranked list of every Elementor-built page/post before you touch anything. Fall back to respira_list_pages / respira_list_posts + respira_get_builder_info to confirm builder per item where needed.
- For each Elementor page, extract content via
respira_extract_builder_content with builder=elementor
- Build an inventory:
- Total pages/posts using Elementor
- Widget types used (frequency count)
- Third-party addon widgets detected
- Pro widgets that need Breakdance Pro equivalents
- Global widgets and dynamic tags
- Complexity per page (simple/moderate/complex)
Phase 2: Migration Plan
Present a migration plan:
## Elementor → Breakdance Migration Plan
### Site Inventory
- Total Elementor pages: X
- Total widgets to convert: X
- Auto-convertible: X (Y%)
- Manual attention: X (Y%)
### Widget Mapping Summary
| Elementor Widget | Breakdance Element | Status |
|-----------------|-------------------|--------|
| heading | Heading | Auto |
| text-editor | Text | Auto |
| image | Image | Auto |
| button | Button | Auto |
| tabs | Tabs | Auto |
| form | Form | Partial|
| [addon widget] | — | Manual |
### Page-by-Page Plan
1. **[Page Title]** — X widgets, [complexity]
- Auto-convertible: X
- Needs attention: [details]
2. ...
### Migration Advantages
- Breakdance produces cleaner CSS output
- Better WooCommerce integration (if applicable)
- Similar visual editing workflow — team adjustment is minimal
Ask for confirmation:
Ready to migrate? Your original Elementor pages remain untouched.
- Migrate all pages
- Migrate specific pages
- Start with a test page
- Just keep this plan
Phase 3: Page-by-Page Migration
For each approved page:
- Read full Elementor content via
respira_extract_builder_content with builder=elementor
- Walk the Elementor JSON tree and map each widget:
- Convert Section → Breakdance Section
- Convert Column → Breakdance Div (with flex layout)
- Convert each widget → appropriate Breakdance element
- Map typography, color, spacing, background, border settings
- Convert responsive suffixes to Breakdance breakpoint format
- Resolve global widgets to inline content
- Flag unmappable widgets with migration notes
- Generate valid Breakdance element structure
- Create a duplicate via
respira_create_page_duplicate or respira_create_post_duplicate
- Before writing, take a snapshot with
respira_get_snapshot so the duplicate's pre-write state can be restored if anything goes wrong
- Write Breakdance content to the duplicate via
respira_inject_builder_content with builder=breakdance
- Surgical fix pass — if the injected page has validation issues (collapsed column widths, broken parent refs, a misconverted element), do not re-inject the whole page. Locate the specific element with
respira_find_element and correct it with respira_update_element. For repeated fixes across many elements or several pages, batch them with respira_batch_update
- Report status before moving to next page
Phase 4: Post-Migration Verification
- Summarize all migrations:
- Design tokens registered in Breakdance's global styles (token names and counts)
- Pages migrated, widgets converted, items flagged
- For each migrated page:
- Link to edit in Breakdance
- Flagged items list
- Settings that may need fine-tuning
- Post-migration checklist:
Design Tokens
Conversion writes now register the colors and typography they carry as named design tokens in Breakdance's own global styles, and the converted pages reference those tokens instead of carrying value copies. When fixing or extending a migrated page, reuse the registered tokens (respira_list_design_tokens shows them) rather than re-inlining raw hex values or font stacks. And say so when you finish: the migration summary should name the tokens that were registered and note that migrated pages reference them.
Safety Model
- Read-only analysis first — full content scan before any changes
- Explicit user confirmation required before creating duplicates
- Original Elementor pages are never modified or deleted
- All migrated content goes to draft duplicates only
- Never auto-publishes migrated pages
- Takes a
respira_get_snapshot of each duplicate before any write, so its pre-write state can be restored
- Two explicit rollback paths: restore the snapshot with
respira_restore_snapshot, or delete the draft duplicates entirely with respira_delete_page / respira_delete_post
- Surgical fixes (
respira_find_element + respira_update_element, or respira_batch_update) replace whole-page re-injection, so corrections stay scoped and reversible
Honest Disclaimer
This skill converts Elementor page content to Breakdance format and creates draft duplicates for review.
It cannot:
- Migrate third-party addon widgets automatically
- Convert Elementor Pro dynamic tags to Breakdance dynamic data
- Guarantee pixel-perfect visual match
- Migrate theme builder templates or popups
- Replace manual QA and visual review
It can:
- Convert 85-95% of standard Elementor widgets to Breakdance equivalents
- Preserve all text content, images, links, and core styling
- Take advantage of Breakdance's cleaner CSS output
- Save days of manual rebuilding
- Clearly flag everything that needs manual attention
- Keep original pages safe throughout the process
Tooling
Core WordPress tools
respira_get_site_context
respira_list_plugins
respira_list_pages
respira_list_posts
respira_read_page
respira_read_post
respira_get_builder_info
respira_extract_builder_content
respira_inject_builder_content
respira_find_builder_targets
respira_create_page_duplicate
respira_create_post_duplicate
Safety and precision tools
respira_get_snapshot
respira_restore_snapshot
respira_find_element
respira_update_element
respira_batch_update
respira_delete_page
respira_delete_post
Telemetry
After run completion, send fire-and-forget usage tracking to:
POST https://www.respira.press/api/skills/track-usage
Include:
skill_slug = migrate-elementor-to-breakdance
- site/version context
- duration and success
- pages migrated, widgets converted, widgets flagged counts
- tools used
Never block user flow on telemetry failure.
Related Skills
- WordPress Site DNA (understand site structure before migrating)
- Internal Link Builder (verify internal links post-migration)
- SEO & AEO Amplifier (verify SEO preservation post-migration)
- Technical Debt Audit (clean up post-migration)
Built by Respira Team
https://respira.press/skills/migrate-elementor-to-breakdance
1---2name: migrate-elementor-to-breakdance3description: "Use when the user says 'migrate elementor to breakdance', 'convert elementor to breakdance', or 'rebuild elementor pages in breakdance'. Maps Elementor widgets to Breakdance elements and creates draft duplicates for review."4license: MIT5metadata:6 author: Respira for WordPress7 author_url: https://respira.press8 version: 2.1.09 mcp-server: respira-wordpress10 category: migration11---1213# Migrate Elementor to Breakdance1415**Version:** 2.1.016**Updated:** 2026-08-0417**Freshly updated:** v2.1.0 adds design-token awareness: conversion writes now register the colors and typography they carry as named design tokens in Breakdance's own global styles, and converted pages reference those tokens instead of carrying value copies. Reuse registered tokens instead of re-inlining raw values, and report the registration in the migration summary.1819Converts Elementor-built WordPress pages to Breakdance Builder. Reads Elementor's JSON widget tree from post meta, maps each widget to its Breakdance element equivalent, generates a migration plan for approval, and writes Breakdance content to the target pages. Use this skill whenever someone wants to move from Elementor to Breakdance, switch builders from Elementor to Breakdance, or rebuild Elementor pages in Breakdance.2021## What This Skill Does2223Breakdance is a newer builder created by the Oxygen team with a focus on clean output and familiar visual editing. Both Elementor and Breakdance are widget/element-based builders, making this a relatively smooth migration path. The main challenge is mapping Elementor's JSON widget tree (`_elementor_data`) to Breakdance's post meta format, translating settings names, and handling the structural differences in how each builder handles sections, columns, and responsive design. Both sit among the 16 page builders Respira reads and writes natively, so extraction and injection run through the same builder-aware tooling Respira uses everywhere else.2425**Handles:**26- Section/Column layouts → Breakdance Section/Div elements27- Text Editor, Heading, Image, Video, Button → native Breakdance equivalents28- Icon, Icon Box, Image Box → Breakdance icon and media elements29- Tabs, Accordion, Toggle → Breakdance interactive elements30- Form widgets → Breakdance form element31- Spacer, Divider → Breakdance spacing and separator elements32- Google Maps → Breakdance map element33- Image Gallery → Breakdance gallery element34- Pricing Table → Breakdance pricing element35- Progress Bar, Counter → Breakdance equivalents36- Custom CSS → Breakdance custom CSS fields37- Responsive visibility → Breakdance breakpoint controls3839**Preserves:**40- All text content, headings, links, and inline formatting41- Image URLs, alt text, captions42- Typography settings (font, size, weight, line-height)43- Color values and gradients44- Spacing (margin, padding)45- Background images and overlays46- Border and shadow settings47- Button styles, links, and targets48- CSS classes and custom attributes4950## What This Skill Does NOT Do5152- **Third-party Elementor addons** — Widgets from Essential Addons, JetElements, Crocoblock, etc. are flagged for manual migration.53- **Elementor Pro dynamic tags** — ACF fields, custom loops, and dynamic content need Breakdance's dynamic data system configured separately.54- **Theme Builder templates** — Elementor headers, footers, archive templates are not page content and require Breakdance's own template system.55- **Popup content** — Elementor popups need to be rebuilt as Breakdance popups manually.56- **WooCommerce widgets** — Elementor's WooCommerce elements need Breakdance's WooCommerce builder.57- **Motion effects** — Parallax, entrance animations, and scroll effects have different implementations in Breakdance.58- **Global widgets** — Referenced by `templateID` in Elementor; these are resolved to inline content. Breakdance global blocks must be set up separately.5960## Requirements6162- Respira for WordPress plugin installed and connected63- MCP connection active (desktop or WebMCP)64- Elementor plugin active (to read source content)65- Breakdance plugin installed and active (to write target content)66- Read access to scan Elementor content67- Write access to create duplicates with Breakdance content6869## Trigger Phrase7071- "migrate elementor to breakdance"7273## Alternative Triggers7475- "convert elementor to breakdance"76- "switch from elementor to breakdance"77- "rebuild elementor pages in breakdance"78- "move from elementor to breakdance"79- "elementor to breakdance migration"8081## Source Builder: Elementor8283Elementor stores page content in the `_elementor_data` post meta field as a JSON string. The structure is a nested tree:8485```86Document87 └─ Section (type: "section")88 ├─ settings: { structure, layout, content_width, ... }89 └─ elements: [90 Column (type: "column")91 ├─ settings: { _column_size, ... }92 └─ elements: [93 Widget (type: "widget", widgetType: "heading")94 └─ settings: { title, size, header_size, ... }95 ]96 ]97```9899Key Elementor specifics:100- **Widget types** are in the `widgetType` field (e.g., `heading`, `text-editor`, `image`, `button`)101- **Responsive settings** use suffixes: `margin`, `margin_tablet`, `margin_mobile`102- **CSS** is cached in `_elementor_css` post meta103- **Page settings** in `_elementor_page_settings`104- **Global widgets** reference a template via `templateID`105106Read Elementor content via `respira_extract_builder_content` with `builder=elementor`.107108## Target Builder: Breakdance109110Breakdance stores content in post meta. Elements follow a structured format with type, settings, and children.111112Key Breakdance specifics:113- Elements have types like `EssentialElements\\Heading`, `EssentialElements\\Text`, `EssentialElements\\Image`114- Section/Div structure for layouts (similar conceptual model to Elementor sections/columns)115- Clean CSS output — Breakdance generates minimal, optimized CSS116- Built-in WooCommerce support, form builder, and popup system117- Responsive design uses breakpoint-specific settings within element properties118119Write Breakdance content via `respira_inject_builder_content` with `builder=breakdance`.120121## Execution Workflow122123### Phase 1: Pre-Migration Audit1241251. Verify Respira + MCP connection via `respira_get_site_context`. If unavailable, stop and show setup guidance.1262. Confirm Elementor is active via `respira_list_plugins`.1273. Confirm Breakdance is installed and active via `respira_list_plugins`.1284. Inventory and scope the source pages with `respira_find_builder_targets` (builder=elementor) — a fast, ranked list of every Elementor-built page/post before you touch anything. Fall back to `respira_list_pages` / `respira_list_posts` + `respira_get_builder_info` to confirm builder per item where needed.1295. For each Elementor page, extract content via `respira_extract_builder_content` with `builder=elementor`1306. Build an inventory:131 - Total pages/posts using Elementor132 - Widget types used (frequency count)133 - Third-party addon widgets detected134 - Pro widgets that need Breakdance Pro equivalents135 - Global widgets and dynamic tags136 - Complexity per page (simple/moderate/complex)137138### Phase 2: Migration Plan139140Present a migration plan:141142```143## Elementor → Breakdance Migration Plan144145### Site Inventory146- Total Elementor pages: X147- Total widgets to convert: X148- Auto-convertible: X (Y%)149- Manual attention: X (Y%)150151### Widget Mapping Summary152| Elementor Widget | Breakdance Element | Status |153|-----------------|-------------------|--------|154| heading | Heading | Auto |155| text-editor | Text | Auto |156| image | Image | Auto |157| button | Button | Auto |158| tabs | Tabs | Auto |159| form | Form | Partial|160| [addon widget] | — | Manual |161162### Page-by-Page Plan1631. **[Page Title]** — X widgets, [complexity]164 - Auto-convertible: X165 - Needs attention: [details]1662. ...167168### Migration Advantages169- Breakdance produces cleaner CSS output170- Better WooCommerce integration (if applicable)171- Similar visual editing workflow — team adjustment is minimal172```173174Ask for confirmation:175> Ready to migrate? Your original Elementor pages remain untouched.176> 1. Migrate all pages177> 2. Migrate specific pages178> 3. Start with a test page179> 4. Just keep this plan180181### Phase 3: Page-by-Page Migration182183For each approved page:1841851. Read full Elementor content via `respira_extract_builder_content` with `builder=elementor`1862. Walk the Elementor JSON tree and map each widget:187 - Convert Section → Breakdance Section188 - Convert Column → Breakdance Div (with flex layout)189 - Convert each widget → appropriate Breakdance element190 - Map typography, color, spacing, background, border settings191 - Convert responsive suffixes to Breakdance breakpoint format192 - Resolve global widgets to inline content193 - Flag unmappable widgets with migration notes1943. Generate valid Breakdance element structure1954. Create a duplicate via `respira_create_page_duplicate` or `respira_create_post_duplicate`1965. Before writing, take a snapshot with `respira_get_snapshot` so the duplicate's pre-write state can be restored if anything goes wrong1976. Write Breakdance content to the duplicate via `respira_inject_builder_content` with `builder=breakdance`1987. Surgical fix pass — if the injected page has validation issues (collapsed column widths, broken parent refs, a misconverted element), do not re-inject the whole page. Locate the specific element with `respira_find_element` and correct it with `respira_update_element`. For repeated fixes across many elements or several pages, batch them with `respira_batch_update`1998. Report status before moving to next page200201### Phase 4: Post-Migration Verification2022031. Summarize all migrations:204 - Design tokens registered in Breakdance's global styles (token names and counts)205 - Pages migrated, widgets converted, items flagged2062. For each migrated page:207 - Link to edit in Breakdance208 - Flagged items list209 - Settings that may need fine-tuning2103. Post-migration checklist:211 - [ ] Open each duplicate in Breakdance editor and verify layout212 - [ ] Check responsive views (tablet, mobile)213 - [ ] Verify images and media214 - [ ] Test links and buttons215 - [ ] Recreate flagged widgets manually216 - [ ] Test forms and interactive elements217 - [ ] Check Breakdance's CSS output for clean rendering218 - [ ] Compare with Elementor original219220## Design Tokens221222Conversion writes now register the colors and typography they carry as named design tokens in Breakdance's own global styles, and the converted pages reference those tokens instead of carrying value copies. When fixing or extending a migrated page, reuse the registered tokens (`respira_list_design_tokens` shows them) rather than re-inlining raw hex values or font stacks. And say so when you finish: the migration summary should name the tokens that were registered and note that migrated pages reference them.223224## Safety Model225226- Read-only analysis first — full content scan before any changes227- Explicit user confirmation required before creating duplicates228- Original Elementor pages are never modified or deleted229- All migrated content goes to draft duplicates only230- Never auto-publishes migrated pages231- Takes a `respira_get_snapshot` of each duplicate before any write, so its pre-write state can be restored232- Two explicit rollback paths: restore the snapshot with `respira_restore_snapshot`, or delete the draft duplicates entirely with `respira_delete_page` / `respira_delete_post`233- Surgical fixes (`respira_find_element` + `respira_update_element`, or `respira_batch_update`) replace whole-page re-injection, so corrections stay scoped and reversible234235## Honest Disclaimer236237This skill converts Elementor page content to Breakdance format and creates draft duplicates for review.238239It cannot:240- Migrate third-party addon widgets automatically241- Convert Elementor Pro dynamic tags to Breakdance dynamic data242- Guarantee pixel-perfect visual match243- Migrate theme builder templates or popups244- Replace manual QA and visual review245246It can:247- Convert 85-95% of standard Elementor widgets to Breakdance equivalents248- Preserve all text content, images, links, and core styling249- Take advantage of Breakdance's cleaner CSS output250- Save days of manual rebuilding251- Clearly flag everything that needs manual attention252- Keep original pages safe throughout the process253254## Tooling255256**Core WordPress tools**257- `respira_get_site_context`258- `respira_list_plugins`259- `respira_list_pages`260- `respira_list_posts`261- `respira_read_page`262- `respira_read_post`263- `respira_get_builder_info`264- `respira_extract_builder_content`265- `respira_inject_builder_content`266- `respira_find_builder_targets`267- `respira_create_page_duplicate`268- `respira_create_post_duplicate`269270**Safety and precision tools**271- `respira_get_snapshot`272- `respira_restore_snapshot`273- `respira_find_element`274- `respira_update_element`275- `respira_batch_update`276- `respira_delete_page`277- `respira_delete_post`278279## Telemetry280281After run completion, send fire-and-forget usage tracking to:282283- `POST https://www.respira.press/api/skills/track-usage`284285Include:286- `skill_slug = migrate-elementor-to-breakdance`287- site/version context288- duration and success289- pages migrated, widgets converted, widgets flagged counts290- tools used291292Never block user flow on telemetry failure.293294## Related Skills295296- WordPress Site DNA (understand site structure before migrating)297- Internal Link Builder (verify internal links post-migration)298- SEO & AEO Amplifier (verify SEO preservation post-migration)299- Technical Debt Audit (clean up post-migration)300301---302303Built by Respira Team304https://respira.press/skills/migrate-elementor-to-breakdance