=== Inkslip – Liability Waiver & Release Forms ===
Contributors: lalokupfer
Tags: liability waiver, waiver, release form, digital waiver, e-signature
Requires at least: 6.9
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.0.3
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Liability waivers and release forms people sign on their phone or a counter tablet. Children and guardians, PDF copies, check-in lookup.

== Description ==

Inkslip is a complete digital waiver desk inside WordPress: publish a liability waiver or release form, and people sign it on their own phone or on a tablet at your counter in kiosk mode, which clears itself after every signer. One parent or guardian signs for several children in one go. Every signed waiver is a tamper-evident record: the exact text is frozen as a version, and each record is fingerprinted and chained so a later change can be detected. No form plugin, shop plugin or outside account is needed, and everything stays on your own site.

Built for gyms, yoga and fitness studios, kayak, bike and equipment rental shops, climbing walls, trampoline parks, riding stables, tattoo and piercing studios, camps, schools, volunteer groups, classes, tours and events — anyone who needs every participant to sign a waiver form or a release of liability before they take part.

= Starter waivers =

Pick a ready-made liability waiver template and edit it in plain words: a general activity waiver and release of liability (good for events and classes), a gym and fitness waiver, an equipment rental agreement and waiver, and a photo and video release form. They include assumption of risk, a release, and a hold-harmless sentence.

Starters for particular businesses, each ready to edit: a tattoo consent form (tattoos, piercing and permanent makeup, with aftercare), a medical release form for a child (permission to get a child medical care when the parent cannot be reached), a permission slip for field trips, camps and outings, a hold harmless agreement for anyone using your venue or equipment, a volunteer waiver, a horse riding waiver, and a trampoline park waiver that is also a climbing waiver for bouldering and climbing gyms. Choose the questions to ask (e-mail, phone, date of birth, address, emergency contact, medical notes, photo consent, your own tick-boxes such as "I can swim") and how long a signature stays valid: always, 6 months, 1 year or any number of days.

= Initial each clause, and a health questionnaire =

Tick the sections of your waiver that matter most and the signer types their initials in an "Initial here" box at the end of each one, before they can go on. Add your own yes/no health questions ("Do you have a heart condition?") as a short medical questionnaire: each needs a Yes or a No, and a Yes can ask the person to explain. The initials and the answers are part of the signed record, its fingerprint and the PDF.

= Signed on any phone =

Share a link or print the QR code. The online waiver opens on any phone, one simple step per screen: read, your details, children, sign. People sign with a finger, a pen or the mouse on a smooth signature pad, or type their name instead. Before signing they tick that they have read the waiver and that they agree to sign electronically, then press "Sign and agree". You can also put the electronic waiver on any page with the "Waiver signing form" block or the `[inkslip]` shortcode.

= Kiosk mode for a counter tablet =

Turn any tablet into a waiver kiosk: a big "Tap to sign" screen with your logo. After each person signs it says thank you and resets for the next one, and nothing of the previous signer is ever visible — no back button, no autofill, nothing kept on the tablet. A form left alone clears itself, a staff PIN leaves kiosk mode, and the screen stays awake. Each tablet has its own link that you can disconnect at any time.

= Children and guardians =

A parent or legal guardian signs for themselves and several children at once — a parental consent form and a minor waiver in one signing. Ages are worked out from dates of birth in your time zone. Anyone under the age of majority (18, or 19 or 21 where that is the rule) can only be signed for by an adult, and every child gets their own record, so you find a child by name later.

= Check-in lookup: valid or expired =

At check-in, type a name, an e-mail or a phone number. Each person shows a green "Valid until …", an amber "Expires in 7 days" or a red "Expired". Children show who signed for them. Open any record to see everything, download its PDF, or verify it. Export signed waivers to CSV (formula-safe for spreadsheets).

= A tamper-evident record =

When you publish a waiver, its exact text is frozen as a version; editing it later makes a new version and never changes what people already signed. Every signing is fingerprinted (SHA-256) together with the version's fingerprint and the previous record's fingerprint — a chain. Verify recomputes a record, or the whole chain, and names the exact record that changed or went missing. The record keeps what was agreed and by whom: the signer's details, the drawn or typed signature, the time, the device and (optionally) the IP address.

= PDF copy for every signer =

Each signer gets a waiver PDF by e-mail from your site: the exact text they signed, their answers, the children, the signature, and a record details page with the fingerprints. If your site's e-mail fails, the signing is still saved and the person can download the PDF on the spot. PDFs are made on demand and never left as public files.

= Your data stays on your site =

Waivers, signatures and PDFs live in your own WordPress database. WordPress's personal data export and erase tools work with signed waivers, suggested privacy policy text is included, and you can set a retention period. Unlimited waivers, unlimited signers, unlimited tablets.

= How Inkslip is different =

Most signature plugins add a signature field to a form plugin, or put a pop-up on a shop checkout. Inkslip is the whole waiver flow on its own:

* kiosk mode for a counter tablet that resets between signers;
* one adult signing for several children, with ages from dates of birth;
* a check-in lookup that shows who is valid and who has expired;
* frozen waiver versions and a fingerprinted, chained record with a Verify button;
* a PDF copy e-mailed to every signer;
* no account, no API key and no outside service.

= Privacy and external services =

This plugin does not connect to any external service. It makes no outbound request of any kind: no API, no tracking, no analytics, no fonts or scripts from other sites, no CAPTCHA. Spam is stopped with a single-use form token, a hidden honeypot field, a minimum fill time and a rate limit. The only thing that leaves your site is the signer's PDF copy, sent with your site's own e-mail.

The Waivers screen has one ordinary link, "Get early access", to a page about a possible paid service. Nothing is sent when the screen loads; the page opens in your browser only if you click, and your e-mail address reaches us only if you type it there.

