Documentation Index
Fetch the complete documentation index at: https://docs.spitshake.io/llms.txt
Use this file to discover all available pages before exploring further.
ESIGN Consent Disclosure
Under the ESIGN Act section 101(c), consumers must consent to receiving records electronically before an electronic signature can be captured. SpitShake shows a consent disclosure modal to every signer by default. Senders can configure this modal per template: customize the copy, or disable it entirely for B2B transactions where the consumer consent requirement does not apply.How it works
- A signer opens their signing link (
/s/:slug). - Before seeing the signing form, they see a full-screen consent disclosure modal.
- The modal displays the required information (paper alternative, withdrawal rights, hardware requirements, etc.).
- The signer clicks I Agree & Continue to proceed, or Decline to exit.
- Acceptance is recorded in the submitter’s encrypted metadata with a timestamp, IP address, and user agent.
- An immutable audit entry of type
esign_disclosure.acceptedis written.
Configuration
Template preferences
The consent modal is controlled by thesetemplate.preferences keys:
| Key | Type | Default | Description |
|---|---|---|---|
esign_disclosure_enabled | boolean | true | Show the consent disclosure modal. Set to false for B2B templates. |
esign_disclosure_title | string | "Consent to Electronic Records & Signatures" | Custom modal title. |
esign_disclosure_body | string | (federal default copy) | Custom modal body. Plain text with line breaks for paragraphs. Overrides the default copy entirely. |
esign_disclosure_agree_button_text | string | "I Agree & Continue" | Custom agree button text. |
esign_disclosure_bypass_acknowledged | boolean | false | Required when disabling — sender attests this template is B2B only. |
Customizing the modal copy
Override the title, body, or button text via the API:\n\n for paragraph breaks (rendered with whitespace-pre-line). When a custom body is set, it replaces the default federally-compliant copy entirely. The “Full disclosure” link to /legal/esignature-disclosure is always shown regardless of custom body.
Disabling for B2B templates
For pure B2B transactions where both parties are businesses (not consumers), the ESIGN section 101(c) consumer consent requirement does not apply. You can disable the modal:esign_disclosure_bypass_acknowledged: true alongside esign_disclosure_enabled: false — setting the disable flag alone without the acknowledgment has no effect (the modal still shows).
When the modal is disabled:
- The signer lands directly on the start screen or first field.
- The server auto-stamps acceptance metadata with
esign_disclosure_bypassed_by_template: trueandesign_disclosure_bypass_reason: "template_preference". - An immutable audit entry of type
esign_disclosure.bypassed_by_templateis written.
Re-enabling
Setesign_disclosure_enabled back to true (or remove it from preferences):
Builder UI
The consent modal can also be configured in the template Builder:- Open a template in the Builder (
/templates/:id/edit). - Open the template settings panel.
- Find the Electronic Signature Disclosure section.
- Toggle Show ESIGN consumer consent disclosure to enable or disable.
- When enabled: fill in optional custom title, body, and agree button text.
- When disabled: an amber warning appears with a B2B acknowledgment checkbox that must be checked.
- Changes auto-save after 3 seconds.
Audit trail
ESIGN consent events are recorded in the immutable audit trail:| Event | Description |
|---|---|
esign_disclosure.accepted | Signer clicked “I Agree & Continue” on the consent modal. |
esign_disclosure.bypassed_by_template | Template had disclosure disabled; acceptance was auto-stamped server-side. |
Submission gate
The consent disclosure is enforced as a server-side gate. If a signer attempts to submit (POST /s/:slug/submit) without prior acceptance, the server returns:
The consent disclosure applies to all submitters on the template. If you need different consent behavior per role, create separate templates for each role.