Automate document signing from Formidable Forms submissions with WPsigner. You can generate a PDF from the form answers (content signing), fill a fixed WPsigner PDF template, or take a PDF that E2Pdf already built — then open the signing page immediately or email the signing request.
Admin path: WPsigner → Integrations → Formidable Forms
Choose your workflow
Section titled “Choose your workflow”| Workflow | Best for | Template type | Where you configure it | Feed required? |
|---|---|---|---|---|
| Content signing | Applications, registrations, agreements built from form answers | None (PDF built from the submission) | Form editor (+ optional feed for CC / title) | No (optional) |
| PDF template + feed | Fixed PDF contracts (NDA, lease, offer letter) | WPsigner PDF template | WPsigner → Integrations → Formidable Forms | Yes |
| E2Pdf + feed | PDFs designed in E2Pdf, then signed in WPsigner | E2Pdf template (plugin separate) | Same feed screen, E2Pdf template dropdown | Yes (or a developer hook) |
How template feeds work
Section titled “How template feeds work”Form submitted → Feed runs → Document created from template → Mapped fields prefilled (signature / initials stay empty) → After submit: • Open signing page immediately → redirect to /insigner/{token} (no signing email) • Send signing request by email → email with signing link (no browser redirect)| Piece | Description |
|---|---|
| Feed | Rule that links one Formidable Form to one template |
| Primary signer | Name + email fields from the form (required) |
| Field mapping | Dropdown → dropdown: template field ↔ Formidable field |
| After submit | Open for signing or email the signing request |
| Prefill | Text/date/name/company/etc. filled from the submission; signature and initials are never prefilled |
Content signing
Section titled “Content signing”Generate a signed PDF from the form submission content plus an inline signature. No PDF template upload is required.
How it works
Section titled “How it works”Form submitted → PDF built from answers → Signature applied → Audit trail + Certificate of Completion- Install Formidable Forms and WPsigner (3.2.12+).
- Edit your Formidable Form and add at least:
- A Name field
- An Email field
- The WPsigner Signing field (Draw / Type / Upload), or the Formidable Pro Signature field
- Publish the form.
On submit, WPsigner captures the signature(s) and form data, generates the signed PDF, and runs the normal completion flow. Formidable’s success message then shows a Download Signed PDF button.
The WPsigner Signing field must appear as a draw / type / upload pad, not a plain text box. On Formidable 6, WPsigner registers its own field type so Pro does not convert it to text. If you still see a text input, update to 3.2.12+ and hard-refresh the form.
Optional feed (CC emails / title)
Section titled “Optional feed (CC emails / title)”A feed is optional for content signing. Create one only if you need:
- CC emails on the completion / signed-PDF copy (a form field and/or fixed addresses)
- A custom document title
Path: WPsigner → Integrations → Formidable Forms → New Feed
- Select a form that includes the WPsigner Signing field (or a Pro Signature field).
- Set Feed Name, the Formidable Form, and optional CC / document title.
- To copy a form value into CC, set CC email field (see CC emails below).
- Save the feed — you do not need to choose a PDF template for content signing.
If the feed is misconfigured but the form still has a Signing field, WPsigner falls back to automatic content signing.
Submission timing
Section titled “Submission timing”OTP is checked before Formidable stores the entry (frm_validate_entry). Content signing runs after the entry is created (frm_after_create_entry). If PDF generation fails after a valid submit, check debug.log — the Formidable entry may already exist.
WPsigner Signing field + OTP
Section titled “WPsigner Signing field + OTP”The WPsigner Signing field is Draw / Type / Upload on the form (Lite and Pro). It can require a one-time password before submit.
Enable OTP
Section titled “Enable OTP”- Edit the Formidable Form.
- Select the WPsigner Signing field.
- Set OTP verification to Enabled.
- Choose OTP delivery method:
| Method | Requirements |
|---|---|
| Email field on the form | |
| SMS | Phone field + Twilio configured |
| Email + SMS | Both email and phone fields |
| Phone field + WhatsApp configured |
- Save and publish.
Signer experience
Section titled “Signer experience”- User fills the form and provides a signature.
- On submit, an OTP modal appears.
- User enters the 6-digit code.
- After Identity verified, the form submits and the signed PDF is created.
Submit stays blocked until OTP succeeds. Use E.164 phone format for SMS/WhatsApp.
Download the signed PDF
Section titled “Download the signed PDF”After content signing, WPsigner appends a Download Signed PDF button to Formidable’s confirmation message. No merge tag is required on the success text.
Use tags when you want the link in emails, a custom confirmation, or a thank-you page:
| Tag | Output |
|---|---|
[wps_signed_pdf_url] | Direct URL to download the signed PDF |
{inSigner:signed_pdf_url} | Same URL (Fluent-style alias) |
{inSigner:download_button} / [wps_download_button] | HTML button linking to the signed PDF |
Example email body:
<p>Your signed document is ready:</p>{inSigner:download_button}Tags resolve after the signed PDF exists. If Formidable’s confirmation is a redirect to another URL (not the signing page), add a tag on that page or rely on the email.
PDF template + feed
Section titled “PDF template + feed”Use this when you have a fixed PDF (WPsigner template) and want form data mapped into fields, then either open the signing UI or email the request.
Admin page: WPsigner → Integrations → Formidable Forms.
Prerequisites
Section titled “Prerequisites”- WPsigner 3.2.12+
- Formidable Forms Lite or Pro
- A published Formidable Form with name + email fields
- A WPsigner Template with fields placed on the PDF (signature, name, date, text, etc.)
Step 1 — Create a WPsigner PDF template
Section titled “Step 1 — Create a WPsigner PDF template”- Go to WPsigner → New Document.
- Upload your PDF.
- Add a signer (placeholder name/email is fine; the form will replace them).
- Place fields (Signature, Name, Email, Date, Text, etc.).
- On Review, Save as Template.
Step 2 — Create the Formidable Form
Section titled “Step 2 — Create the Formidable Form”Minimum fields:
| Field | Required | Purpose |
|---|---|---|
| Name | Yes | Primary signer name (First / Middle / Last sub-fields are listed) |
| Yes | Primary signer email / signing identity | |
| Company, phone, text, etc. | Optional | Available in Field mapping |
Do not add the WPsigner Signing field if you want PDF template mode. If that field is present, WPsigner treats the form as content signing and skips the PDF template feed path.
Step 3 — Create the feed
Section titled “Step 3 — Create the feed”- Go to WPsigner → Integrations → Formidable Forms.
- Click New Feed (centered modal).
- Configure:
Feed name
Section titled “Feed name”Internal label shown in the feeds list (e.g. NDA — website form).
Formidable Form
Section titled “Formidable Form”Published form that triggers the feed.
CC emails (optional) {#cc-emails-optional}
Section titled “CC emails (optional) {#cc-emails-optional}”The signed-PDF / completion copy can go to extra addresses. Configure this on the same feed used for content signing or for a PDF template.
| Setting | Use when |
|---|---|
| CC email field | The address comes from a Formidable field |
| Additional CC emails | Fixed addresses, comma-separated (office@example.com, manager@example.com) |
You can use both. On submit WPsigner reads the mapped field and adds the fixed list. The field may contain several addresses separated by commas or semicolons. WPsigner does not parse Formidable shortcodes such as [x] in the Additional CC emails box — pick the field in the dropdown instead.
Typical setup:
- Add an Email field to the form (label it something like “CC” if you want).
- Open WPsigner → Integrations → Formidable Forms → the feed.
- Set CC email field to that Email field.
- Save the feed. Submit a test. The address in that field should receive the signed-PDF copy.
Leave both settings empty if you do not need CC.
WPsigner template
Section titled “WPsigner template”PDF template used to create the document.
Document title
Section titled “Document title”Supports merge tags:
| Variable | Replaced with |
|---|---|
{{signer_name}} | Signer name from the form |
{{signer_email}} | Signer email from the form |
{{date}} | Current date |
{{company_name}} | Company name when available |
Example: NDA - {{signer_name}} - {{date}}
Primary signer
Section titled “Primary signer”| Control | Meaning |
|---|---|
| Name field | Formidable field for signer name |
| Email field | Formidable field for signer email |
Both are required. If either is empty or the email is invalid on submit, that feed run is skipped.
Field mapping
Section titled “Field mapping”Map template fields → form fields with two dropdowns (no typing custom.*):
| Side | Source | What you see |
|---|---|---|
| Left | WPsigner template | Human-readable field label |
| Right | Formidable Forms | Form field labels, including Name (First) / (Middle) / (Last) |
Rules:
- Click Add for each row.
- Signature and initials template fields are not listed and are never prefilled — the signer completes them on the signing page.
- Values from the submission are written into the created document before delivery.
After submit
Section titled “After submit”| Option | What happens |
|---|---|
| Open signing page immediately | Document is set to sent, fields are prefilled, no signing email is sent. Formidable confirmation redirects the browser to /insigner/{token}. |
| Send signing request by email | Document is set to sent and each signer receives the signing-request email. No browser redirect to the signing page. |
Feed enabled
Section titled “Feed enabled”When disabled, the feed does not run on submissions.
- Click Save Feed.
Step 4 — Test
Section titled “Step 4 — Test”Open for signing
- Submit the form on the front end.
- You should be redirected to the WPsigner signing page.
- Prefillable fields (name, date, text, etc.) should already be filled.
- Complete Signature (and initials if present).
- Submit the form.
- Check the signer inbox for the signing request.
- Open the link and confirm prefilled fields + empty signature.
Also verify under WPsigner → Documents that the new document exists with status sent.
E2Pdf + feed
Section titled “E2Pdf + feed”Use this when E2Pdf already fills a PDF from the Formidable entry and you want WPsigner to collect the signature.
E2Pdf is not included in WPsigner. Install it separately. If E2Pdf is inactive, the E2Pdf template dropdown is hidden and WPsigner does not load extra front-end scripts.
Full reference (shortcodes, signature placement, every hook, what is not supported): E2Pdf.
Form submitted → E2Pdf fills its template (dataset = Formidable entry ID) → WPsigner stores a copy of that PDF → Empty signature field is added (last page by default) → After submit: open for signing or email the request- Install and activate E2Pdf. Create a template with extension = Formidable and item = your form.
- Map fields inside the E2Pdf builder (not in WPsigner).
- Go to WPsigner → Integrations → Formidable Forms → New Feed.
- Select the form, Name + Email fields, delivery mode, and the E2Pdf template.
- Leave the WPsigner template empty. Field mapping is hidden because E2Pdf already filled the PDF.
- Save and submit a test.
Choose either a WPsigner template or an E2Pdf template on the same feed — not both.
WPsigner does not delete the PDF that E2Pdf saved in uploads. Temp files are removed only after a secure copy is stored.
Developer hook (no feed UI)
Section titled “Developer hook (no feed UI)”To pick an E2Pdf template from code (including when no feed is saved):
add_filter('wps_formidableforms_e2pdf_template_id', function ($template_id, $feed, $entry, $form) { if ($template_id > 0) { return $template_id; } if (!empty($feed['template_id'])) { return 0; // Keep WPsigner PDF-template feeds } return 12; // E2Pdf template ID}, 10, 4);The form still needs Name and Email fields so WPsigner can create the signer.
Integration settings page
Section titled “Integration settings page”WPsigner → Integrations → Formidable Forms
- Connection status and counts
- Feed list (with delivery badges such as Open for signing / Email signing request)
Managing feeds
Section titled “Managing feeds”Edit on the feed card → change settings → Save Feed.
Enable / disable
Section titled “Enable / disable”Toggle on the card.
Delete
Section titled “Delete”Trash icon → confirm. Existing documents are not deleted.
Multiple feeds
Section titled “Multiple feeds”- Multiple PDF feeds on different forms — supported.
- Multiple PDF feeds on the same form — all enabled PDF feeds for that form can run (template mode). Prefer one clear feed per form unless you intentionally want multiple documents.
Confirmation behavior
Section titled “Confirmation behavior”Open signing page immediately
Section titled “Open signing page immediately”WPsigner sets the Formidable confirmation to a redirect (frm_success_filter + frm_redirect_url) to the primary signer’s signing URL.
You do not need a custom Formidable redirect URL for this mode.
Send by email
Section titled “Send by email”Formidable shows its normal confirmation message. Point users to check email if you customize that message.
Content signing
Section titled “Content signing”The signer stays on the form. The confirmation message includes Download Signed PDF. Emails can still use the merge tags.
Use cases
Section titled “Use cases”| Scenario | Recommended setup |
|---|---|
| Kiosk / same-device signing after a form | PDF template feed → Open signing page immediately |
| Remote signer after website form | PDF template feed → Send signing request by email |
| Application form that is the contract | Content signing (WPsigner Signing field on the form) |
| Fixed NDA PDF with company/phone prefilled | PDF template feed + field mapping dropdowns |
| PDF already designed and mapped in E2Pdf | E2Pdf feed (E2Pdf plugin + WPsigner feed) |
Developer hooks
Section titled “Developer hooks”wps_formidableforms_before_process
Section titled “wps_formidableforms_before_process”Fires after the Formidable entry is loaded, before any WPsigner feed runs.
add_action('wps_formidableforms_before_process', function ($entry_id, $form_id, $entry, $form) { // Inspect the submission before WPsigner creates a document}, 10, 4);wps_formidableforms_document_created
Section titled “wps_formidableforms_document_created”Fires after a document is created from a PDF-template feed or an E2Pdf feed.
add_action('wps_formidableforms_document_created', function ($document_id, $entry_id, $entry, $form, $feed) { // Custom logic after document creation}, 10, 5);wps_formidableforms_content_signing_completed
Section titled “wps_formidableforms_content_signing_completed”Fires after inline content signing finishes.
add_action('wps_formidableforms_content_signing_completed', function ($document_id, $signer_id, $entry, $feed) { // Custom logic after content signing}, 10, 4);E2Pdf filters and actions
Section titled “E2Pdf filters and actions”| Hook | Type | Purpose |
|---|---|---|
wps_formidableforms_e2pdf_template_id | filter | Override or supply the E2Pdf template ID ($id, $feed, $entry, $form) |
wps_formidableforms_e2pdf_shortcode | filter | Change the [e2pdf-save … apply="true"] string |
wps_formidableforms_e2pdf_pdf_path | filter | Return a local PDF path to skip generation |
wps_formidableforms_e2pdf_signature_fields | filter | Change empty signature field placement |
wps_formidableforms_e2pdf_generated | action | After a valid PDF path is produced |
wps_formidableforms_e2pdf_document_created | action | After the WPsigner document exists ($document_id, $entry_id, $entry, $form, $feed, $template_id, $pdf_path) |
add_filter('wps_formidableforms_e2pdf_signature_fields', function ($fields, $document_id, $signer_id, $feed, $form, $index) { $fields[0]['page_number'] = 1; $fields[0]['position_x'] = 80; $fields[0]['position_y'] = 640; return $fields;}, 10, 6);Completed documents also fire the generic wps_document_completed and wps_pdf_completed hooks.
Troubleshooting
Section titled “Troubleshooting”| Issue | Cause | Solution |
|---|---|---|
| No document created | Feed disabled or incomplete | Enable feed; set form, WPsigner or E2Pdf template, signer name/email |
| E2Pdf dropdown missing | E2Pdf inactive | Install/activate E2Pdf. WPsigner does not bundle it |
| E2Pdf template created but not in the feed list | Extension is not Formidable, or the template is in the E2Pdf trash | Set extension to Formidable and item to this form. Inactive (not license-activated) templates still appear |
| E2Pdf feed created no PDF | Wrong template, or shortcode returned HTML | Use a Formidable E2Pdf template; check debug.log for [inSigner FormidableE2Pdf] |
| Signature box in the wrong place | Default last-page placement | Filter wps_formidableforms_e2pdf_signature_fields |
| Save blocked: “Please fill in Feed Name and Form” | Missing required fields | Fill Feed Name + Form. For content signing you do not need a template |
| Wrong signer name on the document | Mapped a Username / login field instead of Name | Map the Name field; avoid “Username” |
| Not redirected after submit | Delivery set to email, or feed failed | Use Open signing page immediately; confirm name/email valid |
| No signing email | Delivery set to open-for-signing, or SMTP issue | Use Send signing request by email; check WordPress mail |
| Prefill empty | Field mapping missing or wrong fields | Re-map with dropdowns; set clear Field names on the template |
| Signature already filled | — | Signature/initials are never prefilled by design |
| “Formidable Forms is not installed” | Plugin inactive | Install/activate Formidable Forms Lite or Pro |
| Form submission blocked on OTP | Code missing or expired | Complete OTP; check Twilio / WhatsApp if using SMS |
| Merge tags empty | Used too early | Use in post-submission notifications after content signing succeeds. The on-page download button does not need a tag |
| No download button after signing | Confirmation is a redirect, or PDF failed | Use Formidable’s Show message confirmation; check WPsigner → Documents |
| Pad looks like a text box | Formidable 6 converted the type | Update to 3.2.12+, hard-refresh. The field must stay type insigner_signing |
| “Your entry appears to be blocked spam!” | Formidable scanned the PNG as text | Update to 3.2.12+. That message is from Formidable, not WPsigner. Name / email / message are still checked |
| Rapid tests stop creating docs | Rate limit | Max 10 documents per minute per form |
| CC did not get the signed PDF | Field not mapped, or a Formidable shortcode typed in Additional CC emails | Set CC email field to the form’s Email/CC field. Put only real addresses in Additional CC emails. |
Debug log
Section titled “Debug log”define('WP_DEBUG', true);define('WP_DEBUG_LOG', true);Check wp-content/debug.log for [inSigner FormidableForms] or [inSigner FormidableE2Pdf] entries.
Compatibility
Section titled “Compatibility”| Component | Supported |
|---|---|
| Formidable Forms Lite | Current versions (field hooks frm_available_fields, frm_form_fields) |
| Formidable Forms Pro | All versions (native Signature field accepted) |
| E2Pdf | Optional, not bundled. Detected when active (e2pdf-save / E2Pdf) |
| WPsigner | 3.2.12+ |
| WordPress | 5.8+ |
| PHP | 7.4+ |
Formidable vs Fluent Forms
Section titled “Formidable vs Fluent Forms”| Topic | Formidable Forms | Fluent Forms |
|---|---|---|
| Admin page | WPsigner → Integrations → Formidable Forms | WPsigner → Integrations → Fluent Forms |
| Signing field | WPsigner Signing (Lite + Pro) or native Pro Signature | WPsigner Signing |
| Content signing | Yes (feed optional) | Yes (feed optional) |
| PDF template feeds | Yes | Yes |
| E2Pdf bridge | Yes (optional plugin) | No |
| Document Builder feeds | Not in this release | Yes (addon) |
| OTP | Email, SMS, both, WhatsApp | Email, SMS, both, WhatsApp |
| CC field + extra addresses | Yes | Yes |
| Signed-PDF download | Auto button on success + tags | Tags in confirmation / email |
| Submit hooks | frm_after_create_entry, frm_validate_entry, frm_success_filter, frm_redirect_url | fluentform/submission_inserted, confirmation redirect |
Next steps
Section titled “Next steps”- E2Pdf — Full E2Pdf bridge: setup, shortcodes, hooks, and limits
- Fluent Forms — Same workflows on Fluent Forms
- Gravity Forms — Feed-based Gravity integration
- Contact Form 7 — Same workflows on Contact Form 7
- Creating documents — Document statuses and actions
- Form fields — Field types on templates
- WhatsApp — Deliver signing links via WhatsApp
- REST API — Programmatic integrations