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: MIT5---67# Migrate Elementor to Breakdance89**Version:** 2.1.010**Updated:** 2026-08-0411**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.1213Converts 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.1415## What This Skill Does1617Breakdance 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.1819**Handles:**20- Section/Column layouts → Breakdance Section/Div elements21- Text Editor, Heading, Image, Video, Button → native Breakdance equivalents22- Icon, Icon Box, Image Box → Breakdance icon and media elements23- Tabs, Accordion, Toggle → Breakdance interactive elements24- Form widgets → Breakdance form element25- Spacer, Divider → Breakdance spacing and separator elements26- Google Maps → Breakdance map element27- Image Gallery → Breakdance gallery element28- Pricing Table → Breakdance pricing element29- Progress Bar, Counter → Breakdance equivalents30- Custom CSS → Breakdance custom CSS fields31- Responsive visibility → Breakdance breakpoint controls3233**Preserves:**34- All text content, headings, links, and inline formatting35- Image URLs, alt text, captions36- Typography settings (font, size, weight, line-height)37- Color values and gradients38- Spacing (margin, padding)39- Background images and overlays40- Border and shadow settings41- Button styles, links, and targets42- CSS classes and custom attributes4344## What This Skill Does NOT Do4546- **Third-party Elementor addons** — Widgets from Essential Addons, JetElements, Crocoblock, etc. are flagged for manual migration.47- **Elementor Pro dynamic tags** — ACF fields, custom loops, and dynamic content need Breakdance's dynamic data system configured separately.48- **Theme Builder templates** — Elementor headers, footers, archive templates are not page content and require Breakdance's own template system.49- **Popup content** — Elementor popups need to be rebuilt as Breakdance popups manually.50- **WooCommerce widgets** — Elementor's WooCommerce elements need Breakdance's WooCommerce builder.51- **Motion effects** — Parallax, entrance animations, and scroll effects have different implementations in Breakdance.52- **Global widgets** — Referenced by `templateID` in Elementor; these are resolved to inline content. Breakdance global blocks must be set up separately.5354## Requirements5556- Respira for WordPress plugin installed and connected57- MCP connection active (desktop or WebMCP)58- Elementor plugin active (to read source content)59- Breakdance plugin installed and active (to write target content)60- Read access to scan Elementor content61- Write access to create duplicates with Breakdance content6263## Trigger Phrase6465- "migrate elementor to breakdance"6667## Alternative Triggers6869- "convert elementor to breakdance"70- "switch from elementor to breakdance"71- "rebuild elementor pages in breakdance"72- "move from elementor to breakdance"73- "elementor to breakdance migration"7475## Source Builder: Elementor7677Elementor stores page content in the `_elementor_data` post meta field as a JSON string. The structure is a nested tree:7879```80Document81 └─ Section (type: "section")82 ├─ settings: { structure, layout, content_width, ... }83 └─ elements: [84 Column (type: "column")85 ├─ settings: { _column_size, ... }86 └─ elements: [87 Widget (type: "widget", widgetType: "heading")88 └─ settings: { title, size, header_size, ... }89 ]90 ]91```9293Key Elementor specifics:94- **Widget types** are in the `widgetType` field (e.g., `heading`, `text-editor`, `image`, `button`)95- **Responsive settings** use suffixes: `margin`, `margin_tablet`, `margin_mobile`96- **CSS** is cached in `_elementor_css` post meta97- **Page settings** in `_elementor_page_settings`98- **Global widgets** reference a template via `templateID`99100Read Elementor content via `respira_extract_builder_content` with `builder=elementor`.101102## Target Builder: Breakdance103104Breakdance stores content in post meta. Elements follow a structured format with type, settings, and children.105106Key Breakdance specifics:107- Elements have types like `EssentialElements\\Heading`, `EssentialElements\\Text`, `EssentialElements\\Image`108- Section/Div structure for layouts (similar conceptual model to Elementor sections/columns)109- Clean CSS output — Breakdance generates minimal, optimized CSS110- Built-in WooCommerce support, form builder, and popup system111- Responsive design uses breakpoint-specific settings within element properties112113Write Breakdance content via `respira_inject_builder_content` with `builder=breakdance`.114115## Execution Workflow116117### Phase 1: Pre-Migration Audit1181191. Verify Respira + MCP connection via `respira_get_site_context`. If unavailable, stop and show setup guidance.1202. Confirm Elementor is active via `respira_list_plugins`.1213. Confirm Breakdance is installed and active via `respira_list_plugins`.1224. 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.1235. For each Elementor page, extract content via `respira_extract_builder_content` with `builder=elementor`1246. Build an inventory:125 - Total pages/posts using Elementor126 - Widget types used (frequency count)127 - Third-party addon widgets detected128 - Pro widgets that need Breakdance Pro equivalents129 - Global widgets and dynamic tags130 - Complexity per page (simple/moderate/complex)131132### Phase 2: Migration Plan133134Present a migration plan:135136```137## Elementor → Breakdance Migration Plan138139### Site Inventory140- Total Elementor pages: X141- Total widgets to convert: X142- Auto-convertible: X (Y%)143- Manual attention: X (Y%)144145### Widget Mapping Summary146| Elementor Widget | Breakdance Element | Status |147|-----------------|-------------------|--------|148| heading | Heading | Auto |149| text-editor | Text | Auto |150| image | Image | Auto |151| button | Button | Auto |152| tabs | Tabs | Auto |153| form | Form | Partial|154| [addon widget] | — | Manual |155156### Page-by-Page Plan1571. **[Page Title]** — X widgets, [complexity]158 - Auto-convertible: X159 - Needs attention: [details]1602. ...161162### Migration Advantages163- Breakdance produces cleaner CSS output164- Better WooCommerce integration (if applicable)165- Similar visual editing workflow — team adjustment is minimal166```167168Ask for confirmation:169> Ready to migrate? Your original Elementor pages remain untouched.170> 1. Migrate all pages171> 2. Migrate specific pages172> 3. Start with a test page173> 4. Just keep this plan174175### Phase 3: Page-by-Page Migration176177For each approved page:1781791. Read full Elementor content via `respira_extract_builder_content` with `builder=elementor`1802. Walk the Elementor JSON tree and map each widget:181 - Convert Section → Breakdance Section182 - Convert Column → Breakdance Div (with flex layout)183 - Convert each widget → appropriate Breakdance element184 - Map typography, color, spacing, background, border settings185 - Convert responsive suffixes to Breakdance breakpoint format186 - Resolve global widgets to inline content187 - Flag unmappable widgets with migration notes1883. Generate valid Breakdance element structure1894. Create a duplicate via `respira_create_page_duplicate` or `respira_create_post_duplicate`1905. Before writing, take a snapshot with `respira_get_snapshot` so the duplicate's pre-write state can be restored if anything goes wrong1916. Write Breakdance content to the duplicate via `respira_inject_builder_content` with `builder=breakdance`1927. 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`1938. Report status before moving to next page194195### Phase 4: Post-Migration Verification1961971. Summarize all migrations:198 - Design tokens registered in Breakdance's global styles (token names and counts)199 - Pages migrated, widgets converted, items flagged2002. For each migrated page:201 - Link to edit in Breakdance202 - Flagged items list203 - Settings that may need fine-tuning2043. Post-migration checklist:205 - [ ] Open each duplicate in Breakdance editor and verify layout206 - [ ] Check responsive views (tablet, mobile)207 - [ ] Verify images and media208 - [ ] Test links and buttons209 - [ ] Recreate flagged widgets manually210 - [ ] Test forms and interactive elements211 - [ ] Check Breakdance's CSS output for clean rendering212 - [ ] Compare with Elementor original213214## Design Tokens215216Conversion 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.217218## Safety Model219220- Read-only analysis first — full content scan before any changes221- Explicit user confirmation required before creating duplicates222- Original Elementor pages are never modified or deleted223- All migrated content goes to draft duplicates only224- Never auto-publishes migrated pages225- Takes a `respira_get_snapshot` of each duplicate before any write, so its pre-write state can be restored226- Two explicit rollback paths: restore the snapshot with `respira_restore_snapshot`, or delete the draft duplicates entirely with `respira_delete_page` / `respira_delete_post`227- Surgical fixes (`respira_find_element` + `respira_update_element`, or `respira_batch_update`) replace whole-page re-injection, so corrections stay scoped and reversible228229## Honest Disclaimer230231This skill converts Elementor page content to Breakdance format and creates draft duplicates for review.232233It cannot:234- Migrate third-party addon widgets automatically235- Convert Elementor Pro dynamic tags to Breakdance dynamic data236- Guarantee pixel-perfect visual match237- Migrate theme builder templates or popups238- Replace manual QA and visual review239240It can:241- Convert 85-95% of standard Elementor widgets to Breakdance equivalents242- Preserve all text content, images, links, and core styling243- Take advantage of Breakdance's cleaner CSS output244- Save days of manual rebuilding245- Clearly flag everything that needs manual attention246- Keep original pages safe throughout the process247248## Tooling249250**Core WordPress tools**251- `respira_get_site_context`252- `respira_list_plugins`253- `respira_list_pages`254- `respira_list_posts`255- `respira_read_page`256- `respira_read_post`257- `respira_get_builder_info`258- `respira_extract_builder_content`259- `respira_inject_builder_content`260- `respira_find_builder_targets`261- `respira_create_page_duplicate`262- `respira_create_post_duplicate`263264**Safety and precision tools**265- `respira_get_snapshot`266- `respira_restore_snapshot`267- `respira_find_element`268- `respira_update_element`269- `respira_batch_update`270- `respira_delete_page`271- `respira_delete_post`272273## Telemetry274275After run completion, send fire-and-forget usage tracking to:276277- `POST https://www.respira.press/api/skills/track-usage`278279Include:280- `skill_slug = migrate-elementor-to-breakdance`281- site/version context282- duration and success283- pages migrated, widgets converted, widgets flagged counts284- tools used285286Never block user flow on telemetry failure.287288## Related Skills289290- WordPress Site DNA (understand site structure before migrating)291- Internal Link Builder (verify internal links post-migration)292- SEO & AEO Amplifier (verify SEO preservation post-migration)293- Technical Debt Audit (clean up post-migration)294295---296297Built by Respira Team298https://respira.press/skills/migrate-elementor-to-breakdance