Page builder converter ability reference
Reference for the GoBuildWP Pro 1.12.4 source. Installed schemas and policy remain authoritative.
This Page builder converter ability reference covers how an agent moves a page from one builder to another: it lists which conversions this site supports, previews a conversion with a report of what would not survive, writes the result as a new draft, and reads that report back later. The source page is never modified.
Read-only, write and destructive groups describe the source annotations. They do not establish a minimum safety profile, human approval or undo support. Those controls are separate: check the installed ability, the connected user and the active site policy before calling it. A read can still return sensitive data. These pages are not evidence that every operation passed an end-to-end runtime test.
What Page builder converter needs before these load
The converter ships in GoBuildWP Pro and is always registered, but a builder appears as a source or target only while its own Pro module has loaded, so builder version floors and licence checks carry over unchanged. Sources are Elementor, the block editor, Bricks, Divi, Beaver Builder, Etch, Flatsome, WPBakery, Oxygen and Breakdance; Elementor can be written as classic or atomic. Calls check that GoBuildWP is switched on and that the user has manage_options, then edit_post on the source (wppilot_convert_forbidden).
- Page builder converter editions
- pro
- Agent skills shipped
convert-page-builder
When a conversion needs accept_loss
Every element of the page is given a fidelity: mapped, approximated, fallback-html or dropped. A conversion requires acceptance when anything is dropped, or when more than a quarter of the elements fall back to raw HTML. In that case wppilot/convert-document returns wppilot_convert_loss_not_accepted with the counts until accept_loss is true. The same check runs again after writing, in case the target builder left out elements the plan did not expect.
Where the draft and its report live
The result is a new draft whose meta records its source in _wppilot_converted_from and the full loss report in _wppilot_convert_report, which wppilot/get-conversion-report reads. The draft is recorded in the change ledger, so wppilot/rollback-change removes it. Converting into the same builder is refused with wppilot_convert_same_target, and a builder with no reader or writer on this site returns wppilot_convert_no_reader or wppilot_convert_no_writer.
wppilot/list-convertible-documents pages posts before detecting their builder, up to 50 per page, so a page of results can hold fewer documents, even none, while more_pages is still true.
Representative call sequence
This sequence describes the documented calls and checks to perform. It is not a recorded result from an installed WordPress site. Inspect returned errors and partial results, then verify the saved values and affected output before proceeding.
Move a WPBakery landing page to Bricks during a redesign.
- 01
wppilot/list-convertible-documentsConfirms wpbakery to bricks is an available pair and lists the landing page with its detected builder. - 02
wppilot/convert-previewReturns the loss report: how many elements map cleanly, which are approximated or kept as raw HTML, and whether acceptance is needed. - 03
wppilot/convert-documentWrites a new Bricks draft, with accept_loss true if the report required it, and returns the draft's id. - 04
wppilot/get-conversion-reportReturns the stored report for the draft so a reviewer can check each element that did not carry over whole.
Converting between page builders
The neutral layout every conversion passes through
The converter never translates one builder straight into another. Each reader turns the source page into one shared document model, and each writer turns that model into its own builder's format, so the losses are decided in one place instead of differently by every pair. The model is deliberately small. Structure is always section, row, column and element, with group for a bare wrapper; builders that nest deeper collapse into nested rows. Leaf elements are heading, text, image, button, list, quote, divider, spacer and video. Anything outside that list, which covers most interactive widgets such as sliders, tabs, accordions, forms and counters, is carried as a raw node holding its HTML or, failing that, dropped, and either way a loss entry names the original widget.
Responsive settings are folded into three buckets: base, tablet and mobile. A builder with more breakpoints than that has the extra ones merged, and the fold is recorded. Styling is carried for a closed set of properties: text and background colour, background image, font family, size, weight, line height, letter spacing, alignment and transform, padding, margin, gap, radius, border, shadow, minimum height, maximum width and opacity. Anything else stays in the node's copy of the original settings and is named in the report, but no writer promises to reproduce it.
A page deeper than 12 levels or larger than 5,000 nodes is refused rather than converted, which in practice only catches runaway or corrupted layouts.
Colours and fonts come across as recovered tokens
A builder page usually stores its colours and typefaces as literal values on each element, so the same navy can appear forty times. The reader collects every literal and folds them into a short list of colour, font, size, spacing and radius tokens, each with a usage count; values within half a pixel of each other count as one. The counts are evidence, not a verdict: a colour used forty times is a likely brand candidate and one used once may be a slip or a deliberate accent, so the report shows the counts and a person decides which values become tokens.
This version writes each token back out as its literal value, so the draft looks like the source but is not yet tied to the target builder's global colours or variables. Use the token list in the report as the starting point for setting those globals up, for example with Brand kit, and then rebind the page in the target builder.
What the converted draft copies from the original page
The draft is a new post of the same post type, in draft status, titled with the source title plus (converted to Bricks) or whichever target you chose, unless a title is passed. It carries the source's featured image, excerpt and terms in every taxonomy the post type uses, and none of the source builder's own meta, because two builders claiming one post would render unpredictably. The loss report is stored on the draft itself, so deleting the draft also removes its report.
wppilot/convert-document is an ordinary write rather than a destructive one, because it only ever creates. Under the Read Only safety profile the list, preview and report calls still work, so a conversion can be planned and its losses reviewed on a production site before anyone has write access.
Reading and writing failures, by stage
On staging, open the draft in the target builder next to the original at desktop, tablet and mobile widths, and work through each approximated, fallback-html and dropped element in wppilot/get-conversion-report before publishing. Raw HTML blocks render, but the target builder cannot edit them as native elements, so rebuild the ones people will need to change.
- wppilot_convert_source_unusable: the source is in the trash or is an auto-draft. Restore it first.
- wppilot_convert_cannot_create (HTTP 403): the connected user may edit the source but cannot create posts of that type, so there is nowhere to put the draft.
- wppilot_convert_unreadable (HTTP 422) for Elementor, and wppilot_convert_not_readable for Oxygen and Breakdance: the stored layout could not be parsed. Check that the page still opens in its own builder before converting it.
- wppilot_convert_writer_unavailable: the target builder is not loaded on this request. The Divi reader understands both Divi 5 blocks and Divi 4 shortcodes, but the Divi writer produces Divi 5 only.
- wppilot_convert_empty: the plan produced no nodes for the target builder to write, so no draft content was saved.
Questions about Page builder converter
Why is a builder I use missing from the list of targets?
A writer registers only when that builder is active and its Pro module has loaded. Converting into a builder the site cannot open would produce a page nothing can edit, so it is not offered.
Does converting replace my original page?
No. The source is read and left as it was; the output is a separate draft you review in the target builder and publish yourself.
Page builder converter reads
| Ability | What it does |
|---|---|
wppilot/list-convertible-documentsList Convertible Documents | Lists which page builders this site can convert from and to, every conversion pair available here, and the documents that can be converted, each with the builder that owns it. Call this first: which pairs exist is a fact about this install rather than about GoBuildWP, because a reader or a writer is offered only when its builder is actually present. |
wppilot/convert-previewPreview a Builder Conversion | Reads a page built in one builder, translates it into the neutral document model, plans the write for another builder, and reports exactly what would happen - without touching anything. The report names every element that would not survive whole: what is carried exactly, what is approximated, what falls back to raw markup, and what cannot be carried at all, each with the native widget named. Always call this before wppilot/convert-document and read the loss report: every cross-builder conversion loses something, and this is where it is visible. |
wppilot/get-conversion-reportGet Conversion Report | Returns the loss report stored against a converted draft: where it came from, what survived whole, and every element that did not. Use it when reviewing a conversion somebody else ran, or after the fact. |
Page builder converter writes
| Ability | What it does |
|---|---|
wppilot/convert-documentConvert a Document to Another Builder | Converts a page built in one page builder into a NEW DRAFT built in another. The source page is never modified. Run wppilot/convert-preview first and read its loss report; when the report says acceptance is required - anything dropped, or more than a quarter of the page reduced to raw markup - this refuses until accept_loss is true. The draft is recorded in the change ledger, so wppilot/rollback-change removes it. Open the result in the target builder and check it before publishing. |