learndash/convert-certificate-to-builder converts a legacy certificate template to a Certificate Builder one. It requires confirm_title matching the template.
Conversion means emptying, not translating.
Before you run it
The entire legacy body is replaced by an empty builder template. The old content is backed up to the ld_certificate_builder_old_content meta first, and that backup is the only way to recover it — nothing in the LearnDash interface exposes it. A background image is needed for the result to be viewable, so pass background_attachment_id or set one immediately afterwards.
At a glance
| Ability | learndash/convert-certificate-to-builder |
| Toolset | LearnDash — toolset/learndash |
| Group | LearnDash › Certificates |
| Requires | AcrossAI Pro, plus LearnDash LMS active on the site |
| Capability | manage_options |
| Safety | Destructive — replaces the legacy body with an empty builder template. Requires confirm_title. |
| Repeatable | Not idempotent — each call changes the row set, so re-running is not a no-op |
| Ships in | AcrossAI Pro 0.9.16 and later |
How it works
The two formats are not compatible enough to translate between. A legacy template is shortcode-driven markup; a builder template is blocks. So the conversion produces an empty builder template rather than an approximation of the old design.
The old content is written to the ld_certificate_builder_old_content meta first. That is the only copy, and nothing in the LearnDash interface shows it — recovering the design means reading that meta directly.
A background image is required for the result to be viewable at all, because Certificate Builder hard-fails without one. Passing background_attachment_id here avoids a window where the template is broken.
Already-converted templates are refused rather than re-emptied, which protects against a retry destroying a design that was rebuilt after the first conversion.
The template stays assigned to whatever was using it throughout, so learners completing during the rebuild get an empty or broken certificate. Unassign it first if that matters.
Not idempotent.
Input
| Name | Type | Required | What it is |
|---|---|---|---|
certificate_id | integer | Yes | The legacy template. |
confirm_title | string | Yes | Must exactly match the current title on the live record. |
background_attachment_id | integer | No | Set the background at the same time, so the result is viewable. |
confirm | boolean | Yes — must be true | The irreversibility gate. Without it the call is refused before anything is touched. |
What comes back
| Name | Type | What it is |
|---|---|---|
certificate_id | integer | The template converted. |
backup_meta_key | string | Where the old content was stored. |
success | boolean | Whether the call completed. |
message | string | A one-line summary of what happened, suitable for showing a human. |
error_code | string | Present only on failure — a stable machine-readable reason, such as a missing field, a wrong field type or an unmet confirmation. |
Example
Ask your assistant:
Convert that old certificate to the builder format.
It resolves to one call:
{
"ability": "learndash/convert-certificate-to-builder",
"parameters": {
"certificate_id": 810,
"confirm_title": "Course completion certificate",
"background_attachment_id": 2201
}
}Worth knowing
- The formats do not translate. The result is empty, not approximated.
- The backup lives in meta and nothing in the interface shows it.
- Already-converted templates are refused, so a retry cannot destroy a rebuild.
- The template stays assigned during the rebuild.
Related abilities
- LearnDash Manage Certificate Template — rebuild it
- LearnDash Get Certificate Template — check the kind first
Get the plugins:
AcrossAI Abilities Manager · AcrossAI MCP Manager
Browse the rest: Every ability, by category