FormsFree + Pro
Contact Form 7 MCP, and why submissions need Flamingo
Contact Form 7 MCP has separate form and stored-entry routes. Contact Form 7 normally sends submissions by email without storing its own entry records. The form side (form-tag templates, mail configurations and message strings) requires eligible GoBuildWP Pro, supported Contact Form 7, user capabilities and installed policy. Supported form-post changes have recovery; external mail does not. Entry reads additionally require Flamingo: GoBuildWP Free lists forms and reads its messages with designated contact fields withheld, while Pro adds supported exports and explicitly gated sensitive fields. Inspect the exact schema and redaction limits rather than assuming every installed version works.
Send the Contact page form's emails to sales@ instead of info@, and keep everything else about the mail the same.
wppilot/cf7-check-setupReadReports the CF7 version, the user's edit, read and delete rights, and whether Flamingo is active.
wppilot/cf7-list-formsReadFinds the form by title and returns id, locale and tag count without the heavy template.
wppilot/cf7-get-formReadReads mail and mail_2 in full, so the current recipient, headers and body are on record.
wppilot/cf7-edit-formWritePatches mail.recipient alone; the merge is shallow per key, so subject, body and headers are untouched.
- Edition
- Free 2 + Pro 9
- Abilities
- 11
- Requires
- WordPress 6.9+, PHP 8.0+, Contact Form 7 5.8.0+, Flamingo companion (stored submissions only) 2.4+
Data model
Forms are posts; submissions belong to Flamingo
Every form is a wpcf7_contact_form post. The template is one string of bracket tags such as [email* your-email], and the mail, mail_2, messages and additional_settings properties sit in post meta. additional_settings is raw text, one key: value pair per line, which CF7 parses itself.
Because the form is an ordinary post, the change log can snapshot it: create, duplicate and edit are undoable with rollback-change, and a delete that trashes rather than forces can be reversed as well.
Submissions are not in CF7 at all. Flamingo stores each one as a flamingo_inbound post tagged with a channel per form, and GoBuildWP reads them through Flamingo's own message class. Without Flamingo the entry abilities return cf7_flamingo_inactive, and anything sent before Flamingo was installed survives only in the notification emails.
Limits
Contact Form 7 limits and privacy
- include_sensitive and confirm, where supported, are API prerequisites subject to capability and installed policy, not proof of human consent. Obtain approval for the specific data purpose separately. Permitted fields and exports go to the client/provider; key or pattern masking does not cover arbitrary names or free text. Skill instructions do not enforce a human act.
- delete-form is permanent unless force is set to false, and any page embedding its shortcode then shows CF7's missing-form message.
- Removing a form leaves its Flamingo messages, and the personal data in them, where they are. An erasure request needs a separate Flamingo clean-up.
- Exports head each column with the form-tag name, since CF7 fields have no labels, and include only tags the form still has; answers to a removed tag are not exported.
- Upload, password-like and card-like columns and the IP are masked by default and are not searched unless include_sensitive and confirm are sent, which only Pro accepts. Free's cf7-list-entries also cuts addresses and phone numbers out of the message subject.
- Form edits do not purge page caches, so a cached page can show the old form until the cache is cleared.
Other plugins
Plugins Contact Form 7 leans on
- Flamingo is the only store GoBuildWP reads for CF7 submissions. Reading it needs flamingo_edit_inbound_messages, which Flamingo maps to edit_users.
- Under WPML or Polylang, list-forms is scoped to the current admin language by those plugins' own query filters; cf7-check-setup reports whether either is active.
- reCAPTCHA keys are site-wide in CF7, so a form's [recaptcha] tag carries no settings of its own; the canonical reader flags it instead of copying keys.
Abilities
Contact Form 7 abilities by effect
Inspect7
cf7-check-setupCheck Contact Form 7 SetupProcf7-export-entriesExport Contact Form 7 Entries (Flamingo)Procf7-get-formGet Contact Form 7 FormProcf7-get-form-canonicalGet Contact Form 7 Form (Canonical)Procf7-get-tags-schemaGet Contact Form 7 Tag SchemaProcf7-list-entriesList Contact Form 7 Entries (Flamingo)Freecf7-list-formsList Contact Form 7 FormsFree
Create and change3
Destructive1
Reference: /docs/reference/cf7
Documented source abilities; live registration can be narrower. Edition and effect labels describe the source catalogue. The installed schema, dependency versions, licence, WordPress capability, safety profile and per-ability policy determine availability; labels alone do not prove confirmation or recovery.
Worked example
Change who receives the enquiry email
Expected outcome to verify on the installed stack; this sequence has not been recorded as a runtime test.
Enquiries go to the new address from the next submission, and the edit can be reversed with rollback-change. A real test submission remains the only proof that mail is delivered.
cf7-check-setupReports the CF7 version, the user's edit, read and delete rights, and whether Flamingo is active.
cf7-list-formsFinds the form by title and returns id, locale and tag count without the heavy template.
cf7-get-formReads mail and mail_2 in full, so the current recipient, headers and body are on record.
cf7-edit-formPatches mail.recipient alone; the merge is shallow per key, so subject, body and headers are untouched.
Contact Form 7 changes that reach the inbox
Adding a field to a Contact Form 7 form and its email
The classic Contact Form 7 mistake is a new field that visitors fill in and nobody ever sees. CF7's template and its mail are separate properties: the form tag collects the answer, and the answer only reaches the inbox if the mail body includes a mail-tag with the same name. A request such as 'add a company name field' is therefore two changes, a [text company-name] tag in the form and a [company-name] line in mail.body, and mail_2 as well if the form sends a copy to the visitor.
With GoBuildWP Pro the agent reads the form with cf7-get-form, raising max_field_bytes if the template or body comes back truncated, and checks the tag syntax against cf7-get-tags-schema. The template is a single string, so editing it means sending the whole template back with the new tag in place. The mail object merges per key, so mail.body can be replaced without touching recipient, headers or subject. Both edits restore from the change log if the result is wrong.
- Required fields take an asterisk on the tag type, such as text*, and need a matching validation message to read well.
- If Flamingo stores entries, a new tag adds a new column to future exports; old entries simply lack it.
- Send one real test submission after any mail edit. A saved form proves nothing about delivery.
Outgrowing Contact Form 7: moving a form to another plugin
Sites leave Contact Form 7 when they want stored entries without a companion plugin, multi-step forms or payment fields. GoBuildWP Pro handles the schema side of that move through a guided form migration that uses a plugin-neutral form model. cf7-get-form-canonical maps a CF7 form onto that model: fields with canonical types, the primary mail as mail configuration, mail_2 as an extra notification when active, and the message strings. It also returns warnings for what will not carry across cleanly, such as the reCAPTCHA tag, whose keys live in CF7's site-wide settings, and quiz tags, which are anti-spam logic the target plugin has to replace.
The migration covers one form at a time and pauses for confirmation between planning and writing. It does not move submissions; Flamingo's stored messages stay where they are, so export them first with cf7-export-entries if the history matters. The new form has a new id, which means every [contact-form-7] shortcode and any builder widget pointing at the old form must be repointed by hand. Keep the CF7 form until the new one has received real submissions, then trash it with force false rather than deleting it outright.
Reviewing what Flamingo marked as spam
When an owner says enquiries have stopped, the answer is often in Flamingo's spam folder rather than in CF7. cf7-list-entries filters by status, including spam, and by date, and returns compact rows with the subject only, which is enough to see whether real enquiries are being caught. Reading the field values needs Pro's export, with sensitive columns masked unless they are explicitly requested and confirmed.
Questions
Contact Form 7 questions
Can an AI read my Contact Form 7 submissions?
These abilities read messages retained by Flamingo, which must have been active when they arrived. CF7 normally emails submissions without its own entry store; other add-ons or notification archives are outside this supported entry route. Where Flamingo has them, GoBuildWP Free reads them with contact details withheld; editing the form itself needs Pro.
Will the agent get CF7 form-tag syntax wrong?
cf7-get-tags-schema lists every tag CF7 accepts, what it renders and its modifiers, so the agent checks the vocabulary before writing a template.
Can I test a variant of a contact form safely?
cf7-duplicate-form copies the template, both mail settings, messages and additional settings into a new form with its own id and hash, leaving the live one alone.
Where these facts come from
GoBuildWP behaviour is taken from the plugin source and the ability reference; third-party details from the vendor documentation below, checked by the GoBuildWP team.
Contact Form 7 is a separate product; no partnership or endorsement is implied.