Supplying only a title is the right way to use this. You get Contact Form 7’s own default template — name, email, subject, message and a submit button — which is a working form, and then you shape it with contact-form-7/add-form-field.
Supply a template only if you already know the tag syntax. Hand-writing form markup is where most Contact Form 7 mistakes start.
At a glance
| Ability | contact-form-7/create-form |
| Toolset | Contact Form 7 — toolset/contact-form-7 |
| Group | Contact Form 7 › Forms |
| Requires | Contact Form 7, active on the site |
| Capability | manage_options, plus edit_contact_forms |
| 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
Creating a form does not publish it anywhere. Contact Form 7 forms only reach a visitor through their shortcode, so the last step is always contact-form-7/get-form-shortcode and pasting the result into a page.
The mail and mail_2 objects are optional. Omit them and you get Contact Form 7’s defaults, which send to the site admin address — correct often enough to be worth leaving alone until you know better.
The response includes the new form’s configuration errors, so a template with a problem in it is visible immediately rather than after the first failed submission.
Input
| Name | Type | Required | What it is |
|---|---|---|---|
title | string | Yes | Form title, shown in the admin list. |
locale | string | No | Form locale, e.g. en_US. |
template | string | No | Form template markup. Omit for Contact Form 7’s default template. |
form | string | No | Deprecated alias of template, accepted so existing callers keep working. |
mail | object | No | The notification mail template. |
mail_2 | object | No | The autoresponder mail template. |
messages | object | No | Validation and status messages. |
additional_settings | string | No | Raw additional-settings block. |
What comes back
| Name | Type | What it is |
|---|---|---|
form | object | The created form, including its id and shortcode. |
config_errors | array | Anything Contact Form 7’s validator flags on the new form. |
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:
Create a contact form called “Partnership enquiries” using the default template.
It resolves to one call:
{
"ability": "contact-form-7/create-form",
"parameters": {
"title": "Partnership enquiries"
}
}Worth knowing
- Not idempotent — calling it twice gives you two forms with the same title and different ids, which is a genuinely confusing state to be in.
- The form is invisible until its shortcode is on a page. Creating it is not publishing it.
- Prefer the default template plus
contact-form-7/add-form-fieldover hand-written markup.
Related abilities
- Add Contact Form Field — shape the form after creating it
- Get Contact Form Shortcode — the step that makes it reachable
- Duplicate Contact Form — start from a form that already works
Get the plugins:
AcrossAI Abilities Manager · AcrossAI MCP Manager
Browse the rest: Every ability, by category