
WordPress
Waivers and agreements, sent from your WordPress site.
A booking comes in, a guest needs to sign, and somebody copies an address into another tab. The plugin removes that step, and WordPress tells you who has signed.
What SignSealer is
SignSealer is where waivers, rental agreements and consent forms are written, signed and kept. The plugin lets your WordPress site start them.
Write it once in SignSealer
The document is a template in your SignSealer account: one from the library of waivers and agreements, or your own PDF. A form in SignSealer says who signs it and how they are asked.
Your site starts it
A WooCommerce order, a form submission or a Sign now button sends the customer to sign, with their name, email and booking details already filled in.
You see who signed
They sign on SignSealer's page. The signed PDF, its certificate and its evidence stay in SignSealer; WordPress shows the status on the order or the entry.
What it does
Connect the site once. After that it is a block on a page and a status you can read.
A form on any page
A SignSealer agreement block in the editor, or [signsealer_sign workflow="your-form"] if you prefer a shortcode. Your forms and their shortcodes are listed under SignSealer → Templates so you are not guessing at a name.
Status, without polling
When somebody signs, SignSealer posts to your site and the plugin checks the signature, the freshness and whether it has seen that delivery before. WordPress keeps the id and the status, so a page can say whether a booking's waiver is done.
What happens after it is signed
Every verified delivery fires signsealer_event, and a completed document fires signsealer_document_completed with what its signers answered. Hook either to close a task, unlock a download, mark an order or message a host, or let an Uncanny Automator recipe do it, if you like only when somebody answered Yes. The signature has already been checked before either runs. The hooks, in the docs
Works with the plugins you already use
Each one has a step-by-step guide of its own: every screen by the words on it, what the customer sees, and the questions people ask. Where there is a video, its card links it.
Shops
An order, or a booking in your shop, starts the agreement.
WooCommerce
Mark the products that need an agreement. The customer signs after paying, on ordering, or before payment at checkout, and the order shows it.
How it connects: On each product: tick that it needs an agreement and choose the workflow. The shop's choices are in WooCommerce's own settings, on its SignSealer tab, and the order starts the signing.
- Signed after payment, when the order is placed, or before payment, in a frame on your checkout
- One agreement for each product that needs one, with the order number, product and quantity filled in
- Offered on the thank-you page, in the order email and under My Account
- A blank the order cannot fill is answered on the product, or asked of the customer before they sign
- The classic checkout and the checkout block
See who signed: the order screen and its notes, with orders stored as posts or in WooCommerce’s own tables.
WooCommerce Bookings
A booking you confirm starts its agreement straight away, paid or not, with the date, time, party size and resource filled in.
How it connects: A bookable product marked as needing an agreement, as in WooCommerce. A booking you confirm starts it, paid or not.
- Fills in the booking's date, time, number of people and resource
- Starts as soon as the booking is confirmed, not when it is paid
- Everything the WooCommerce card does: the thank-you page, the order email, My Account
See who signed: the booking’s own screen, and its order.
Forms
A form on your site starts the agreement: signed after it is sent, or before, with the agreement opening over the form.
Gravity Forms
Connect a Gravity form to a SignSealer workflow once. Each submission ends on the signing page, with the person's details already on the agreement.
How it connects: In the form's own settings in Gravity Forms, under SignSealer in its settings menu. Every submission starts the workflow you choose.
- Signed after it is sent: straight to the signing page, or a button in its own confirmation
- Or signed before it is sent: the agreement opens over the form, and only a signed form is sent
- Its fields fill in the agreement; a blank no field answers is typed once, or asked just before signing
- The link texted as well as emailed, with the person's consent, once your business has its own texting number (coming soon)
- Entries Gravity Forms marks as spam start nothing
See who signed: the entry, with a note saying what was sent and what happened.
WPForms
Connect a WPForms form to a SignSealer workflow once, and every submission ends on the signing page with its details already on the agreement.
How it connects: In the WPForms builder's settings, under SignSealer, saved with the form. Every submission starts the workflow you choose.
- Signed after it is sent: straight to the signing page, or a button in its own confirmation
- Or signed before it is sent: the agreement opens over the form, and only a signed form is sent
- Its fields fill in the agreement; a blank no field answers is typed once, or asked just before signing
- The link texted as well as emailed, with the person's consent, once your business has its own texting number (coming soon)
See who signed: the entry, with a note, in WPForms Pro (WPForms Lite keeps no entries).
Fluent Forms
Connect a Fluent form to a SignSealer workflow once, and every submission ends on the signing page with its details already on the agreement.
How it connects: In the form's Settings & Integrations → SignSealer. Every submission starts the workflow you choose.
- Signed after it is sent: straight to the signing page, or a button in its own confirmation
- Or signed before it is sent: the agreement opens over the form, and only a signed form is sent
- Its fields fill in the agreement; a blank no field answers is typed once, or asked just before signing
- The link texted as well as emailed, with the person's consent, once your business has its own texting number (coming soon)
See who signed: the submission, with a line in its log each time the status changes.
Contact Form 7
Connect a Contact Form 7 form to a SignSealer workflow once, and every message sent ends on the signing page.
How it connects: On the form's own SignSealer tab, beside Form, Mail and Messages. Every message sent starts the workflow you choose.
- Signed after it is sent: straight to the signing page, or a button in its own confirmation
- Or signed before it is sent: the agreement opens over the form, and only a signed form is sent
- Its fields fill in the agreement; a blank no field answers is typed once, or asked just before signing
- The link texted as well as emailed, with the person's consent, once your business has its own texting number (coming soon)
- Fields listed by the tag names in the form's editor
See who signed: your SignSealer dashboard (Contact Form 7 keeps no entries).
Formidable Forms
Connect a Formidable form to a SignSealer workflow once, and every submission ends on the signing page with its details already on the agreement.
How it connects: In the form's settings in Formidable, under SignSealer. Every submission starts the workflow you choose.
- Signed after it is sent: straight to the signing page, or a button in its own confirmation
- Or signed before it is sent: the agreement opens over the form, and only a signed form is sent
- Its fields fill in the agreement; a blank no field answers is typed once, or asked just before signing
- The link texted as well as emailed, with the person's consent, once your business has its own texting number (coming soon)
- Only a form somebody submits starts a signing; imported entries start nothing
See who signed: your SignSealer dashboard; Formidable keeps the entry as it always has.
Ninja Forms
Add SignSealer to a Ninja form's Emails & Actions, and every submission ends on the signing page with its details already on the agreement.
How it connects: As a SignSealer action in the form's Emails & Actions, beside its email and success message, switched on and off like them.
- Signed after it is sent: straight to the signing page, or a button in its own confirmation
- Or signed before it is sent: the agreement opens over the form, and only a signed form is sent
- Its fields fill in the agreement; a blank no field answers is typed once, or asked just before signing
- The link texted as well as emailed, with the person's consent, once your business has its own texting number (coming soon)
- Blanks answered with the form's own merge tags
See who signed: your SignSealer dashboard; Ninja Forms keeps the submission as it always has.
SureForms
Connect a SureForms form to a SignSealer workflow once, and every submission ends on the signing page with its details already on the agreement.
How it connects: In the SureForms editor's Form Settings, under SignSealer. Every submission starts the workflow you choose.
- Signed after it is sent: straight to the signing page, or a button in its own confirmation
- Or signed before it is sent: the agreement opens over the form, and only a signed form is sent
- Its fields fill in the agreement; a blank no field answers is typed once, or asked just before signing
- The link texted as well as emailed, with the person's consent, once your business has its own texting number (coming soon)
See who signed: your SignSealer dashboard; SureForms keeps the entry as it always has.
Forminator
Connect a Forminator form to a SignSealer workflow once, and every submission ends on the signing page with its details already on the agreement.
How it connects: On the SignSealer plugin's page for the form: SignSealer → Forms → Open settings. Every submission starts the workflow you choose.
- Signed after it is sent: straight to the signing page, or a button in its own confirmation
- Or signed before it is sent: the agreement opens over the form, and only a signed form is sent
- Its fields fill in the agreement; a blank no field answers is typed once, or asked just before signing
- The link texted as well as emailed, with the person's consent, once your business has its own texting number (coming soon)
- Drafts and submissions Forminator marks as spam start nothing
See who signed: your SignSealer dashboard; Forminator keeps the submission as it always has.
MetForm
Connect a MetForm form to a SignSealer workflow once, and every submission ends on the signing page with its details already on the agreement.
How it connects: On the SignSealer plugin's page for the form: MetForm → Forms → SignSealer, under the form. Every submission starts the workflow you choose.
- Signed after it is sent: straight to the signing page, or a button in its own confirmation
- Or signed before it is sent: the agreement opens over the form, and only a signed form is sent
- Its fields fill in the agreement; a blank no field answers is typed once, or asked just before signing
- The link texted as well as emailed, with the person's consent, once your business has its own texting number (coming soon)
- The free form plugin for sites built with Elementor
See who signed: your SignSealer dashboard; MetForm keeps the entry as it always has.
Everest Forms
Connect an Everest form to a SignSealer workflow once, and every submission ends on the signing page with its details already on the agreement.
How it connects: On the SignSealer plugin's page for the form: Everest Forms → All Forms → SignSealer, under the form. Every submission starts the workflow you choose.
- Signed after it is sent: straight to the signing page, or a button in its own confirmation
- Or signed before it is sent: the agreement opens over the form, and only a signed form is sent
- Its fields fill in the agreement; a blank no field answers is typed once, or asked just before signing
- The link texted as well as emailed, with the person's consent, once your business has its own texting number (coming soon)
- Works whether the form sends with AJAX or reloads the page
See who signed: your SignSealer dashboard; Everest keeps the entry as it always has.
JetFormBuilder
Connect a JetFormBuilder form to a SignSealer workflow once, and every submission ends on the signing page with its details already on the agreement.
How it connects: On the SignSealer plugin's page for the form: JetFormBuilder → Forms → SignSealer, under the form. Every submission starts the workflow you choose.
- Signed after it is sent: straight to the signing page, or a button in its own confirmation
- Or signed before it is sent: the agreement opens over the form, and only a signed form is sent
- Its fields fill in the agreement; a blank no field answers is typed once, or asked just before signing
- The link texted as well as emailed, with the person's consent, once your business has its own texting number (coming soon)
- Works whether the form sends with AJAX or reloads the page
See who signed: your SignSealer dashboard; with Save Form Record, the record is the agreement's reference.
Bookings, appointments and events
A booking starts the agreement, with the booking’s details already on it.
Amelia
Choose the workflow each Amelia service starts, once. Whoever books is emailed the agreement with the service, time, party size, employee and place on it.
How it connects: Under SignSealer → Bookings: choose the workflow each Amelia service starts. A booking saved starts it.
- Fills in the service, the date and time, how many people, the employee and the location
- SignSealer emails the person who booked the link to sign
- A booking saved again starts nothing a second time; a canceled or rejected one starts nothing
See who signed: your SignSealer dashboard.
LatePoint
Choose the workflow each LatePoint service starts, once. Whoever books is emailed the agreement, and LatePoint's confirmation step shows a button to sign it.
How it connects: Under SignSealer → Bookings: choose the workflow each LatePoint service starts. A booking on its booking form, or made by your staff, starts it.
- Fills in the service, the date and time, how many people, the agent and the location
- LatePoint's confirmation step shows a button to sign
- A booking saved again starts nothing a second time
See who signed: your SignSealer dashboard.
Simply Schedule Appointments
Choose the workflow each appointment type starts, once. Whoever books is emailed the agreement with the appointment type, the date and the time already on it.
How it connects: Under SignSealer → Bookings: choose the workflow each appointment type starts. A new booking, or one newly paid for, starts it.
- Fills in the appointment type, the date and the time, in your site's time zone
- The name, email and phone from its booking form, found by the fields' labels
- SignSealer emails the person who booked the link to sign
See who signed: your SignSealer dashboard.
Event Tickets (RSVPs and tickets)
Choose the workflow every RSVP and ticket starts, once. Whoever books is emailed the waiver with the event, date, time, venue and party size already on it.
How it connects: Under SignSealer → Bookings: one row for every ticket and RSVP, and one for any ticket that needs a different workflow. An RSVP, or a ticket once it is paid, starts it.
- One agreement for each ticket in an order, for everyone booked on it
- Fills in the event's name, date, time, venue and organizer, and how many people
- The RSVP's message and the order page show a button to sign
- An RSVP of “not going” starts nothing
See who signed: your SignSealer dashboard.
Events Manager (event bookings)
Choose the workflow every event's bookings start, once. Whoever books is emailed the waiver with the event, date, time, place and spaces already on it.
How it connects: Under SignSealer → Bookings: one row for every event, and one for any event that needs a different workflow. A booking starts it, one waiting for your approval included.
- One agreement for each booking, for the spaces booked
- Fills in the event's name, date, time, location and tickets
- Events Manager's message after booking shows a button to sign
- A rejected or canceled booking starts nothing
See who signed: your SignSealer dashboard.
Booking Calendar
Choose the workflow every booking on your calendar starts, once. Whoever books is emailed the agreement with the date, party size and their details on it.
How it connects: Under SignSealer → Bookings: one row for every booking on the calendar. A new booking starts it, one waiting for your approval included.
- Fills in the date (and the time, for a time slot) and how many people
- The name, email and phone from its booking form
- Booking Calendar's message after booking shows a button to sign
- An edited booking starts nothing a second time
See who signed: your SignSealer dashboard.
FluentBooking
Choose the workflow each event type starts, once. Whoever books a meeting, lesson or session is emailed the agreement with the time, host and place on it.
How it connects: Under SignSealer → Bookings: one row for every event type, and one for any that needs a different workflow. A booking starts it once it is scheduled.
- Fills in the event type, the date and time in the calendar's zone, the host and an in-person place
- FluentBooking's confirmation and receipt page show a button to sign
- A booking waiting for your confirmation or a payment starts once confirmed or paid
- In a group event, each person signs their own
See who signed: your SignSealer dashboard.
MotoPress Hotel Booking
Choose the rental agreement each accommodation type starts, once. Every confirmed guest is emailed it with check-in, check-out, nights and party size on it.
How it connects: Under SignSealer → Bookings: one row for every accommodation type, and one for any type that needs a different rental agreement. A confirmed booking starts it.
- Fills in the check-in date and time, the check-out date, the nights and everybody staying
- Its Booking Confirmed page shows a button to sign
- Confirmed by the guest's email link, by you, or by a payment
- Bookings imported from Airbnb or Booking.com start nothing
See who signed: your SignSealer dashboard.
Bookly
Choose the agreement each Bookly service starts, once. Every customer whose booking is approved is emailed it, with the service, time and staff member on it.
How it connects: Under SignSealer → Bookings: one row for every service, and one for any service that needs a different workflow. An approved booking starts it.
- Fills in the service, the date and time, how many people and the staff member
- The last step of Bookly's booking form shows a button to sign
- A pending booking starts once you approve it, its approve link is followed, or it is paid
- A booking your staff add in Bookly's calendar starts one too
See who signed: your SignSealer dashboard.
Any page
No other plugin needed.
Signing button
A Sign now button on any page, from the block editor or any page builder that runs shortcodes: for walk-ups, a class page, or a form plugin not supported yet.
How it connects: A SignSealer agreement block in the editor, or the [signsealer_sign] shortcode in any page builder that runs shortcodes.
- A Sign now button for any SignSealer form with a public address
- For walk-ups, a class page, or a QR code at the counter
- Or the next step after a form plugin SignSealer does not work with: redirect its confirmation to the page
See who signed: your SignSealer dashboard, and the signsealer_event action for your own code.
Back to your site
After signing, the person is offered the way back to your site: the order they came from, or the page the form was on.
By text, with consentComing soon
Once your business has its own texting number, the link can go by text as well as email: the checkout, or a form, shows a tick box with the consent wording beside the phone number, and a ticked box is recorded as the person's consent before anything is texted. Without a number of your own, no box is shown. Texts go from your business's own toll-free or local number, registered with the carriers under your name.
Signed before it is sent
A form can sign first: pressing its own button opens the agreement over the form, on your page, and the form is sent once it is signed, its entry carrying the signed document. Somebody who does not sign sends nothing.
What the form does not ask
A blank in the agreement that no field answers, such as where it takes place, is answered by you once in the form's settings, or asked of the person on your site just before they sign. The signing never stops on a missing detail.
A button to sign
The link to sign is a button: SignSealer blue, a color of your own, or your theme's own buttons, chosen once under SignSealer → Settings.
Not supported
Elementor Pro Forms. On an Elementor site, MetForm works with the plugin directly. Or set that form's confirmation to redirect to your SignSealer form's public address, or to a page with the signing button. The plugin's Start here page names it if it finds it on your site.
What it will not do
Three limits on purpose. Each one is the reason a signature sent from WordPress is worth something later.
It never draws a signature pad
Signing happens on SignSealer's own pages. A canvas in WordPress posting an image to an API would make every line on the certificate untrue: the certificate says what the signing engine observed, and it cannot observe a drawing that arrived as a form field.
It never stores the evidence
Ids, a status and a link. Restore a six-month-old backup of your site and nothing about any signature changes, because nothing about any signature was there. A record that a shared host can lose is a record that loses a dispute.
It never holds a master key
The connection is OAuth 2.0 with PKCE, scoped to one business, and you end it from your SignSealer account without touching WordPress. There is no credential on the site that reaches a second account.
Connecting a site
Four steps, and the third is the one most plugins make you do by hand.
Install
Add the plugin and activate it. It needs WordPress 6.4 and PHP 7.4, and is tested to WordPress 7.1.
Connect
Open SignSealer → Start here in the WordPress menu, press Connect to SignSealer, sign in, and approve what the site may do. The site gets its own credential, not your password.
Nothing
Connecting registers the webhook endpoint and stores its signing secret for you. There is no address to copy between two screens and no secret to paste.
Choose where
Start here has a card for each integration on your site — an order, a form, a button on a page — with its steps. The document is the one you authored in SignSealer, so its text is the text the certificate commits to.