= Third-party code =

* QR code generator library by Project Nayuki (MIT License), included as readable source — `public/vendor/qrcodegen.js`.
* FreeSerif from GNU FreeFont (GNU GPL v3 or later, with the font exception), subset for the PDF copy — `fonts/inkslip-serif.ttf`, licence in `fonts/LICENSE.txt`.

The PDF writer is part of this plugin.

== Installation ==

1. Install and activate Inkslip from Plugins → Add New.
2. Open **Waivers** in the admin menu.
3. Pick a starter waiver, check your business name, logo and colour, and press **Create my waiver**.
4. Copy the link, print the QR code, or open it on a counter tablet. People can sign straight away.

Before you use a waiver with customers, read its text and adapt it to your business — and have a local lawyer look at it.

== Frequently Asked Questions ==

= Is this legally binding? =

Inkslip keeps evidence: the exact text each person signed, who signed, when, on which device, that they agreed to sign electronically, and a fingerprint that shows whether the record changed afterwards. Whether a waiver holds up is decided by local law, its wording and the circumstances, so no software can promise that. The starter texts are a plain-language starting point, not legal advice: have a local lawyer read your waiver before you use it.

= Which devices work? =

Any phone, tablet or computer with a current browser: iPhone and iPad (Safari), Android phones and tablets (Chrome), and desktop browsers. For a counter tablet, an iPad or an Android tablet works well; add the kiosk link to the home screen and use the tablet's own setting to lock it to one app (Guided Access on iPad, screen pinning on Android).

= Can parents sign for children? =

Yes. Switch on "Adults can sign for their children" on the waiver. A parent or legal guardian adds each child with their date of birth and signs once for all of them; every child gets their own record and appears in the check-in lookup.

= Where is the data stored? =

In your WordPress database, in the plugin's own tables. Signatures are stored there too, never as files in your uploads folder. PDFs are generated when someone downloads or is e-mailed one.

= Does it work with my theme? =

Yes. The signing page and the kiosk are complete pages of their own, so a theme cannot break them. The block and the shortcode put the same form inside any page.

= Can I use it at a counter or front desk? =

Yes — that is kiosk mode. Go to Waivers → Counter tablets, add a tablet, choose its waiver and a staff PIN, and open the link on the tablet. It shows "Tap to sign" and resets after every signer.

= Can I change a waiver after people have signed it? =

Yes. Edit it and publish again: that makes a new version. Everyone who signed before keeps the version they signed, and their PDF shows it.

= What about GDPR and personal data? =

Inkslip works with WordPress's own personal data export and erase tools and adds suggested text to your privacy policy. Erasing removes a person's details from their record but keeps its fingerprint, so the chain still verifies. By default, signed waivers are kept for possible legal claims when someone asks for erasure; you can change that in Settings, and set a retention period.

= Does it cost anything? =

No. Waivers, signers, children, counter tablets, the lookup, PDF copies and the CSV export are free and unlimited.

= Is there a paid version? =

Not yet. Everything described here is free and stays free. We are considering an optional paid service that keeps a dated fingerprint of every signing on our servers, so a record changed later on your site would show up, plus text-message links to sign, more locations and staff logins; the "Get early access" link at the foot of the Waivers screen lets you ask to be told if it is built. It is never shown as a notice, and nothing in this plugin is locked behind it.

= My security plugin blocks the REST API. What happens? =

The signing form loads through your site's REST API. If a security plugin blocks it for visitors, the form says so in plain words. Allow addresses starting with `/wp-json/inkslip/` and it works again.

= What happens to signed waivers if I delete the plugin? =

Deactivating keeps everything. Deleting the plugin removes its waivers, its tables and its settings, including signed records — so export them first (Waivers → Signed → Export CSV, and each record's PDF).

== Screenshots ==

1. Customers sign your liability waiver on their own phone: read the waiver, give their details, sign with a finger.
2. Kiosk mode: a tablet at your counter signs one person after another and clears itself after every signer.
3. Check-in lookup: each person shows "Valid until …", "Expires in …" or "Expired", and children show who signed for them.
4. A parent or guardian signs a minor waiver for several children at once.
5. Start from a liability waiver template, then share the link or print the QR code.
6. Every signed waiver is a record you can verify, with a PDF copy for the signer.

== Changelog ==

= 1.0.3 =
* Initials per clause: tick the sections the signer must initial, and an "Initial here" box appears at the end of each one.
* Yes/no health questions in your own words, a short medical questionnaire; a Yes can ask the signer to explain. Both are kept in the signed record, its fingerprint and the PDF.

= 1.0.2 =
* New starter waivers: a tattoo consent form, a medical release form for a child, a permission slip for trips and outings, a hold harmless agreement, a volunteer waiver, a horse riding waiver, and a trampoline park and climbing waiver.
* When WordPress has found a newer version of Inkslip, the plugin's own screens say so, with an Update now button and a link to what is new.
* A "Get early access" link at the foot of the Waivers screen, to hear about a possible paid service. The plugin itself still sends nothing.

= 1.0.1 =
* Screenshots of the plugin on a phone, a counter tablet and the admin screens, with captions.

= 1.0.0 =
* First release: starter waivers, signing on any phone, kiosk mode for a counter tablet, children and guardians, check-in lookup, tamper-evident records with Verify, PDF copies by e-mail, CSV export, privacy tools.

== Upgrade Notice ==

= 1.0.3 =
Initials beside the clauses you choose, and yes/no health questions. Waivers you already published and their signed records are not changed.

= 1.0.2 =
More starter waivers, an Update now button on the plugin's own screens, and an early-access link. Signed records are not changed.

= 1.0.1 =
No change to the plugin itself: the listing now has screenshots.

= 1.0.0 =
First release.
