Waiver Engine lets you build waiver and contract forms in the WordPress
admin, map form fields to coordinate positions on an uploaded PDF template,
and automatically generate filled PDFs when visitors submit the form.
Key features:
WordPress.org (free) package:
The version distributed on WordPress.org is fully functional and includes:
Pro add-on (separate download):
A premium package is available separately (not from WordPress.org) with
additional features:
Integration architecture:
The plugin follows an integration-manager pattern (the same approach used
by WooCommerce add-ons, WPForms, RankMath, and ACF). Each third-party
integration lives in includes/integrations/ and is loaded only when its
host plugin is active. The core plugin has zero knowledge of Amelia tables
when Amelia is not installed.
This plugin only supports PDF 1.4 or PDF/A-1b files with:
If the file cannot be processed, export or print a new PDF using PDF 1.4 or
PDF/A-1b settings and select the converted file instead.
This plugin can connect to third-party services when you enable optional
features. No data is sent unless you configure the feature.
Google reCAPTCHA v3 (optional CAPTCHA)
Used only when you select Google reCAPTCHA v3 under Waivers > Settings
and enable CAPTCHA on a template.
hCaptcha (optional CAPTCHA)
Used only when you select hCaptcha under Waivers > Settings and enable
CAPTCHA on a template.
Waiver Engine implements multiple layers of protection against automated
abuse and bot submissions:
1. WordPress Nonce (CSRF protection)
Every form submission is validated against a standard WordPress nonce
(wp_verify_nonce). Requests without a valid nonce are rejected with HTTP 403.
2. Honeypot Field
A hidden text input is rendered off-screen (CSS position:absolute; left:-9999px)
and labelled with aria-hidden="true". The field must exist and be completely
empty. Bots that auto-fill all inputs will be silently rejected.
3. Timing Check
On page load, the form records a HMAC-SHA256-signed timestamp (using WordPress’s
wp_salt(‘nonce’) as the key). On submission the signature is verified and the
elapsed time is checked: submissions faster than 3 seconds or older than 2 hours
are rejected with HTTP 429. This prevents replay attacks and trivially fast bot
submissions.
4. IP Rate Limiting
A sliding-window rate limiter (implemented using WordPress transients) limits how
many waivers a single IP address can submit within a configurable time window.
Defaults to 5 submissions per 15 minutes. Configurable in Waivers > Settings.
Can be disabled independently if another rate-limiting layer exists.
5. CAPTCHA (optional)
An invisible CAPTCHA challenge can be added to waiver forms for additional
protection. Supported providers:
Configuration steps:
The CAPTCHA toggle defaults to OFF globally. Individual templates also default
to OFF even when a provider is configured, so you can roll out selectively.
Token verification happens entirely server-side via wp_remote_post() to the
provider’s verify endpoint. The secret key is never exposed in browser output.
6. PDF File Cleanup
The PDF File Cleanup tool in Settings lets you permanently delete generated
PDFs older than a chosen number of days. PDFs older than the threshold are
removed from disk; database entry records are preserved. This reduces disk
footprint and limits the blast radius of any hypothetical file-disclosure issue.
Waiver Engine is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by the
Free Software Foundation, either version 2 of the License, or any later
version.
Waiver Engine is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.