What a reviewer or an IT lead will ask
Written for the person who has to answer for it, not for the person who installs it.
| Question | Answer |
|---|---|
| What does it send you? | The template you chose, the values filled in, and the signer's name and email. It is listed field by field in the plugin's readme under External services, which the WordPress directory requires. |
| What does it keep on our site? | A document id, a status and a timestamp, and, while an Uncanny Automator recipe uses a form, the wording of that form's questions, until an hour passes without new wording being fetched. A completed document's answers are handed to your own code or recipe and not kept by the plugin; Automator keeps each run in its own log, as it does for every trigger. Deleting the plugin removes what it keeps; it does not touch anything at SignSealer, because that is not the plugin's to delete. |
| Can a fake delivery mark something signed? | No. Every delivery is checked for an HMAC signature over the exact bytes sent, a five-minute freshness window, and whether it has been seen before. A rotation is handled: both signatures are offered and either passing is a pass. |
| Does it slow the site down? | Nothing runs on a page a visitor loads unless it has a job there: the block, the checkout and order pages, a booking or a form whose agreement is signed before it is sent, and, with Contact Form 7, a few lines beside that plugin's own script. The admin lists are cached for five minutes. The plugin's zip is under a quarter of a megabyte, and it has no dependencies. |
| Will it work with WooCommerce? | Yes: after payment, when the order is placed, or before payment, with the checkout refusing to place the order until it is signed. So do WooCommerce Bookings, Amelia, LatePoint, Simply Schedule Appointments, Event Tickets, Events Manager, Booking Calendar, FluentBooking, MotoPress Hotel Booking, Bookly, Gravity Forms, WPForms, Fluent Forms, Contact Form 7, Formidable Forms, Ninja Forms, SureForms, Forminator, MetForm, Everest Forms and JetFormBuilder; the cards under Works with say what each one does. Uncanny Automator can act on a signed document and its answers once it is complete. |

