elementor/add-heading inserts an Elementor heading widget with a title, a header size from h1 to h6, alignment and colour.
It is a convenience wrapper over elementor/add-widget for the most common insert there is.
At a glance
| Ability | elementor/add-heading |
| Toolset | Elementor — toolset/elementor |
| Group | Elementor › Elements & Widgets |
| Requires | Elementor, active on the site |
| Capability | manage_options |
| Safety | Writes data |
| Repeatable | Not idempotent — each call changes the row set, so re-running is not a no-op |
| Ships in | AcrossAI Abilities Manager 0.0.34 and later |
How it works
The wrapper exists because the generic insert requires knowing the widget’s control keys, and for a heading those are worth not having to look up every time.
The header size is the setting that matters beyond appearance. It is the actual HTML element — an h2 is an h2 to a screen reader and to a search engine — and Elementor will happily let a page have six h1 elements or jump from h1 to h4.
Choosing sizes for visual weight rather than for structure is the standard way page builders produce documents with no usable heading outline. Set the level for the structure and the appearance with styling.
Colour set here is a local override. On a site with a configured kit, leaving it unset lets the global typography apply — which is what keeps a page consistent when the brand colours change.
Not idempotent.
Input
| Name | Type | Required | What it is |
|---|---|---|---|
post_id | integer | Yes | The post holding the Elementor document. |
title | string | Yes | The heading text. |
header_size | string | No | h1 to h6. |
align | string | No | Text alignment. |
color | string | No | A local colour override. |
parent_id | string | null | No | The element to insert into. Null or omitted inserts at the document root. |
position | integer | No | Index among the parent’s children. Omitted appends at the end. |
What comes back
| Name | Type | What it is |
|---|---|---|
post_id | integer | The post written. |
element_id | string | The ID of the element created or affected. |
element | object | The element as 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:
Add an h2 heading saying “What we do” to that container.
It resolves to one call:
{
"ability": "elementor/add-heading",
"parameters": {
"post_id": 412,
"title": "What we do",
"header_size": "h2",
"parent_id": "a1b2c3d"
}
}Worth knowing
- The header size is real HTML structure, not styling.
- Set the level for the outline and the size with styling.
- Leaving colour unset lets the kit’s global typography apply.
- Not idempotent.
Related abilities
- Add Elementor Text Editor — the body copy beneath it
- Get Elementor Style Guide — the global typography it could use
Get the plugins:
AcrossAI Abilities Manager · AcrossAI MCP Manager
Browse the rest: Every ability, by category