SignatureHub

A simple, secure way to collect electronic signatures. Perfect for waivers, agreements, and multi-party documents.

📝 What is SignatureHub?

SignatureHub is an electronic signature platform that makes it easy to collect legally-binding signatures from one or more people. Whether you need a single signature on a waiver or multiple signatures from parents, coaches, and participants - SignatureHub handles it all.

Each signer receives a unique, secure link. They verify their identity with a code sent to their email or phone, review the document, and sign by typing or drawing their signature. You get notified when everyone has signed.

🔒

Identity Verification

6-digit codes via email or SMS ensure signers are who they say they are

Type or Draw

Signers can type their name or draw their signature on any device

👥

Multi-Party Signing

Collect signatures from multiple people with different roles

📱

Works Everywhere

Mobile-friendly design works on phones, tablets, and desktops

How It Works

The signing process is designed to be quick and painless for signers while maintaining security and legal validity.

1

Create a Request

Use the API or demo interface to create a signature request. Specify the document, signer details, and how they should verify their identity (email, SMS, or both).

2

Share the Signing Link

Each signer receives a unique, secure URL. You can email this directly, embed it in your system, or share it however works best for your workflow.

3

Signer Reviews Document

The signer opens their link and sees the document they're being asked to sign. They can read through it before proceeding.

4

Verify Identity

The signer requests a 6-digit verification code. It's sent to their email or phone instantly. They enter the code to prove they have access to that contact method.

5

Sign the Document

The signer types their full legal name or draws their signature, checks the consent box, and clicks "Sign Document". Done!

6

Get Notified

If you set up a webhook, you'll receive a notification the moment the document is signed. You can also check the status via the API anytime.

🎯 Common Scenarios

Here are some real-world examples of how SignatureHub is used:

Simple

Single Signer Waiver

An adult signing a liability waiver for themselves.

  1. Create a signature request with their name and email
  2. They receive the signing link
  3. They verify with a code sent to their email
  4. They sign and you're done!
Family

Minor with Parent/Guardian

A child participates in an activity, and their parent must sign on their behalf.

  1. Create a package with two signers: the child (as "participant") and parent (as "guardian")
  2. The parent receives a signing link
  3. The signing page shows they're signing for both roles
  4. One signature covers both the participant and guardian roles
Team

Sports Team Registration

A coach registers a team with multiple participants, each needing their own waiver.

  1. Create a package with all participants and the coach
  2. Each person receives their own unique signing link
  3. The coach is designated as "package admin" and can replace signers if needed
  4. Everyone signs independently; you get notified as each person completes
  5. When all have signed, the package is complete
Flexible

Same Person, Multiple Roles

One person is both the rider and owner in an equestrian event.

  1. Add them as a signer twice with different roles but the same email
  2. SignatureHub automatically consolidates them - one signing link, one verification
  3. The signing page shows "Signing as: Rider, Owner"
  4. One signature covers all their roles
Recovery

Replacing a Signer

A guardian can't sign and needs to be replaced with another family member.

  1. The original guardian receives their link but can't/won't sign
  2. The package admin calls the "Replace Signer" API
  3. The old link is instantly invalidated
  4. A new link is generated for the replacement signer
  5. The new person completes the signing

💻 Quick Start: API Example

Here's how to create a simple signature request using the API:

// Create a signature request
POST /api/requests
Headers: {
  "Content-Type": "application/json",
  "X-API-Key": "your-api-key"
}

Body: {
  "documentName": "Liability Waiver",
  "signerName": "John Smith",
  "signerEmail": "john@example.com",
  "documentContent": "<h2>Waiver</h2><p>Terms...</p>"
}

// Response
{
  "referenceCode": "SIG-ABC123",
  "signUrl": "https://your-domain.com/sign/abc123...",
  "status": "pending"
}

Send the signUrl to your signer. When they complete signing, you'll receive a webhook (if configured) or can check the status via the API.

Want to try it? Use the API Console to experiment with the API, or try the Demo page for a simpler interface.

📚 Key Concepts

Single Requests vs. Packages

Single Request: One document, one signer. Use /api/requests.
Package: One document, multiple signers with roles. Use /api/packages. Packages support role consolidation and signer replacement.

Role Consolidation

When multiple signers in a package share the same email address, they're automatically consolidated. They receive one signing link and sign once for all their roles. Great for parents signing as both themselves and for their children.

Package Admin

One signer can be designated as the "package admin" (set isPackageAdmin: true). They can replace signers who refuse or are unable to sign. If not specified, the first signer becomes the admin.

Verification Methods

Signers verify their identity by entering a 6-digit code. You can offer email verification, SMS verification, or both. If you provide both an email and phone for a signer, they can choose which method to use.

Templates

Create reusable document templates with merge variables like {{signerName}}, {{eventDate}}, etc. Templates keep your documents consistent and save time.

Webhooks

Set a callbackUrl when creating a request or package. We'll POST to that URL when signatures are completed, so you can update your system in real-time.

🚀 Ready to Get Started?

Try the demo to see how signing works, or dive into the API console to start integrating.

Try the Demo API Console Read the Docs