Why it is deliberately thin
Because the alternative is a signature that lives on a shared host.
A signing evidence chain must not depend on a server running thirty other plugins. Everything that makes a signature worth having — consent recorded as its own event before the signature, the document's exact text fingerprinted into every entry, a hash chain that breaks if anything is altered — happens on SignSealer and can be checked afterwards by anybody holding the certificate's code, without an account and without us.
What WordPress keeps is what WordPress is good at: a page, a booking, an order, and a status beside it.
What is on the evidence trail →
One form, four ways to sign
The same agreement can start anywhere.
A form published through the plugin is the same form a member of staff can send by email or text, the same one a visitor can open from a QR code, and the same one that runs on a tablet at a counter. They are not four integrations — they are four doors into one workflow, and everything they produce lands on the same trail with the same certificate.
What it costs
Free to install. You need a SignSealer account, and the free plan is enough to try it.
The plugin is free and open source, licensed GPL-2.0-or-later like WordPress itself. It is a client for a SignSealer account: the free plan covers a small number of documents a month, and the membership is for when that runs out. Nothing about the plugin is a paid add-on.
The plugin
- Version
- 1.17.1
- Price
- Free
- Needs
- WordPress 6.4 and PHP 7.4
- Tested to
- WordPress 7.1
- License
- GPL-2.0-or-later
SignSealer is a product of Mashdun LLC. The plugin is not affiliated with or endorsed by the WordPress Foundation or Automattic.

Ready when the next guest is.
Free for the first 10 agreements a month. No card to start.