Altered Digital Migration

Page Builder Support

Which WordPress page builders are supported and how each is transformed to Sanity Portable Text.

Support matrix

BuilderDeterministic ParserAI FallbackNotes
GutenbergFullN/ANative block editor — direct mapping to Portable Text
ElementorFull (known widgets)YesUnknown widget types route to AI transform
WPBakeryFull (depth ≤ 3)YesShortcode parser; deeper nesting → AI fallback
Divi 4Full (common modules)YesShortcode parser
Divi 5Full (common blocks)YesBlock-comment parser (<!-- wp:divi/... -->)
Beaver BuilderFull (common modules)YesUnserialized array tree walk

How it works

Each post is analyzed for its builder. The plugin sends a _ad_builder_hint and the raw builder data (_elementor_data JSON, shortcodes, serialized arrays) in the webhook payload. The Worker dispatches to the matching deterministic parser.

Each parser returns a confidence score (0–1):

  • ≥ 0.7 — deterministic output is used directly
  • < 0.7 — the Worker calls the AI service /api/transform route, which uses the json capability (deepseek-v4 → glm-5.2 → gpt-4o-mini) to convert the raw block to Portable Text
  • AI failure — falls back to the deterministic parser output (graceful degradation; the post still migrates)

Elementor

Known widgets map directly to Portable Text blocks:

Elementor widgetSanity block type
headingstyled block
text-editorblock array
imagewpImage
buttoncta
accordionaccordion
videovideo

Unknown widget types decrement confidence. Broken JSON (failed json_decode) yields confidence 0 → AI fallback.

WPBakery

Shortcodes are tokenized and built into a tree capped at depth 3. Deeper nesting yields confidence 0 → AI fallback. Known shortcodes:

WPBakery shortcodeSanity block type
vc_column_textblock array
vc_single_imagewpImage
vc_btncta
vc_row / vc_columncolumns

Divi

Divi 4 (shortcodes)

Divi 4 shortcodes ([et_pb_section], [et_pb_row], [et_pb_text], etc.) are parsed with regex. Common modules map to blocks:

Divi 4 moduleSanity block type
et_pb_textblock array
et_pb_imagewpImage
et_pb_buttoncta
et_pb_accordionaccordion
et_pb_toggleaccordion (single item)
et_pb_divider / et_pb_spacerdivider

Divi 5 (block comments)

Divi 5 migrated to the WordPress block-editor format. Content is stored as block comments (<!-- wp:divi/section -->...<!-- /wp:divi/section -->). The parser auto-detects Divi 5 vs Divi 4 based on the content signature and dispatches accordingly.

Divi 5 blockSanity block type
divi/textblock array
divi/imagewpImage
divi/buttoncta
divi/accordionaccordion
divi/toggleaccordion (single item)
divi/divider / divi/spacerdivider

Beaver Builder

Beaver Builder stores its layout as a serialized PHP array in _fl_builder_data. The plugin unserializes it and sends it as JSON. The parser walks the rows → columns → modules tree and maps known module types:

Beaver moduleSanity block type
headingstyled block (h1–h6)
rich-textblock array
photowpImage
buttoncta
accordionaccordion
separator / spacerdivider
testimonialblockquote
calloutcta (info variant)
videoblock (URL)
htmlblock array (stripped)

If your site uses a builder not listed here, content will be parsed as Gutenberg (raw HTML → Portable Text). Run AI Cleanup after migration to refine the output.

On this page