30 days free. No credit card. Full access from the moment you connect your site.

Start free trial

Update Contact Form Additional Settings

Four switches are writable here: demo_mode, skip_mail, subscribers_only and acceptance_as_validation. Anything else is refused.

That refusal is the point. Contact Form 7 does not validate this field at all — it will accept any text you put in it — so a typo’d key would be written happily and do nothing forever.

At a glance

Abilitycontact-form-7/update-additional-settings
ToolsetContact Form 7 — toolset/contact-form-7
GroupContact Form 7 › Settings & Validation
RequiresContact Form 7, active on the site
Capabilitymanage_options, plus edit_contact_forms
SafetyWrites data
RepeatableIdempotent — running it twice leaves the same result
Ships inAcrossAI Abilities Manager 0.0.34 and later

The gate on this one

Turning on demo_mode or skip_mail requires confirm: true. Both stop the form delivering mail while it continues to show visitors a success message — a site can sit in that state for weeks before anyone notices the enquiries stopped. The other two switches write without a gate.

How it works

Values are strings, matching how Contact Form 7 stores them: "on" and "off" rather than booleans. Pass an empty string to remove a setting entirely.

The response returns the parsed settings and the raw block after the write, so you can confirm what landed rather than assuming.

The write is idempotent — setting a switch to the value it already has reports the same result and changes nothing.

Input

NameTypeRequiredWhat it is
form_idintegerYesForm post ID, as returned by contact-form-7/list-forms.
settingsobjectYesSetting key => value, e.g. { "skip_mail": "off" }. Pass an empty string to remove a setting.
confirmbooleanOnly for demo_mode and skip_mailRequired when changing either of those two switches. Ignored otherwise.

What comes back

NameTypeWhat it is
form_idintegerThe form that was written.
settingsarrayThe parsed settings after the write.
updatedarrayWhich keys actually changed.
rawstringThe additional-settings block after the write.
successbooleanWhether the call completed.
messagestringA one-line summary of what happened, suitable for showing a human.
error_codestringPresent 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:

Turn skip_mail back off on form 42 — someone left it on after testing.

It resolves to one call:

{
  "ability": "contact-form-7/update-additional-settings",
  "parameters": {
    "form_id": 42,
    "settings": {
      "skip_mail": "off"
    },
    "confirm": true
  }
}

Worth knowing

  • Only four keys are writable. Anything else is refused rather than written.
  • Values are strings — "on" and "off", not true and false.
  • Idempotent, so a retry is safe.
  • Leaving skip_mail on after testing is the single commonest cause of a site silently losing enquiries.

Related abilities


Get the plugins:
AcrossAI Abilities Manager · AcrossAI MCP Manager

Browse the rest: Every ability, by category


Keep reading