Skip to content

Contact Form 7

Automatically create WPsigner documents when a Contact Form 7 form is submitted.


RequirementVersion
WPsigner2.1.0+
Contact Form 75.0+
WordPress5.8+
PHP7.4+

  1. Go to WPsigner → Integrations → Contact Form 7
  2. Click Add Feed
  3. Configure:
    • Feed Name: Descriptive name (e.g., “Service Contract - Contact”)
    • CF7 Form: Select the form from the dropdown
    • Template: Select a WPsigner template
    • Document Title: Use dynamic variables like Contract - {{signer_name}} - {{date}}
    • Signer Name Field: CF7 tag name (e.g., your-name)
    • Signer Email Field: CF7 tag name (e.g., your-email)
  4. Optionally add Variable Mappings to pass extra form data to the template
  5. Optionally enable Auto Send to email the signing link immediately
  6. Click Save Feed

Both the Name and Email fields are required. If either is missing when the form is submitted, the integration will skip the submission silently.

  1. Open the page with your CF7 form on the frontend
  2. Fill in the form with test data (use your own email to receive the signing link)
  3. Submit the form
  4. Check WPsigner → Documents — a new document should appear
  5. If Auto-send is enabled, check your inbox for the signing email

The integration hooks into CF7’s post-validation pipeline. Here is the full flow:

User submits CF7 form
CF7 runs all validation (required fields, format checks)
CF7 runs spam filters (Akismet, reCAPTCHA, honeypot)
CF7 sends its configured email(s)
`wpcf7_mail_sent` hook fires
WPsigner checks for matching feeds (by form ID)
For each matching feed:
→ Extracts signer name and email from mapped tag names
→ Resolves variable mappings from form data
→ Creates document from selected template
→ (Optional) Sends signing email to signer
StepDetails
1. User submits CF7 formCF7 validates all fields (spam, CAPTCHA, required fields)
2. wpcf7_mail_sent firesWPsigner receives validated, spam-free data
3. Feed matches form IDChecks for active feeds linked to this form
4. Signer data extractedName and email pulled from configured CF7 tag names
5. Variables resolvedCustom variable mappings populate template placeholders
6. Document createdPDF generated from template with all mapped data
7. Auto-send (optional)Signing request emailed immediately to the signer

CF7 uses “tag names” to identify form fields. You can find them in your CF7 form editor — each tag has a unique name that you reference in WPsigner:

[text* your-name] → Tag name: your-name
[email* your-email] → Tag name: your-email
[tel your-phone] → Tag name: your-phone
[textarea your-message] → Tag name: your-message
[text your-company] → Tag name: your-company
[text your-address] → Tag name: your-address

Map these tag names in your WPsigner feed configuration. The tag name is the second value inside the brackets (after the field type).


Beyond the required signer name and email, you can pass additional form data into your document templates using variable mapping. This allows dynamic content like company names, phone numbers, or addresses to appear in the generated document.

  1. In the feed editor, scroll to the Variable Mapping section
  2. Click Add to create a new mapping row
  3. Enter the variable name (left input) using the custom.* prefix
  4. Enter the CF7 tag name (right input) that contains the data
VariableCF7 Tag NameUse in Template
custom.companyyour-company{{custom.company}}
custom.phoneyour-phone{{custom.phone}}
custom.addressyour-address{{custom.address}}
custom.positionjob-title{{custom.position}}
custom.amountcontract-amount{{custom.amount}}

You can also use dynamic placeholders in the document title:

VariableReplaced WithExample
{{signer_name}}Signer’s full nameJohn Smith
{{signer_email}}Signer’s emailjohn@example.com
{{date}}Current date2026-03-06
{{company_name}}Company name (if mapped)Acme Corp

Example title: NDA - {{signer_name}} - {{date}}


ScenarioSetup
Client onboardingContact form → NDA template → Auto-send
Quote requestsQuote form → Service agreement template
Job applicationsApplication form → Offer letter template
Event registrationRegistration form → Waiver template → Auto-send
Consent collectionConsent form → Consent document template → Auto-send
Rental agreementsBooking form → Rental agreement template → Auto-send
Freelancer contractsProject inquiry form → Freelance contract template
Vendor agreementsVendor intake form → Vendor contract template → Auto-send

You can create multiple feeds for the same form or template:

  • One form, multiple templates: A single form submission can generate different documents (e.g., both an NDA and a service agreement)
  • Multiple forms, one template: Different CF7 forms can all use the same document template
  • One-to-one: Each form has its own dedicated template

Each feed operates independently. When a form is submitted, all active feeds linked to that form will trigger.


FeatureDetails
Post-validation hookOnly fires after CF7 completes all checks (Akismet, reCAPTCHA, honeypot)
Rate Limiting10 documents/min per form via WordPress transients
Feed SanitizationAll fields sanitized on save with appropriate WordPress functions
Variable RestrictionOnly [a-zA-Z0-9_.] allowed in variable names
No PII in LogsError logs never contain names or email addresses
Nonce + CapabilityAll admin AJAX verified with nonce and manage_options check

IssueCauseSolution
No document created after submissionFeed not activeCheck feed is enabled in WPsigner → Integrations
No document createdForm or template not selectedVerify the feed configuration has both a form and template
Signer not receiving emailAuto-send not enabledEnable “Auto-send document” in the feed settings
Signer not receiving emailSMTP issueCheck your WordPress email configuration (use an SMTP plugin)
Wrong signer name/emailTag name mismatchVerify the CF7 tag names match exactly (case-sensitive)
Variables not appearing in documentIncorrect variable nameEnsure variable names use the custom.* prefix and match template placeholders
”Contact Form 7 is not installed”Plugin not activeInstall and activate CF7 from the WordPress plugin directory
Rate limit exceededToo many rapid submissionsWait 60 seconds — limit is 10 documents/min per form
Fields not appearing on signed PDFTemplate has no fieldsRe-create the template with fields positioned correctly

If documents are not being created, check the WordPress debug log:

  1. Enable debug logging in wp-config.php:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
  1. Check the log file at wp-content/debug.log
  2. Look for entries starting with [WPsigner CF7]

The integration has a built-in rate limit of 10 documents per minute per form to prevent abuse. If you’re testing rapidly, wait a minute between submissions.


ComponentSupported Versions
Contact Form 75.0+
WPsigner2.1.0+
WordPress5.8+
PHP7.4+