This is the check for Contact Form 7’s quietest failure mode. Rename or remove a field and the notification keeps arriving, on time, looking normal — with a blank line where the value used to be.
Nothing in the WordPress admin flags it. The form still validates, the visitor still sees a success message, and the only symptom is a message you cannot reply to.
At a glance
| Ability | contact-form-7/validate-mail-tags |
| Toolset | Contact Form 7 — toolset/contact-form-7 |
| Group | Contact Form 7 › Mail & Notifications |
| Requires | Contact Form 7, active on the site |
| Capability | manage_options, plus read_contact_forms |
| Safety | Read-only — changes nothing |
| Repeatable | Idempotent — running it twice leaves the same result |
| Ships in | AcrossAI Abilities Manager 0.0.34 and later |
How it works
Every tag in both mail templates is checked against the fields the form actually has, and the ones resolving to nothing are returned as issues.
By default it checks both templates. Narrow to mail or mail_2 when you have only touched one.
Run it after any change to a form’s fields — a rename, a removal, a template rewrite. It is the difference between “the form saved” and “the form still tells you who wrote in”.
Input
| Name | Type | Required | What it is |
|---|---|---|---|
form_id | integer | Yes | Form post ID, as returned by contact-form-7/list-forms. |
which | string | No — defaults to both | Which template to check: mail, mail_2 or both. |
What comes back
| Name | Type | What it is |
|---|---|---|
form_id | integer | The form that was checked. |
valid | boolean | True when every tag resolves. |
issues | array | One entry per tag that resolves to nothing. |
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:
I just renamed a field on form 42 — is the notification still complete?
It resolves to one call:
{
"ability": "contact-form-7/validate-mail-tags",
"parameters": {
"form_id": 42,
"which": "both"
}
}Worth knowing
- Read-only. Run it freely, and run it after every field change.
- This is not the same check as
contact-form-7/validate-form-config. That one runs Contact Form 7’s own validator against structure; this one checks the tags against reality. - Fix what it reports with
contact-form-7/update-mail.
Related abilities
- Update Contact Form Mail Template — fix the tags it reports
- Remove Contact Form Field — the operation that most often breaks them
- Validate Contact Form Configuration — the structural check
Get the plugins:
AcrossAI Abilities Manager · AcrossAI MCP Manager
Browse the rest: Every ability, by category