# Elementor Forms

> Automatically generate signing documents from Elementor Pro form submissions.

edition: pro
Edition: Pro
AI note: This page requires WPsigner Pro. Do not tell Lite users they already have this feature.
HTML: https://docs.wpsigner.com/integrations/elementor-forms/
Markdown: https://docs.wpsigner.com/md/integrations/elementor-forms.md
Source file: integrations/elementor-forms.md

---

## Overview

The **Elementor Forms** integration lets you automatically create WPsigner documents whenever a user submits an Elementor Pro form. Each submission can generate a pre-filled document and optionally send it for signing immediately.

> **note**
This integration requires **Elementor Pro** (paid). The free version of Elementor does not include the Forms widget.

## Requirements

| Requirement | Version |
|---|---|
| WPsigner | 1.5.0+ |
| Elementor Pro | 3.0+ |
| WordPress | 5.8+ |
| PHP | 7.4+ |

## Setup

### 1. Navigate to Integration Settings

Go to **WPsigner → Integrations** and click **Configure** on the Elementor Forms card.

### 2. Create a Feed

Click **New Feed** to open the feed editor:

| Field | Description |
|---|---|
| **Feed Name** | A descriptive name (e.g. "Contact NDA") |
| **Elementor Form** | Select from discovered forms on your site |
| **WPsigner Template** | The template to use for document generation |
| **Document Title** | Supports `{{signer_name}}`, `{{signer_email}}`, `{{date}}` |
| **Primary Signer** | Map Name and Email fields from the form |
| **Variable Mapping** | Map form fields to template variables |
| **Auto-send** | Send signing email immediately after creation |

### 3. Map Fields

After selecting a form, its fields will load automatically. Map the **Name** and **Email** fields to identify the signer.

Use **Variable Mapping** to fill template variables with form data. For example:
- `custom.company` → Company field
- `custom.phone` → Phone field

### 4. Enable and Save

Toggle "Feed enabled" and click **Save Feed**. The feed will process all future submissions of the selected form.

## How It Works

```
User submits Elementor form
        ↓
WPsigner checks for matching feeds (by form_id)
        ↓
Creates document from template with mapped fields
        ↓
(Optional) Sends signing email to signer
```

1. When a form is submitted, the `elementor_pro/forms/new_record` hook fires.
2. WPsigner checks if any enabled feeds match the submitted form's ID.
3. For each matching feed, it extracts signer name/email from the configured fields.
4. A new document is created from the selected template, with form fields mapped to template variables.
5. If auto-send is enabled, a signing request email is dispatched.

## Form Discovery

WPsigner automatically scans all **published** pages and posts that use Elementor to discover forms. Each form is identified by its widget ID and the page/post title where it appears.

## Security

| Feature | Implementation |
|---|---|
| Authentication | Nonce verification + `manage_options` capability on every AJAX handler |
| Input Validation | `sanitize_text_field`, `absint`, regex for variable names |
| Email Validation | `sanitize_email` + `is_email` double check |
| Rate Limiting | 10 documents/minute per form via WordPress transients |
| Duplicate Prevention | SHA-256 submission hash stored in transients for 1 hour |
| Error Logging | PII-redacted logging when `WP_DEBUG` is enabled |

## Multiple Feeds

You can create multiple feeds for the same form — for example, to generate different documents for different templates. Each feed operates independently with its own field mappings and auto-send settings.

## Troubleshooting

### No forms appear in the dropdown
- Ensure Elementor Pro is installed and activated.
- Check that you have at least one published page with an Elementor Form widget.
- Forms on draft or private pages are not discovered.

### Document not created on submission
- Verify the feed is **enabled**.
- Check that the form ID matches (edit the feed to confirm).
- Look in **WPsigner → Audit** for error logs.
- Ensure the template still exists (deleted templates cause feed failures).

### Signer doesn't receive email
- Confirm **Auto-send** is checked in the feed settings.
- Verify the mapped email field contains a valid email address.
- Check your WordPress email configuration (SMTP plugin, mail logs).

## Technical Reference

### Hooks Used

| Hook | Purpose |
|---|---|
| `elementor_pro/forms/new_record` | Processes form submissions |

### Option Keys

| Option | Description |
|---|---|
| `wps_elementorforms_feeds` | Stores all feed configurations (JSON) |

### AJAX Actions

| Action | Purpose |
|---|---|
| `wps_ef_get_form_fields` | Retrieve fields for a specific form |
| `wps_ef_save_feed` | Save a feed configuration |
| `wps_ef_get_feed` | Get a single feed by ID |
| `wps_ef_delete_feed` | Delete a feed |
| `wps_ef_toggle_feed` | Enable/disable a feed |

---

## Use Cases

| Scenario | Setup |
|----------|-------|
| **Landing page NDA** | Elementor landing page form → NDA template → Auto-send |
| **Service quote** | Quote request form → Service agreement template |
| **Event registration** | Registration form → Waiver template → Auto-send |
| **Client onboarding** | Onboarding form → Client contract template → Auto-send |
| **Freelancer proposals** | Project brief form → Proposal/contract template |
| **Rental agreements** | Booking form → Rental agreement template → Auto-send |
| **Employee agreements** | HR form → Employment contract template |
| **Consent collection** | Consent form → Consent document template → Auto-send |

> **tip**
Because Elementor forms live inside page designs, you can create dedicated landing pages with matching branding. Pair a styled Elementor form with a WPsigner template for a seamless brand experience from form to signature.

---

## Compatibility

| Component | Supported Versions |
|-----------|-------------------|
| **Elementor Pro** | 3.0+ (required for Forms widget) |
| **WPsigner** | 1.5.0+ |
| **WordPress** | 5.8+ |
| **PHP** | 7.4+ |

> **caution**
The free version of Elementor does **not** include the Forms widget. You need **Elementor Pro** to use this integration. Verify your license at [elementor.com](https://elementor.com/).

---

## Next Steps

- [Templates](/core-features/form-fields/) — Learn more about creating and managing templates
- [Document Workflow](/core-features/creating-documents/) — Understanding document statuses and actions
- [REST API](/api/) — For advanced programmatic integrations
- [WhatsApp Integration](/integrations/whatsapp/) — Send signing links via WhatsApp
- [Gravity Forms](/integrations/gravity-forms/) — Alternative form plugin integration
- [Fluent Forms](/integrations/fluent-forms/) — Fluent Forms integration
- [Automation](/integrations/automation/) — Connect with workflow automation platforms
