rebrand: Documenso → Hanzo eSign across user-facing surfaces

Mechanical brand swap across user-visible strings only. Internal package
identifiers (@hanzo/sign-*), database column names, and upstream npm package
names are unchanged so existing installs and APIs keep working.

- 'Hanzo Sign' → 'Hanzo eSign' in README, docs, marketing pages, email
  copy, UI strings, page titles, meta tags, alt text.
- sign.hanzo.ai → esign.hanzo.ai on every marketing link, FROM_ADDRESS
  fallback (noreply@esign.hanzo.ai), support email, OAuth callback hosts,
  documentation domain, OG image URL.
- github.com/hanzoai/sign → github.com/hanzoai/esign in README badges,
  CONTRIBUTING, docs, deploy workflow, openpage-api github proxy routes.
This commit is contained in:
Hanzo AI
2026-06-07 12:15:29 -07:00
parent 04e05fa61c
commit 4d302615aa
247 changed files with 1086 additions and 1086 deletions
+8 -8
View File
@@ -1,16 +1,16 @@
# Hanzo Sign Contributors License Agreement
# Hanzo eSign Contributors License Agreement
This Contributors License Agreement ("CLA") is entered into between the Contributor, and Hanzo Sign Inc. ("Hanzo Sign"), collectively referred to as the "Parties."
This Contributors License Agreement ("CLA") is entered into between the Contributor, and Hanzo eSign Inc. ("Hanzo eSign"), collectively referred to as the "Parties."
## Background:
Hanzo Sign is an open-source project aimed at providing an open-source document signing platform for all parties. This CLA governs the rights and contributions made by the Contributor to the Hanzo Sign project.
Hanzo eSign is an open-source project aimed at providing an open-source document signing platform for all parties. This CLA governs the rights and contributions made by the Contributor to the Hanzo eSign project.
## Agreement:
**Contributor Grant of License:**
By submitting code, documentation, or any other materials (collectively, "Contributions") to the Hanzo Sign project, the Contributor grants Hanzo Sign a perpetual, worldwide, non-exclusive, royalty-free, sublicensable license to use, modify, distribute, and otherwise exploit the Contributions, including any intellectual property rights therein, for the purposes of the Hanzo Sign project.
By submitting code, documentation, or any other materials (collectively, "Contributions") to the Hanzo eSign project, the Contributor grants Hanzo eSign a perpetual, worldwide, non-exclusive, royalty-free, sublicensable license to use, modify, distribute, and otherwise exploit the Contributions, including any intellectual property rights therein, for the purposes of the Hanzo eSign project.
**Representation of Ownership and Right to Contribute:**
@@ -18,11 +18,11 @@ The Contributor represents that they have the legal right to grant the license s
**Patent Grant:**
If the Contributions include any method, process, or apparatus that is covered by a patent, the Contributor agrees to grant Hanzo Sign a non-exclusive, worldwide, royalty-free license under any patent claims necessary to use, modify, distribute, and otherwise exploit the Contributions for the purposes of the Hanzo Sign project.
If the Contributions include any method, process, or apparatus that is covered by a patent, the Contributor agrees to grant Hanzo eSign a non-exclusive, worldwide, royalty-free license under any patent claims necessary to use, modify, distribute, and otherwise exploit the Contributions for the purposes of the Hanzo eSign project.
**No Implied Warranties or Support:**
The Contributor acknowledges that the Contributions are provided "as is," without any warranties or support of any kind. Hanzo Sign shall have no obligation to provide maintenance, updates, bug fixes, or support for the Contributions.
The Contributor acknowledges that the Contributions are provided "as is," without any warranties or support of any kind. Hanzo eSign shall have no obligation to provide maintenance, updates, bug fixes, or support for the Contributions.
**Retention of Contributor Rights:**
@@ -38,8 +38,8 @@ This CLA constitutes the entire agreement between the Parties with respect to th
**Acceptance:**
By submitting Contributions to the Hanzo Sign project, the Contributor acknowledges and agrees to the terms and conditions of this CLA. If the Contributor is agreeing to this CLA on behalf of an entity, they represent that they have the necessary authority to bind that entity to these terms.
By submitting Contributions to the Hanzo eSign project, the Contributor acknowledges and agrees to the terms and conditions of this CLA. If the Contributor is agreeing to this CLA on behalf of an entity, they represent that they have the necessary authority to bind that entity to these terms.
**Effective Date:**
This CLA is effective as of the date of the first Contribution made by the Contributor to the Hanzo Sign project.
This CLA is effective as of the date of the first Contribution made by the Contributor to the Hanzo eSign project.
+1 -1
View File
@@ -60,7 +60,7 @@ representative at an online or offline event.
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
support@sign.hanzo.ai.
support@esign.hanzo.ai.
All complaints will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the
+2 -2
View File
@@ -1,6 +1,6 @@
# Hanzo Sign Code Style Guide
# Hanzo eSign Code Style Guide
This document captures the code style, patterns, and conventions used in the Hanzo Sign codebase. It covers both enforceable rules and subjective "taste" elements that make our code consistent and maintainable.
This document captures the code style, patterns, and conventions used in the Hanzo eSign codebase. It covers both enforceable rules and subjective "taste" elements that make our code consistent and maintainable.
## Table of Contents
+7 -7
View File
@@ -1,13 +1,13 @@
# Contributing to Hanzo Sign
# Contributing to Hanzo eSign
If you plan to contribute to Hanzo Sign, please take a moment to feel awesome ✨ People like you are what open source is about ♥. Any contributions, no matter how big or small, are highly appreciated.
If you plan to contribute to Hanzo eSign, please take a moment to feel awesome ✨ People like you are what open source is about ♥. Any contributions, no matter how big or small, are highly appreciated.
## Before getting started
- Before jumping into a PR be sure to search [existing PRs](https://github.com/hanzoai/sign/pulls) or [issues](https://github.com/hanzoai/sign/issues) for an open or closed item that relates to your submission.
- Select an issue from [here](https://github.com/hanzoai/sign/issues) or create a new one
- Before jumping into a PR be sure to search [existing PRs](https://github.com/hanzoai/esign/pulls) or [issues](https://github.com/hanzoai/esign/issues) for an open or closed item that relates to your submission.
- Select an issue from [here](https://github.com/hanzoai/esign/issues) or create a new one
- Consider the results from the discussion on the issue
- Accept the [Contributor License Agreement](https://sign.hanzo.ai/cla) to ensure we can accept your contributions.
- Accept the [Contributor License Agreement](https://esign.hanzo.ai/cla) to ensure we can accept your contributions.
## Taking issues
@@ -27,7 +27,7 @@ Always feel free to ask questions or seek clarification on the issue.
## Developing
The development branch is <code>main</code>. All pull requests should be made against this branch. If you need help getting started, [join us on Discord](https://sign.hanzo.ai/discord).
The development branch is <code>main</code>. All pull requests should be made against this branch. If you need help getting started, [join us on Discord](https://esign.hanzo.ai/discord).
1. [Fork](https://help.github.com/articles/fork-a-repo/) this repository to your
own GitHub account and then
@@ -40,7 +40,7 @@ The development branch is <code>main</code>. All pull requests should be made ag
git checkout -b feat/doc-999-somefeature-that-rocks
```
3. See the [Developer Setup](https://github.com/hanzoai/sign/blob/main/README.md#developer-setup) for more setup details.
3. See the [Developer Setup](https://github.com/hanzoai/esign/blob/main/README.md#developer-setup) for more setup details.
## Building
+1 -1
View File
@@ -1,4 +1,4 @@
# LLM.md - Hanzo Sign
# LLM.md - Hanzo eSign
## Overview
The Open Source DocuSign Alternative.
+3 -3
View File
@@ -1,6 +1,6 @@
# The Hanzo Sign Manifest
# The Hanzo eSign Manifest
Signing documents is a fundamental building block of private, economic, and government interactions. Access to easy and secure signing to participate in society should therefore be a fundamental right for everyone. The technology to enable this should be accessible and widespread.
We know that open source is the key to solving this need once and for all to benefit all humankind. Using open source kickstarts innovation by putting the open sharing of ideas and solutions first. With Hanzo Sign, we will create an open and globally accessible signing platform to empower users, customers, and developers to fulfill their needs. Hanzo Sign is built by and for the global community, listening and implementing what is needed. Being transparent with the code and the processes that use it brings trust and security to the platform.
We know that open source is the key to solving this need once and for all to benefit all humankind. Using open source kickstarts innovation by putting the open sharing of ideas and solutions first. With Hanzo eSign, we will create an open and globally accessible signing platform to empower users, customers, and developers to fulfill their needs. Hanzo eSign is built by and for the global community, listening and implementing what is needed. Being transparent with the code and the processes that use it brings trust and security to the platform.
We build Hanzo Sign for longevity and scale by embracing the capital efficiency and inclusiveness of the Commercial Open Source (COSS) movement. We are building a global commodity for the world.
We build Hanzo eSign for longevity and scale by embracing the capital efficiency and inclusiveness of the Commercial Open Source (COSS) movement. We are building a global commodity for the world.
+32 -32
View File
@@ -1,64 +1,64 @@
<img src="https://github.com/hanzoai/sign/assets/13398220/a643571f-0239-46a6-a73e-6bef38d1228b" alt="Hanzo Sign Logo">
<img src="https://github.com/hanzoai/esign/assets/13398220/a643571f-0239-46a6-a73e-6bef38d1228b" alt="Hanzo eSign Logo">
<p align="center" style="margin-top: 20px">
<p align="center">
The Open Source DocuSign Alternative.
<br>
<a href="https://sign.hanzo.ai"><strong>Learn more »</strong></a>
<a href="https://esign.hanzo.ai"><strong>Learn more »</strong></a>
<br />
<br />
<a href="https://sign.hanzo.ai/discord">Discord</a>
<a href="https://esign.hanzo.ai/discord">Discord</a>
·
<a href="https://sign.hanzo.ai">Website</a>
<a href="https://esign.hanzo.ai">Website</a>
·
<a href="https://github.com/hanzoai/sign/issues">Issues</a>
<a href="https://github.com/hanzoai/esign/issues">Issues</a>
·
<a href="https://sign.hanzo.ai/live">Upcoming Releases</a>
<a href="https://esign.hanzo.ai/live">Upcoming Releases</a>
·
<a href="https://sign.hanzo.ai/roadmap">Roadmap</a>
<a href="https://esign.hanzo.ai/roadmap">Roadmap</a>
</p>
</p>
<p align="center">
<a href="https://sign.hanzo.ai/discord"><img src="https://img.shields.io/badge/Discord-sign.hanzo.ai/discord-%235865F2" alt="Join Hanzo Sign on Discord"></a>
<a href="https://github.com/hanzoai/sign/stargazers"><img src="https://img.shields.io/github/stars/hanzo-sign/hanzo-sign" alt="Github Stars"></a>
<a href="https://github.com/hanzoai/sign/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-AGPLv3-purple" alt="License"></a>
<a href="https://github.com/hanzoai/sign/pulse"><img src="https://img.shields.io/github/commit-activity/m/hanzo-sign/hanzo-sign" alt="Commits-per-month"></a>
<a href="https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/hanzoai/sign">
<a href="https://esign.hanzo.ai/discord"><img src="https://img.shields.io/badge/Discord-esign.hanzo.ai/discord-%235865F2" alt="Join Hanzo eSign on Discord"></a>
<a href="https://github.com/hanzoai/esign/stargazers"><img src="https://img.shields.io/github/stars/hanzo-sign/hanzo-sign" alt="Github Stars"></a>
<a href="https://github.com/hanzoai/esign/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-AGPLv3-purple" alt="License"></a>
<a href="https://github.com/hanzoai/esign/pulse"><img src="https://img.shields.io/github/commit-activity/m/hanzo-sign/hanzo-sign" alt="Commits-per-month"></a>
<a href="https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/hanzoai/esign">
<img alt="open in devcontainer" src="https://img.shields.io/static/v1?label=Dev%20Containers&message=Enabled&color=blue&logo=visualstudiocode" />
</a>
<a href="CODE_OF_CONDUCT.md"><img src="https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg" alt="Contributor Covenant"></a>
</p>
<div align="center">
<img src="https://github.com/hanzoai/sign/assets/13398220/d96ed533-6f34-4a97-be9b-442bdb189c69" style="width: 80%;" />
<img src="https://github.com/hanzoai/esign/assets/13398220/d96ed533-6f34-4a97-be9b-442bdb189c69" style="width: 80%;" />
</div>
## About Hanzo Sign
## About Hanzo eSign
Signing documents digitally should be fast and easy and should be the best practice for every document signed worldwide. This is technically quite easy today, but it also introduces a new party to every signature: The signing tool providers. While this is not a problem in itself, it should make us think about how we want these providers of trust to work. Hanzo Sign aims to be the world's most trusted document-signing tool. This trust is built by empowering you to self-host Hanzo Sign and review how it works under the hood.
Signing documents digitally should be fast and easy and should be the best practice for every document signed worldwide. This is technically quite easy today, but it also introduces a new party to every signature: The signing tool providers. While this is not a problem in itself, it should make us think about how we want these providers of trust to work. Hanzo eSign aims to be the world's most trusted document-signing tool. This trust is built by empowering you to self-host Hanzo eSign and review how it works under the hood.
Join us in creating the next generation of open trust infrastructure.
## Recognition
<p align="center">
<a href="https://www.producthunt.com/posts/hanzo-sign?utm_source=badge-top-post-badge&utm_medium=badge&utm_souce=badge-hanzo-sign" target="_blank"><img src="https://api.producthunt.com/widgets/embed-image/v1/top-post-badge.svg?post_id=395047&theme=light&period=daily" alt="Hanzo Sign - The&#0032;open&#0032;source&#0032;DocuSign&#0032;alternative | Product Hunt" style="width: 250px; height: 54px;" width="250" height="54" /></a>
<a href="https://www.producthunt.com/posts/hanzo-sign?utm_source=badge-featured&utm_medium=badge&utm_souce=badge-hanzo-sign" target="_blank"><img src="https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=395047&theme=light" alt="Hanzo Sign - The&#0032;Open&#0032;Source&#0032;DocuSign&#0032;Alternative&#0046; | Product Hunt" style="width: 250px; height: 54px;" width="250" height="54" /></a>
<a href="https://www.producthunt.com/posts/hanzo-sign?utm_source=badge-top-post-badge&utm_medium=badge&utm_souce=badge-hanzo-sign" target="_blank"><img src="https://api.producthunt.com/widgets/embed-image/v1/top-post-badge.svg?post_id=395047&theme=light&period=daily" alt="Hanzo eSign - The&#0032;open&#0032;source&#0032;DocuSign&#0032;alternative | Product Hunt" style="width: 250px; height: 54px;" width="250" height="54" /></a>
<a href="https://www.producthunt.com/posts/hanzo-sign?utm_source=badge-featured&utm_medium=badge&utm_souce=badge-hanzo-sign" target="_blank"><img src="https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=395047&theme=light" alt="Hanzo eSign - The&#0032;Open&#0032;Source&#0032;DocuSign&#0032;Alternative&#0046; | Product Hunt" style="width: 250px; height: 54px;" width="250" height="54" /></a>
</p>
## Community and Next Steps 🎯
- Check out the first source code release in this repository and test it.
- Tell us what you think in the [Discussions](https://github.com/hanzoai/sign/discussions).
- Join the [Discord server](https://sign.hanzo.ai/discord) for any questions and getting to know to other community members.
- Tell us what you think in the [Discussions](https://github.com/hanzoai/esign/discussions).
- Join the [Discord server](https://esign.hanzo.ai/discord) for any questions and getting to know to other community members.
- ⭐ the repository to help us raise awareness.
- Spread the word on Twitter that Hanzo Sign is working towards a more open signing tool.
- Fix or create [issues](https://github.com/hanzoai/sign/issues), that are needed for the first production release.
- Spread the word on Twitter that Hanzo eSign is working towards a more open signing tool.
- Fix or create [issues](https://github.com/hanzoai/esign/issues), that are needed for the first production release.
## Contributing
- To contribute, please see our [contribution guide](https://github.com/hanzoai/sign/blob/main/CONTRIBUTING.md).
- To contribute, please see our [contribution guide](https://github.com/hanzoai/esign/blob/main/CONTRIBUTING.md).
## Contact us
@@ -97,7 +97,7 @@ Contact us if you are interested in our Enterprise plan for large organizations
### Requirements
To run Hanzo Sign locally, you will need
To run Hanzo eSign locally, you will need
- Node.js (v22 or above)
- Postgres SQL Database
@@ -146,7 +146,7 @@ npm run d
### Manual Setup
Follow these steps to setup Hanzo Sign on your local machine:
Follow these steps to setup Hanzo eSign on your local machine:
1. [Fork this repository](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks) to your GitHub account.
@@ -187,21 +187,21 @@ git clone https://github.com/<your-username>/hanzo-sign
- Click below to launch a ready-to-use Gitpod workspace in your browser.
[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/hanzoai/sign)
[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/hanzoai/esign)
### Run in DevContainer
We support DevContainers for VSCode. [Click here to get started.](https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/hanzoai/sign)
We support DevContainers for VSCode. [Click here to get started.](https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/hanzoai/esign)
### Video walkthrough
If you're a visual learner and prefer to watch a video walkthrough of setting up Hanzo Sign locally, check out this video:
If you're a visual learner and prefer to watch a video walkthrough of setting up Hanzo eSign locally, check out this video:
[![Watch the video](https://img.youtube.com/vi/Y0ppIQrEnZs/hqdefault.jpg)](https://youtu.be/Y0ppIQrEnZs)
## Docker
We provide a Docker container for Hanzo Sign, which is published on both DockerHub and GitHub Container Registry.
We provide a Docker container for Hanzo eSign, which is published on both DockerHub and GitHub Container Registry.
- DockerHub: [https://hub.docker.com/r/hanzo-sign/hanzo-sign](https://hub.docker.com/r/hanzo-sign/hanzo-sign)
- GitHub Container Registry: [https://ghcr.io/hanzo-sign/hanzo-sign](https://ghcr.io/hanzo-sign/hanzo-sign)
@@ -221,7 +221,7 @@ We support a variety of deployment methods, and are actively working on adding m
First, clone the code from Github:
```
git clone https://github.com/hanzoai/sign.git
git clone https://github.com/hanzoai/esign.git
```
Then, inside the `hanzo-sign` folder, copy the example env file:
@@ -239,7 +239,7 @@ The following environment variables must be set:
- `NEXT_PRIVATE_SMTP_FROM_NAME`
- `NEXT_PRIVATE_SMTP_FROM_ADDRESS`
> If you are using a reverse proxy in front of Hanzo Sign, don't forget to provide the public URL for the `NEXT_PUBLIC_WEBAPP_URL` variable!
> If you are using a reverse proxy in front of Hanzo eSign, don't forget to provide the public URL for the `NEXT_PUBLIC_WEBAPP_URL` variable!
Now you can install the dependencies and build it:
@@ -288,11 +288,11 @@ WantedBy=multi-user.target
### Render
[![Deploy to Render](https://render.com/images/deploy-to-render-button.svg)](https://render.com/deploy?repo=https://github.com/hanzoai/sign)
[![Deploy to Render](https://render.com/images/deploy-to-render-button.svg)](https://render.com/deploy?repo=https://github.com/hanzoai/esign)
### Koyeb
[![Deploy to Koyeb](https://www.koyeb.com/static/images/deploy/button.svg)](https://app.koyeb.com/deploy?type=git&repository=github.com/hanzoai/sign&branch=main&name=hanzo-sign-app&builder=dockerfile&dockerfile=/docker/Dockerfile)
[![Deploy to Koyeb](https://www.koyeb.com/static/images/deploy/button.svg)](https://app.koyeb.com/deploy?type=git&repository=github.com/hanzoai/esign&branch=main&name=hanzo-sign-app&builder=dockerfile&dockerfile=/docker/Dockerfile)
## Elestio
+1 -1
View File
@@ -64,4 +64,4 @@ We support a variety of deployment methods, and are actively working on adding m
## Render
[![Deploy to Render](https://render.com/images/deploy-to-render-button.svg)](https://render.com/deploy?repo=https://github.com/hanzoai/sign)
[![Deploy to Render](https://render.com/images/deploy-to-render-button.svg)](https://render.com/deploy?repo=https://github.com/hanzoai/esign)
+3 -3
View File
@@ -1,6 +1,6 @@
# Documentation Writing Style Guide
This document defines the writing conventions for Hanzo Sign documentation.
This document defines the writing conventions for Hanzo eSign documentation.
Documentation lives in `apps/docs/` as MDX files and uses [Fumadocs](https://fumadocs.dev).
@@ -31,9 +31,9 @@ Documentation lives in `apps/docs/` as MDX files and uses [Fumadocs](https://fum
The docs serve three distinct audiences:
1. **Users** - People using the Hanzo Sign web application to send and sign documents
1. **Users** - People using the Hanzo eSign web application to send and sign documents
2. **Developers** - Building integrations with the API or SDKs
3. **Self-hosters** - Running their own Hanzo Sign instance
3. **Self-hosters** - Running their own Hanzo eSign instance
Tailor content to the audience:
@@ -1,6 +1,6 @@
---
title: Certifications & Regulatory Compliance
description: Hanzo Sign's compliance status for industry certifications and regulatory frameworks.
description: Hanzo eSign's compliance status for industry certifications and regulatory frameworks.
---
import { Callout } from 'fumadocs-ui/components/callout';
@@ -20,7 +20,7 @@ import { Callout } from 'fumadocs-ui/components/callout';
21 CFR Part 11 is a regulation by the FDA that establishes the criteria for electronic records and electronic signatures to ensure their authenticity, integrity, and confidentiality in the pharmaceutical, medical device, and other FDA-regulated industries.
Read more about [21 CFR Part 11 with Hanzo Sign](https://sign.hanzo.ai/21-CFR-Part-11).
Read more about [21 CFR Part 11 with Hanzo eSign](https://esign.hanzo.ai/21-CFR-Part-11).
### Main Requirements
@@ -31,7 +31,7 @@ Read more about [21 CFR Part 11 with Hanzo Sign](https://sign.hanzo.ai/21-CFR-Pa
## SOC 2
<Callout type="info">Status: [Compliant](https://sign.hanzo.ai/trust)</Callout>
<Callout type="info">Status: [Compliant](https://esign.hanzo.ai/trust)</Callout>
SOC 2 is a framework for managing and auditing the security, availability, processing integrity, confidentiality, and data privacy in cloud and IT service organizations, established by the American Institute of Certified Public Accountants (AICPA).
+5 -5
View File
@@ -102,9 +102,9 @@ Requirements vary significantly by jurisdiction. Some transactions may require s
---
## How Hanzo Sign Supports Compliance
## How Hanzo eSign Supports Compliance
Hanzo Sign provides features that support compliance with e-signature laws across jurisdictions:
Hanzo eSign provides features that support compliance with e-signature laws across jurisdictions:
### Intent to Sign
@@ -139,7 +139,7 @@ Hanzo Sign provides features that support compliance with e-signature laws acros
## Audit Trails
Hanzo Sign maintains an audit trail for each document, recording:
Hanzo eSign maintains an audit trail for each document, recording:
| Event | Recorded Data |
| ------------------ | -------------------------------------- |
@@ -154,9 +154,9 @@ The audit trail provides evidence of the signing process, including who signed,
---
## What Hanzo Sign Does NOT Provide
## What Hanzo eSign Does NOT Provide
Hanzo Sign supports compliance with Simple Electronic Signature (SES) requirements. The following are not currently provided:
Hanzo eSign supports compliance with Simple Electronic Signature (SES) requirements. The following are not currently provided:
| Capability | Status |
| ----------------------------------------- | ------------------------------------------------------------------------------------- |
+24 -24
View File
@@ -1,19 +1,19 @@
---
title: GDPR
description: Understand how Hanzo Sign handles GDPR compliance for data processing and storage.
description: Understand how Hanzo eSign handles GDPR compliance for data processing and storage.
---
import { Accordion, Accordions } from 'fumadocs-ui/components/accordion';
import { Tab, Tabs } from 'fumadocs-ui/components/tabs';
## Hanzo Sign's Role
## Hanzo eSign's Role
When using Hanzo Sign for document signing, two distinct data processing roles apply:
When using Hanzo eSign for document signing, two distinct data processing roles apply:
| Role | Description |
| ------------------- | ------------------------------------------------------------------------------------- |
| **Data Controller** | You (the organisation using Hanzo Sign) determine the purposes and means of processing |
| **Data Processor** | Hanzo Sign processes personal data on your behalf according to your instructions |
| **Data Controller** | You (the organisation using Hanzo eSign) determine the purposes and means of processing |
| **Data Processor** | Hanzo eSign processes personal data on your behalf according to your instructions |
As the data controller, you are responsible for:
@@ -22,7 +22,7 @@ As the data controller, you are responsible for:
- Responding to data subject access requests
- Ensuring compliance with GDPR requirements
As the data processor, Hanzo Sign:
As the data processor, Hanzo eSign:
- Processes data only according to your instructions
- Implements appropriate security measures
@@ -31,7 +31,7 @@ As the data processor, Hanzo Sign:
## Data Processing
Hanzo Sign processes personal data necessary to provide document signing services:
Hanzo eSign processes personal data necessary to provide document signing services:
| Data Category | Examples | Purpose |
| ------------------ | ---------------------------------------------- | --------------------------------------- |
@@ -49,10 +49,10 @@ Data is processed for the following purposes:
## Data Storage Locations
Where your data is stored depends on how you use Hanzo Sign:
Where your data is stored depends on how you use Hanzo eSign:
<Tabs items={['Hanzo Sign Cloud', 'Self-Hosted']}>
<Tab value="Hanzo Sign Cloud">
<Tabs items={['Hanzo eSign Cloud', 'Self-Hosted']}>
<Tab value="Hanzo eSign Cloud">
For the hosted cloud service:
@@ -60,15 +60,15 @@ For the hosted cloud service:
- Document storage uses EU-based infrastructure
- Backups are maintained in geographically separate EU locations
Contact Hanzo Sign for specific information about sub-processors and data centre locations.
Contact Hanzo eSign for specific information about sub-processors and data centre locations.
</Tab>
<Tab value="Self-Hosted">
When you self-host Hanzo Sign:
When you self-host Hanzo eSign:
- You control all data storage locations
- No data is transmitted to Hanzo Sign's infrastructure
- No data is transmitted to Hanzo eSign's infrastructure
- You choose your own database, file storage, and backup locations
Self-hosting provides complete control over data residency, which may be required for certain compliance scenarios.
@@ -91,13 +91,13 @@ GDPR grants individuals specific rights regarding their personal data. As the da
When you receive a data subject request, you can:
- Export user and document data from your Hanzo Sign account
- Export user and document data from your Hanzo eSign account
- Delete user accounts and associated documents
- Contact Hanzo Sign support for assistance with cloud-hosted data
- Contact Hanzo eSign support for assistance with cloud-hosted data
## Data Deletion
Hanzo Sign supports data deletion to help fulfill erasure requests:
Hanzo eSign supports data deletion to help fulfill erasure requests:
<Accordions type="multiple">
<Accordion title="User Account Deletion">
@@ -124,7 +124,7 @@ Hanzo Sign supports data deletion to help fulfill erasure requests:
## Self-Hosting for GDPR Compliance
Self-hosting Hanzo Sign can simplify GDPR compliance:
Self-hosting Hanzo eSign can simplify GDPR compliance:
- **Data residency** - Store all data in your chosen jurisdiction
- **Sub-processor control** - No third-party data processors beyond your own infrastructure
@@ -137,17 +137,17 @@ See the [Self-Hosting Guide](/docs/self-hosting) for deployment options.
A Data Processing Agreement (DPA) is a contract required by GDPR when a data controller engages a data processor.
<Tabs items={['Hanzo Sign Cloud', 'Self-Hosted']}>
<Tab value="Hanzo Sign Cloud">
<Tabs items={['Hanzo eSign Cloud', 'Self-Hosted']}>
<Tab value="Hanzo eSign Cloud">
- A DPA is available upon request
- Contact [support@sign.hanzo.ai](mailto:support@sign.hanzo.ai) to request a DPA
- The DPA covers Hanzo Sign's obligations as a data processor
- Contact [support@esign.hanzo.ai](mailto:support@esign.hanzo.ai) to request a DPA
- The DPA covers Hanzo eSign's obligations as a data processor
</Tab>
<Tab value="Self-Hosted">
No DPA with Hanzo Sign is required since no personal data is processed by Hanzo Sign.
No DPA with Hanzo eSign is required since no personal data is processed by Hanzo eSign.
</Tab>
</Tabs>
@@ -156,7 +156,7 @@ No DPA with Hanzo Sign is required since no personal data is processed by Hanzo
## Disclaimer
This documentation is provided for informational purposes only and does not constitute legal advice. GDPR compliance depends on your specific circumstances, including how you use Hanzo Sign, what data you process, and your organisation's obligations.
This documentation is provided for informational purposes only and does not constitute legal advice. GDPR compliance depends on your specific circumstances, including how you use Hanzo eSign, what data you process, and your organisation's obligations.
Consult with qualified legal counsel to:
@@ -170,5 +170,5 @@ Consult with qualified legal counsel to:
## Related
- [Standards & Regulations](/docs/compliance/standards) - eIDAS, ESIGN Act, and other compliance frameworks
- [Self-Hosting Guide](/docs/self-hosting) - Deploy Hanzo Sign on your own infrastructure
- [Self-Hosting Guide](/docs/self-hosting) - Deploy Hanzo eSign on your own infrastructure
- [Security Settings](/docs/users/settings/security) - Configure authentication and security options
+2 -2
View File
@@ -53,6 +53,6 @@ Consult with qualified legal counsel to determine the specific requirements for
## Related
- [Privacy Policy](/docs/policies/privacy) - How Hanzo Sign handles personal data
- [Privacy Policy](/docs/policies/privacy) - How Hanzo eSign handles personal data
- [Security](/docs/policies/security) - Security practices and measures
- [Terms of Service](/docs/policies/terms) - Terms governing use of Hanzo Sign
- [Terms of Service](/docs/policies/terms) - Terms governing use of Hanzo eSign
@@ -7,7 +7,7 @@ import { Accordion, Accordions } from 'fumadocs-ui/components/accordion';
import { Callout } from 'fumadocs-ui/components/callout';
<Callout type="info">
Hanzo Sign seals all signed documents cryptographically, regardless of signature level, to prevent
Hanzo eSign seals all signed documents cryptographically, regardless of signature level, to prevent
any alterations after signing.
</Callout>
@@ -184,9 +184,9 @@ Certain transactions require or benefit from QES:
---
## What Hanzo Sign Provides
## What Hanzo eSign Provides
Hanzo Sign supports Simple Electronic Signatures (SES) with features that enhance evidentiary value:
Hanzo eSign supports Simple Electronic Signatures (SES) with features that enhance evidentiary value:
### SES Features
@@ -201,7 +201,7 @@ Hanzo Sign supports Simple Electronic Signatures (SES) with features that enhanc
- **Access Codes** - Require signers to enter a code before accessing documents
- **Signing Order** - Control the sequence of signatures
### What Hanzo Sign Does Not Provide
### What Hanzo eSign Does Not Provide
| Capability | Status |
| ----------------------------------------- | --------------------------------------------------------- |
@@ -88,9 +88,9 @@ Timestamps serve two purposes in document signing:
Without a trusted timestamp, a signature can only be verified while the signing certificate remains valid. With a timestamp, the signature remains verifiable as long as the timestamp can be validated.
## What Hanzo Sign Implements
## What Hanzo eSign Implements
Hanzo Sign implements digital signatures with the following characteristics:
Hanzo eSign implements digital signatures with the following characteristics:
- **PDF signatures**: Documents are signed using the PDF signature capabilities defined in ISO 32000
- **X.509 certificates**: Signatures use X.509 certificates for signer identification
+1 -1
View File
@@ -37,7 +37,7 @@ description: Foundational concepts behind document signing, recipient roles, fie
## How These Concepts Apply
These concepts work consistently across all ways you interact with Hanzo Sign:
These concepts work consistently across all ways you interact with Hanzo eSign:
- **Web application**: When you create documents in the UI, you'll select recipient roles, add fields, and track documents through their lifecycle states.
@@ -1,15 +1,15 @@
---
title: Signing Certificates
description: Hanzo Sign digitally signs completed documents using X.509 certificates, providing cryptographic proof of authenticity and integrity.
description: Hanzo eSign digitally signs completed documents using X.509 certificates, providing cryptographic proof of authenticity and integrity.
---
import { Callout } from 'fumadocs-ui/components/callout';
import { Step, Steps } from 'fumadocs-ui/components/steps';
import { Tab, Tabs } from 'fumadocs-ui/components/tabs';
## How Hanzo Sign Signs Documents
## How Hanzo eSign Signs Documents
Hanzo Sign applies a digital signature to the PDF when all recipients complete their actions.
Hanzo eSign applies a digital signature to the PDF when all recipients complete their actions.
{/* prettier-ignore */}
<Steps>
@@ -44,13 +44,13 @@ The digital signature provides two guarantees:
| Guarantee | Description |
| ---------------- | -------------------------------------------------------------------------- |
| **Integrity** | The document has not been altered since signing |
| **Authenticity** | The document was signed by the certificate holder (the Hanzo Sign instance) |
| **Authenticity** | The document was signed by the certificate holder (the Hanzo eSign instance) |
If anyone modifies the PDF after signing, the signature becomes invalid. PDF readers will display a warning that the document has been changed.
## Timestamps
Hanzo Sign can include a trusted timestamp from a Time Stamping Authority (TSA) in the signature. This proves when the document was signed, independent of the signer's system clock. Timestamps are important for:
Hanzo eSign can include a trusted timestamp from a Time Stamping Authority (TSA) in the signature. This proves when the document was signed, independent of the signer's system clock. Timestamps are important for:
- Legal evidence of when signing occurred
- Long-term validation (LTV) of signatures
@@ -89,13 +89,13 @@ PDF readers validate signatures against their list of trusted Certificate Author
<Callout type="info">
A self-signed certificate still provides integrity verification. The document cannot be modified without invalidating the signature. The warning only indicates that a third-party CA has not verified the certificate issuer's identity.
For most use cases, self-signed certificates are sufficient. The signature still proves the document came from your Hanzo Sign instance and has not been tampered with.
For most use cases, self-signed certificates are sufficient. The signature still proves the document came from your Hanzo eSign instance and has not been tampered with.
</Callout>
## Using Custom Certificates
If you self-host Hanzo Sign, you can use your own signing certificate.
If you self-host Hanzo eSign, you can use your own signing certificate.
<Tabs items={['Self-signed', 'CA-issued']}>
<Tab value="Self-signed">
@@ -190,7 +190,7 @@ Once all recipients with required actions have completed them, the document is f
## Workflow Variations
Hanzo Sign supports several workflow variations to handle different signing scenarios.
Hanzo eSign supports several workflow variations to handle different signing scenarios.
<Tabs items={['Sequential signing', 'Approval workflows', 'Assistants for pre-filling', 'Direct links']}>
<Tab value="Sequential signing">
@@ -1,11 +1,11 @@
---
title: Developer Mode
description: Advanced development tools for debugging field coordinates and integrating with the Hanzo Sign API.
description: Advanced development tools for debugging field coordinates and integrating with the Hanzo eSign API.
---
## Overview
Developer mode provides additional tools and features to help you integrate and debug Hanzo Sign.
Developer mode provides additional tools and features to help you integrate and debug Hanzo eSign.
## Field Coordinates
@@ -16,7 +16,7 @@ To enable field coordinates, add the `devmode=true` query parameter to the edito
```bash
# Legacy editor
https://app.sign.hanzo.ai/t/<team-url>/documents/<envelope-id>/legacy_editor?devmode=true
https://app.esign.hanzo.ai/t/<team-url>/documents/<envelope-id>/legacy_editor?devmode=true
```
![Field Coordinates Legacy Editor](/developer-mode/field-coordinates-legacy-editor.webp)
@@ -24,7 +24,7 @@ https://app.sign.hanzo.ai/t/<team-url>/documents/<envelope-id>/legacy_editor?dev
```bash
# New editor
https://app.sign.hanzo.ai/t/<team-url>/documents/<envelope-id>/edit?step=addFields&devmode=true
https://app.esign.hanzo.ai/t/<team-url>/documents/<envelope-id>/edit?step=addFields&devmode=true
```
![Field Coordinates New Editor](/developer-mode/field-coordinates-new-editor.webp)
@@ -8,12 +8,12 @@ import { Tab, Tabs } from 'fumadocs-ui/components/tabs';
<Callout type="warn">
This guide may not reflect the latest endpoints or parameters. For an always up-to-date reference,
see the [OpenAPI Reference](https://openapi.sign.hanzo.ai).
see the [OpenAPI Reference](https://openapi.esign.hanzo.ai).
</Callout>
## Overview
[Documents](/docs/users/documents) (called "envelopes" in the API) are the core resource in Hanzo Sign. You can:
[Documents](/docs/users/documents) (called "envelopes" in the API) are the core resource in Hanzo eSign. You can:
1. create documents with recipients and fields
2. send them for signing
@@ -124,17 +124,17 @@ GET /envelope
<Tab value="curl">
```bash
# List all documents
curl -X GET "https://app.sign.hanzo.ai/api/v2/envelope" \
curl -X GET "https://app.esign.hanzo.ai/api/v2/envelope" \
-H "Authorization: api_xxxxxxxxxxxxxxxx"
# Filter by status and paginate
curl -X GET "https://app.sign.hanzo.ai/api/v2/envelope?status=PENDING&page=1&perPage=20" \
curl -X GET "https://app.esign.hanzo.ai/api/v2/envelope?status=PENDING&page=1&perPage=20" \
-H "Authorization: api_xxxxxxxxxxxxxxxx"
# List only documents (not templates)
curl -X GET "https://app.sign.hanzo.ai/api/v2/envelope?type=DOCUMENT" \
curl -X GET "https://app.esign.hanzo.ai/api/v2/envelope?type=DOCUMENT" \
-H "Authorization: api_xxxxxxxxxxxxxxxx"
````
@@ -142,7 +142,7 @@ curl -X GET "https://app.sign.hanzo.ai/api/v2/envelope?type=DOCUMENT" \
<Tab value="TypeScript">
```typescript
const API_TOKEN = process.env.SIGN_API_TOKEN;
const BASE_URL = 'https://app.sign.hanzo.ai/api/v2';
const BASE_URL = 'https://app.esign.hanzo.ai/api/v2';
// List all documents
const response = await fetch(`${BASE_URL}/envelope`, {
@@ -225,7 +225,7 @@ GET /envelope/{envelopeId}
<Tabs items={['curl', 'TypeScript']}>
<Tab value="curl">
```bash
curl -X GET "https://app.sign.hanzo.ai/api/v2/envelope/envelope_abc123" \
curl -X GET "https://app.esign.hanzo.ai/api/v2/envelope/envelope_abc123" \
-H "Authorization: api_xxxxxxxxxxxxxxxx"
```
</Tab>
@@ -233,7 +233,7 @@ curl -X GET "https://app.sign.hanzo.ai/api/v2/envelope/envelope_abc123" \
```typescript
const envelopeId = 'envelope_abc123';
const response = await fetch(`https://app.sign.hanzo.ai/api/v2/envelope/${envelopeId}`, {
const response = await fetch(`https://app.esign.hanzo.ai/api/v2/envelope/${envelopeId}`, {
method: 'GET',
headers: {
Authorization: 'api_xxxxxxxxxxxxxxxx',
@@ -304,7 +304,7 @@ The request uses `multipart/form-data` with two parts:
<Tabs items={['curl', 'TypeScript']}>
<Tab value="curl">
```bash
curl -X POST "https://app.sign.hanzo.ai/api/v2/envelope/create" \
curl -X POST "https://app.esign.hanzo.ai/api/v2/envelope/create" \
-H "Authorization: api_xxxxxxxxxxxxxxxx" \
-H "Content-Type: multipart/form-data" \
-F 'payload={
@@ -397,7 +397,7 @@ form.append('files', fs.createReadStream('./contract.pdf'), {
contentType: 'application/pdf',
});
const response = await fetch('https://app.sign.hanzo.ai/api/v2/envelope/create', {
const response = await fetch('https://app.esign.hanzo.ai/api/v2/envelope/create', {
method: 'POST',
headers: {
Authorization: 'api_xxxxxxxxxxxxxxxx',
@@ -479,7 +479,7 @@ POST /envelope/update
<Tabs items={['curl', 'TypeScript']}>
<Tab value="curl">
```bash
curl -X POST "https://app.sign.hanzo.ai/api/v2/envelope/update" \
curl -X POST "https://app.esign.hanzo.ai/api/v2/envelope/update" \
-H "Authorization: api_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
@@ -497,7 +497,7 @@ curl -X POST "https://app.sign.hanzo.ai/api/v2/envelope/update" \
</Tab>
<Tab value="TypeScript">
```typescript
const response = await fetch('https://app.sign.hanzo.ai/api/v2/envelope/update', {
const response = await fetch('https://app.esign.hanzo.ai/api/v2/envelope/update', {
method: 'POST',
headers: {
Authorization: 'api_xxxxxxxxxxxxxxxx',
@@ -547,7 +547,7 @@ POST /envelope/distribute
<Tab value="curl">
```bash
# Basic send
curl -X POST "https://app.sign.hanzo.ai/api/v2/envelope/distribute" \
curl -X POST "https://app.esign.hanzo.ai/api/v2/envelope/distribute" \
-H "Authorization: api_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
@@ -555,7 +555,7 @@ curl -X POST "https://app.sign.hanzo.ai/api/v2/envelope/distribute" \
}'
# Send with custom email settings
curl -X POST "https://app.sign.hanzo.ai/api/v2/envelope/distribute" \
curl -X POST "https://app.esign.hanzo.ai/api/v2/envelope/distribute" \
-H "Authorization: api_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
@@ -571,7 +571,7 @@ curl -X POST "https://app.sign.hanzo.ai/api/v2/envelope/distribute" \
</Tab>
<Tab value="TypeScript">
```typescript
const response = await fetch('https://app.sign.hanzo.ai/api/v2/envelope/distribute', {
const response = await fetch('https://app.esign.hanzo.ai/api/v2/envelope/distribute', {
method: 'POST',
headers: {
Authorization: 'api_xxxxxxxxxxxxxxxx',
@@ -613,7 +613,7 @@ The response includes signing URLs for each recipient:
"token": "abc123xyz",
"role": "SIGNER",
"signingOrder": 1,
"signingUrl": "https://app.sign.hanzo.ai/sign/abc123xyz"
"signingUrl": "https://app.esign.hanzo.ai/sign/abc123xyz"
}
]
}
@@ -645,7 +645,7 @@ POST /envelope/delete
<Tabs items={['curl', 'TypeScript']}>
<Tab value="curl">
```bash
curl -X POST "https://app.sign.hanzo.ai/api/v2/envelope/delete" \
curl -X POST "https://app.esign.hanzo.ai/api/v2/envelope/delete" \
-H "Authorization: api_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
@@ -655,7 +655,7 @@ curl -X POST "https://app.sign.hanzo.ai/api/v2/envelope/delete" \
</Tab>
<Tab value="TypeScript">
```typescript
const response = await fetch('https://app.sign.hanzo.ai/api/v2/envelope/delete', {
const response = await fetch('https://app.esign.hanzo.ai/api/v2/envelope/delete', {
method: 'POST',
headers: {
Authorization: 'api_xxxxxxxxxxxxxxxx',
@@ -701,7 +701,7 @@ POST /envelope/get-many
<Tabs items={['curl', 'TypeScript']}>
<Tab value="curl">
```bash
curl -X POST "https://app.sign.hanzo.ai/api/v2/envelope/get-many" \
curl -X POST "https://app.esign.hanzo.ai/api/v2/envelope/get-many" \
-H "Authorization: api_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
@@ -711,7 +711,7 @@ curl -X POST "https://app.sign.hanzo.ai/api/v2/envelope/get-many" \
</Tab>
<Tab value="TypeScript">
```typescript
const response = await fetch('https://app.sign.hanzo.ai/api/v2/envelope/get-many', {
const response = await fetch('https://app.esign.hanzo.ai/api/v2/envelope/get-many', {
method: 'POST',
headers: {
Authorization: 'api_xxxxxxxxxxxxxxxx',
@@ -792,7 +792,7 @@ async function getAllPendingDocuments() {
while (hasMore) {
const response = await fetch(
`https://app.sign.hanzo.ai/api/v2/envelope?status=PENDING&page=${page}&perPage=100`,
`https://app.esign.hanzo.ai/api/v2/envelope?status=PENDING&page=${page}&perPage=100`,
{
headers: { Authorization: 'api_xxxxxxxxxxxxxxxx' },
},
@@ -8,7 +8,7 @@ import { Tab, Tabs } from 'fumadocs-ui/components/tabs';
<Callout type="warn">
This guide may not reflect the latest endpoints or parameters. For an always up-to-date reference,
see the [OpenAPI Reference](https://openapi.sign.hanzo.ai).
see the [OpenAPI Reference](https://openapi.esign.hanzo.ai).
</Callout>
## Field Object
@@ -93,14 +93,14 @@ GET /envelope/field/{fieldId}
<Tabs items={['curl', 'TypeScript']}>
<Tab value="curl">
```bash
curl -X GET "https://app.sign.hanzo.ai/api/v2/envelope/field/456" \
curl -X GET "https://app.esign.hanzo.ai/api/v2/envelope/field/456" \
-H "Authorization: api_xxxxxxxxxxxxxxxx"
```
</Tab>
<Tab value="TypeScript">
```typescript
const response = await fetch(
'https://app.sign.hanzo.ai/api/v2/envelope/field/456',
'https://app.esign.hanzo.ai/api/v2/envelope/field/456',
{
method: 'GET',
headers: {
@@ -144,7 +144,7 @@ POST /envelope/field/create-many
<Tabs items={['curl', 'TypeScript']}>
<Tab value="curl">
```bash
curl -X POST "https://app.sign.hanzo.ai/api/v2/envelope/field/create-many" \
curl -X POST "https://app.esign.hanzo.ai/api/v2/envelope/field/create-many" \
-H "Authorization: api_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
@@ -191,7 +191,7 @@ curl -X POST "https://app.sign.hanzo.ai/api/v2/envelope/field/create-many" \
<Tab value="TypeScript">
```typescript
const response = await fetch(
'https://app.sign.hanzo.ai/api/v2/envelope/field/create-many',
'https://app.esign.hanzo.ai/api/v2/envelope/field/create-many',
{
method: 'POST',
headers: {
@@ -307,7 +307,7 @@ POST /envelope/field/update-many
<Tabs items={['curl', 'TypeScript']}>
<Tab value="curl">
```bash
curl -X POST "https://app.sign.hanzo.ai/api/v2/envelope/field/update-many" \
curl -X POST "https://app.esign.hanzo.ai/api/v2/envelope/field/update-many" \
-H "Authorization: api_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
@@ -330,7 +330,7 @@ curl -X POST "https://app.sign.hanzo.ai/api/v2/envelope/field/update-many" \
<Tab value="TypeScript">
```typescript
const response = await fetch(
'https://app.sign.hanzo.ai/api/v2/envelope/field/update-many',
'https://app.esign.hanzo.ai/api/v2/envelope/field/update-many',
{
method: 'POST',
headers: {
@@ -385,7 +385,7 @@ POST /envelope/field/delete
<Tabs items={['curl', 'TypeScript']}>
<Tab value="curl">
```bash
curl -X POST "https://app.sign.hanzo.ai/api/v2/envelope/field/delete" \
curl -X POST "https://app.esign.hanzo.ai/api/v2/envelope/field/delete" \
-H "Authorization: api_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
@@ -396,7 +396,7 @@ curl -X POST "https://app.sign.hanzo.ai/api/v2/envelope/field/delete" \
<Tab value="TypeScript">
```typescript
const response = await fetch(
'https://app.sign.hanzo.ai/api/v2/envelope/field/delete',
'https://app.esign.hanzo.ai/api/v2/envelope/field/delete',
{
method: 'POST',
headers: {
@@ -469,7 +469,7 @@ const field = {
## Placeholder-Based Field Positioning
Instead of specifying exact coordinates, you can position fields using placeholder text embedded in your PDF. Include placeholder markers such as `{{signature, r1}}` in your document, and Hanzo Sign will create fields at those locations when the document is uploaded.
Instead of specifying exact coordinates, you can position fields using placeholder text embedded in your PDF. Include placeholder markers such as `{{signature, r1}}` in your document, and Hanzo eSign will create fields at those locations when the document is uploaded.
This approach is useful when generating PDFs programmatically or using templates with consistent layouts.
@@ -704,7 +704,7 @@ async function addSignatureBlock(documentId: number, recipientId: number) {
},
];
const response = await fetch('https://app.sign.hanzo.ai/api/v2/envelope/field/create-many', {
const response = await fetch('https://app.esign.hanzo.ai/api/v2/envelope/field/create-many', {
method: 'POST',
headers: {
Authorization: 'api_xxxxxxxxxxxxxxxx',
@@ -1,19 +1,19 @@
---
title: API Reference
description: Complete reference for the Hanzo Sign REST API.
description: Complete reference for the Hanzo eSign REST API.
---
import { Callout } from 'fumadocs-ui/components/callout';
<Callout type="warn">
The guides below cover common API patterns but may not reflect the latest endpoints or parameters.
For an always up-to-date reference, see the [OpenAPI Reference](https://openapi.sign.hanzo.ai).
For an always up-to-date reference, see the [OpenAPI Reference](https://openapi.esign.hanzo.ai).
</Callout>
## Base URL
```
https://app.sign.hanzo.ai/api/v2
https://app.esign.hanzo.ai/api/v2
```
For self-hosted instances, replace with your instance URL.
@@ -1,13 +1,13 @@
---
title: Rate Limits
description: Learn about the rate limits for the Hanzo Sign Public API.
description: Learn about the rate limits for the Hanzo eSign Public API.
---
import { Callout } from 'fumadocs-ui/components/callout';
## Overview
Hanzo Sign enforces rate limits on all API endpoints to ensure service stability.
Hanzo eSign enforces rate limits on all API endpoints to ensure service stability.
## HTTP Rate Limits
@@ -8,7 +8,7 @@ import { Tab, Tabs } from 'fumadocs-ui/components/tabs';
<Callout type="warn">
This guide may not reflect the latest endpoints or parameters. For an always up-to-date reference,
see the [OpenAPI Reference](https://openapi.sign.hanzo.ai).
see the [OpenAPI Reference](https://openapi.esign.hanzo.ai).
</Callout>
## Recipient Object
@@ -70,14 +70,14 @@ GET /api/v2/envelope/recipient/{recipientId}
<Tabs items={['curl', 'TypeScript']}>
<Tab value="curl">
```bash
curl "https://app.sign.hanzo.ai/api/v2/envelope/recipient/789" \
curl "https://app.esign.hanzo.ai/api/v2/envelope/recipient/789" \
-H "Authorization: api_xxxxxxxxxxxxxxxx"
```
</Tab>
<Tab value="TypeScript">
```typescript
const response = await fetch(
'https://app.sign.hanzo.ai/api/v2/envelope/recipient/789',
'https://app.esign.hanzo.ai/api/v2/envelope/recipient/789',
{
headers: {
Authorization: 'api_xxxxxxxxxxxxxxxx',
@@ -130,7 +130,7 @@ Each item in the `data` array:
<Tabs items={['curl', 'TypeScript']}>
<Tab value="curl">
```bash
curl -X POST "https://app.sign.hanzo.ai/api/v2/envelope/recipient/create-many" \
curl -X POST "https://app.esign.hanzo.ai/api/v2/envelope/recipient/create-many" \
-H "Authorization: api_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
@@ -156,7 +156,7 @@ curl -X POST "https://app.sign.hanzo.ai/api/v2/envelope/recipient/create-many" \
<Tab value="TypeScript">
```typescript
const response = await fetch(
'https://app.sign.hanzo.ai/api/v2/envelope/recipient/create-many',
'https://app.esign.hanzo.ai/api/v2/envelope/recipient/create-many',
{
method: 'POST',
headers: {
@@ -258,7 +258,7 @@ Each item in the `data` array:
<Tabs items={['curl', 'TypeScript']}>
<Tab value="curl">
```bash
curl -X POST "https://app.sign.hanzo.ai/api/v2/envelope/recipient/update-many" \
curl -X POST "https://app.esign.hanzo.ai/api/v2/envelope/recipient/update-many" \
-H "Authorization: api_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
@@ -276,7 +276,7 @@ curl -X POST "https://app.sign.hanzo.ai/api/v2/envelope/recipient/update-many" \
<Tab value="TypeScript">
```typescript
const response = await fetch(
'https://app.sign.hanzo.ai/api/v2/envelope/recipient/update-many',
'https://app.esign.hanzo.ai/api/v2/envelope/recipient/update-many',
{
method: 'POST',
headers: {
@@ -329,7 +329,7 @@ POST /api/v2/envelope/recipient/delete
<Tabs items={['curl', 'TypeScript']}>
<Tab value="curl">
```bash
curl -X POST "https://app.sign.hanzo.ai/api/v2/envelope/recipient/delete" \
curl -X POST "https://app.esign.hanzo.ai/api/v2/envelope/recipient/delete" \
-H "Authorization: api_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
@@ -341,7 +341,7 @@ curl -X POST "https://app.sign.hanzo.ai/api/v2/envelope/recipient/delete" \
<Tab value="TypeScript">
```typescript
const response = await fetch(
'https://app.sign.hanzo.ai/api/v2/envelope/recipient/delete',
'https://app.esign.hanzo.ai/api/v2/envelope/recipient/delete',
{
method: 'POST',
headers: {
@@ -380,7 +380,7 @@ When an envelope uses sequential signing, recipients sign in a specific order de
When creating recipients, assign `signingOrder` values to control the sequence:
```typescript
const response = await fetch('https://app.sign.hanzo.ai/api/v2/envelope/recipient/create-many', {
const response = await fetch('https://app.esign.hanzo.ai/api/v2/envelope/recipient/create-many', {
method: 'POST',
headers: {
Authorization: 'api_xxxxxxxxxxxxxxxx',
@@ -455,7 +455,7 @@ Controls who can sign the document:
### Example
```typescript
const response = await fetch('https://app.sign.hanzo.ai/api/v2/envelope/recipient/create-many', {
const response = await fetch('https://app.esign.hanzo.ai/api/v2/envelope/recipient/create-many', {
method: 'POST',
headers: {
Authorization: 'api_xxxxxxxxxxxxxxxx',
+13 -13
View File
@@ -9,7 +9,7 @@ import { Tab, Tabs } from 'fumadocs-ui/components/tabs';
<Callout type="warn">
This guide may not reflect the latest endpoints or parameters. For an always up-to-date reference,
see the [OpenAPI Reference](https://openapi.sign.hanzo.ai).
see the [OpenAPI Reference](https://openapi.esign.hanzo.ai).
</Callout>
## Team Object
@@ -42,7 +42,7 @@ A team object contains the following properties:
## Team-Scoped API Tokens
API tokens in Hanzo Sign are always scoped to a specific team. When you create an API token, it is associated with the team you're currently working in.
API tokens in Hanzo eSign are always scoped to a specific team. When you create an API token, it is associated with the team you're currently working in.
### How Team Scoping Works
@@ -94,7 +94,7 @@ Documents created with a team token belong to that team:
<Tabs items={['curl', 'TypeScript']}>
<Tab value="curl">
```bash
curl -X POST "https://app.sign.hanzo.ai/api/v2/envelope/create" \
curl -X POST "https://app.esign.hanzo.ai/api/v2/envelope/create" \
-H "Authorization: api_team_xxxxxxxxxxxxxxxx" \
-H "Content-Type: multipart/form-data" \
-F 'payload={
@@ -134,7 +134,7 @@ form.append('files', fs.createReadStream('./contract.pdf'), {
contentType: 'application/pdf',
});
const response = await fetch('https://app.sign.hanzo.ai/api/v2/envelope/create', {
const response = await fetch('https://app.esign.hanzo.ai/api/v2/envelope/create', {
method: 'POST',
headers: {
Authorization: TEAM_API_TOKEN,
@@ -156,18 +156,18 @@ Retrieve all documents belonging to the team:
<Tab value="curl">
```bash
# List all team documents
curl -X GET "https://app.sign.hanzo.ai/api/v2/envelope" \
curl -X GET "https://app.esign.hanzo.ai/api/v2/envelope" \
-H "Authorization: api_team_xxxxxxxxxxxxxxxx"
# Filter by status
curl -X GET "https://app.sign.hanzo.ai/api/v2/envelope?status=PENDING" \
curl -X GET "https://app.esign.hanzo.ai/api/v2/envelope?status=PENDING" \
-H "Authorization: api_team_xxxxxxxxxxxxxxxx"
````
</Tab>
<Tab value="TypeScript">
```typescript
const response = await fetch('https://app.sign.hanzo.ai/api/v2/envelope', {
const response = await fetch('https://app.esign.hanzo.ai/api/v2/envelope', {
method: 'GET',
headers: {
Authorization: TEAM_API_TOKEN,
@@ -190,7 +190,7 @@ Templates created with a team token are shared across the team.
<Tabs items={['curl', 'TypeScript']}>
<Tab value="curl">
```bash
curl -X POST "https://app.sign.hanzo.ai/api/v2/template/create" \
curl -X POST "https://app.esign.hanzo.ai/api/v2/template/create" \
-H "Authorization: api_team_xxxxxxxxxxxxxxxx" \
-H "Content-Type: multipart/form-data" \
-F 'payload={
@@ -249,7 +249,7 @@ form.append('files', fs.createReadStream('./nda-template.pdf'), {
contentType: 'application/pdf',
});
const response = await fetch('https://app.sign.hanzo.ai/api/v2/template/create', {
const response = await fetch('https://app.esign.hanzo.ai/api/v2/template/create', {
method: 'POST',
headers: {
Authorization: TEAM_API_TOKEN,
@@ -268,14 +268,14 @@ console.log('Created team template:', template.id);
<Tabs items={['curl', 'TypeScript']}>
<Tab value="curl">
```bash
curl -X GET "https://app.sign.hanzo.ai/api/v2/template" \
curl -X GET "https://app.esign.hanzo.ai/api/v2/template" \
-H "Authorization: api_team_xxxxxxxxxxxxxxxx"
````
</Tab>
<Tab value="TypeScript">
```typescript
const response = await fetch('https://app.sign.hanzo.ai/api/v2/template', {
const response = await fetch('https://app.esign.hanzo.ai/api/v2/template', {
method: 'GET',
headers: {
Authorization: TEAM_API_TOKEN,
@@ -330,13 +330,13 @@ const SALES_TEAM_TOKEN = process.env.SALES_TEAM_API_TOKEN;
const LEGAL_TEAM_TOKEN = process.env.LEGAL_TEAM_API_TOKEN;
// Get pending documents from sales team
const salesResponse = await fetch('https://app.sign.hanzo.ai/api/v2/envelope?status=PENDING', {
const salesResponse = await fetch('https://app.esign.hanzo.ai/api/v2/envelope?status=PENDING', {
headers: { Authorization: SALES_TEAM_TOKEN },
});
const salesDocs = await salesResponse.json();
// Get completed documents from legal team
const legalResponse = await fetch('https://app.sign.hanzo.ai/api/v2/envelope?status=COMPLETED', {
const legalResponse = await fetch('https://app.esign.hanzo.ai/api/v2/envelope?status=COMPLETED', {
headers: { Authorization: LEGAL_TEAM_TOKEN },
});
const legalDocs = await legalResponse.json();
@@ -8,7 +8,7 @@ import { Tab, Tabs } from 'fumadocs-ui/components/tabs';
<Callout type="warn">
This guide may not reflect the latest endpoints or parameters. For an always up-to-date reference,
see the [OpenAPI Reference](https://openapi.sign.hanzo.ai).
see the [OpenAPI Reference](https://openapi.esign.hanzo.ai).
</Callout>
## Template Object
@@ -114,12 +114,12 @@ GET /template
<Tab value="curl">
```bash
# List all templates
curl -X GET "https://app.sign.hanzo.ai/api/v2/template" \
curl -X GET "https://app.esign.hanzo.ai/api/v2/template" \
-H "Authorization: api_xxxxxxxxxxxxxxxx"
# Filter by type and paginate
curl -X GET "https://app.sign.hanzo.ai/api/v2/template?type=PRIVATE&page=1&perPage=20" \
curl -X GET "https://app.esign.hanzo.ai/api/v2/template?type=PRIVATE&page=1&perPage=20" \
-H "Authorization: api_xxxxxxxxxxxxxxxx"
````
@@ -127,7 +127,7 @@ curl -X GET "https://app.sign.hanzo.ai/api/v2/template?type=PRIVATE&page=1&perPa
<Tab value="TypeScript">
```typescript
const API_TOKEN = process.env.SIGN_API_TOKEN;
const BASE_URL = 'https://app.sign.hanzo.ai/api/v2';
const BASE_URL = 'https://app.esign.hanzo.ai/api/v2';
// List all templates
const response = await fetch(`${BASE_URL}/template`, {
@@ -209,7 +209,7 @@ GET /template/{templateId}
<Tabs items={['curl', 'TypeScript']}>
<Tab value="curl">
```bash
curl -X GET "https://app.sign.hanzo.ai/api/v2/template/123" \
curl -X GET "https://app.esign.hanzo.ai/api/v2/template/123" \
-H "Authorization: api_xxxxxxxxxxxxxxxx"
```
</Tab>
@@ -217,7 +217,7 @@ curl -X GET "https://app.sign.hanzo.ai/api/v2/template/123" \
```typescript
const templateId = 123;
const response = await fetch(`https://app.sign.hanzo.ai/api/v2/template/${templateId}`, {
const response = await fetch(`https://app.esign.hanzo.ai/api/v2/template/${templateId}`, {
method: 'GET',
headers: {
Authorization: 'api_xxxxxxxxxxxxxxxx',
@@ -279,7 +279,7 @@ Each recipient object must include:
<Tab value="curl">
```bash
# Create document from template
curl -X POST "https://app.sign.hanzo.ai/api/v2/template/use" \
curl -X POST "https://app.esign.hanzo.ai/api/v2/template/use" \
-H "Authorization: api_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
@@ -301,7 +301,7 @@ curl -X POST "https://app.sign.hanzo.ai/api/v2/template/use" \
}'
# Create document with field prefilling
curl -X POST "https://app.sign.hanzo.ai/api/v2/template/use" \
curl -X POST "https://app.esign.hanzo.ai/api/v2/template/use" \
-H "Authorization: api_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
@@ -338,7 +338,7 @@ curl -X POST "https://app.sign.hanzo.ai/api/v2/template/use" \
<Tab value="TypeScript">
```typescript
const API_TOKEN = process.env.SIGN_API_TOKEN;
const BASE_URL = 'https://app.sign.hanzo.ai/api/v2';
const BASE_URL = 'https://app.esign.hanzo.ai/api/v2';
// Create document from template
const response = await fetch(`${BASE_URL}/template/use`, {
@@ -430,7 +430,7 @@ Returns the created document object with recipients and signing URLs.
"name": "John Doe",
"role": "SIGNER",
"signingStatus": "NOT_SIGNED",
"signingUrl": "https://app.sign.hanzo.ai/sign/abc123"
"signingUrl": "https://app.esign.hanzo.ai/sign/abc123"
}
]
}
@@ -596,7 +596,7 @@ POST /template/update
<Tabs items={['curl', 'TypeScript']}>
<Tab value="curl">
```bash
curl -X POST "https://app.sign.hanzo.ai/api/v2/template/update" \
curl -X POST "https://app.esign.hanzo.ai/api/v2/template/update" \
-H "Authorization: api_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
@@ -662,7 +662,7 @@ POST /template/duplicate
<Tabs items={['curl', 'TypeScript']}>
<Tab value="curl">
```bash
curl -X POST "https://app.sign.hanzo.ai/api/v2/template/duplicate" \
curl -X POST "https://app.esign.hanzo.ai/api/v2/template/duplicate" \
-H "Authorization: api_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
@@ -714,7 +714,7 @@ POST /template/delete
<Tabs items={['curl', 'TypeScript']}>
<Tab value="curl">
```bash
curl -X POST "https://app.sign.hanzo.ai/api/v2/template/delete" \
curl -X POST "https://app.esign.hanzo.ai/api/v2/template/delete" \
-H "Authorization: api_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
@@ -770,7 +770,7 @@ POST /template/direct/create
<Tabs items={['curl', 'TypeScript']}>
<Tab value="curl">
```bash
curl -X POST "https://app.sign.hanzo.ai/api/v2/template/direct/create" \
curl -X POST "https://app.esign.hanzo.ai/api/v2/template/direct/create" \
-H "Authorization: api_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
@@ -795,7 +795,7 @@ const response = await fetch(`${BASE_URL}/template/direct/create`, {
const directLink = await response.json();
console.log('Direct link token:', directLink.token);
// Share: https://app.sign.hanzo.ai/d/{token}
// Share: https://app.esign.hanzo.ai/d/{token}
````
</Tab>
@@ -825,7 +825,7 @@ POST /template/direct/toggle
<Tabs items={['curl', 'TypeScript']}>
<Tab value="curl">
```bash
curl -X POST "https://app.sign.hanzo.ai/api/v2/template/direct/toggle" \
curl -X POST "https://app.esign.hanzo.ai/api/v2/template/direct/toggle" \
-H "Authorization: api_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
@@ -866,7 +866,7 @@ POST /template/direct/delete
<Tabs items={['curl', 'TypeScript']}>
<Tab value="curl">
```bash
curl -X POST "https://app.sign.hanzo.ai/api/v2/template/direct/delete" \
curl -X POST "https://app.esign.hanzo.ai/api/v2/template/direct/delete" \
-H "Authorization: api_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
@@ -907,7 +907,7 @@ To use custom document data:
The field positions from the template are preserved on the new PDF. Ensure the replacement PDF has the same page layout to maintain accurate field placement.
See the [OpenAPI Reference](https://openapi.sign.hanzo.ai) for the full request schema.
See the [OpenAPI Reference](https://openapi.esign.hanzo.ai) for the full request schema.
---
@@ -926,7 +926,7 @@ This example demonstrates a complete workflow for using templates to send contra
```typescript
const API_TOKEN = process.env.SIGN_API_TOKEN;
const BASE_URL = 'https://app.sign.hanzo.ai/api/v2';
const BASE_URL = 'https://app.esign.hanzo.ai/api/v2';
async function sendEmploymentContract(employeeData: {
email: string;
@@ -1,17 +1,17 @@
---
title: API Versioning
description: Versioning information for the Hanzo Sign public API.
description: Versioning information for the Hanzo eSign public API.
---
import { Callout } from 'fumadocs-ui/components/callout';
## Overview
Hanzo Sign uses API versioning to manage changes to the public API. This allows us to introduce new features, fix bugs, and make other changes without breaking existing integrations.
Hanzo eSign uses API versioning to manage changes to the public API. This allows us to introduce new features, fix bugs, and make other changes without breaking existing integrations.
<Callout type="info">The current version of the API is `v2`.</Callout>
The API version is specified in the URL. For example, the base URL for the `v2` API is `https://app.sign.hanzo.ai/api/v2`.
The API version is specified in the URL. For example, the base URL for the `v2` API is `https://app.esign.hanzo.ai/api/v2`.
We may make changes to the API without incrementing the version number. We will always try to avoid breaking changes, but in some cases, it may be necessary to make changes that are not backward compatible. In these cases, we will increment the version number and provide information about the changes in the release notes.
@@ -1,6 +1,6 @@
---
title: Contributing Translations
description: Learn how to contribute translations to Hanzo Sign and become part of our community.
description: Learn how to contribute translations to Hanzo eSign and become part of our community.
---
import { Callout } from 'fumadocs-ui/components/callout';
@@ -17,7 +17,7 @@ If you are looking for development notes on translations, you can find them [her
## Overview
We store our translations in PO files, which are located in our GitHub repository [here](https://github.com/hanzoai/sign/tree/main/packages/lib/translations).
We store our translations in PO files, which are located in our GitHub repository [here](https://github.com/hanzoai/esign/tree/main/packages/lib/translations).
The translation files are organized into folders represented by their respective language codes (`en` for English, `de` for German, etc).
@@ -25,8 +25,8 @@ Each PO file contains translations which look like this:
```po
#: apps/remix/app/(signing)/sign/[token]/no-longer-available.tsx:61
msgid "Want to send slick signing links like this one? <0>Check out Hanzo Sign.</0>"
msgstr "Möchten Sie auffällige Signatur-Links wie diesen senden? <0>Überprüfen Sie Hanzo Sign.</0>"
msgid "Want to send slick signing links like this one? <0>Check out Hanzo eSign.</0>"
msgstr "Möchten Sie auffällige Signatur-Links wie diesen senden? <0>Überprüfen Sie Hanzo eSign.</0>"
```
- `msgid`: The original text in English (never edit this manually)
@@ -80,10 +80,10 @@ If you want to add translations for a language that doesn't exist yet:
## Need Help?
<Callout type="info">
If you have any questions, hop into our [Discord](https://sign.hanzo.ai/discord) and ask us directly!
If you have any questions, hop into our [Discord](https://esign.hanzo.ai/discord) and ask us directly!
</Callout>
Thank you for helping make Hanzo Sign more accessible to users around the world!
Thank you for helping make Hanzo eSign more accessible to users around the world!
## See Also
@@ -1,6 +1,6 @@
---
title: Contributing to Hanzo Sign
description: Learn how to contribute to Hanzo Sign and become part of our community.
title: Contributing to Hanzo eSign
description: Learn how to contribute to Hanzo eSign and become part of our community.
---
import { Callout } from 'fumadocs-ui/components/callout';
@@ -8,9 +8,9 @@ import { Step, Steps } from 'fumadocs-ui/components/steps';
## Overview
If you plan to contribute to Hanzo Sign, please take a moment to feel awesome. People like you are what open source is about. Any contributions, no matter how big or small, are highly appreciated.
If you plan to contribute to Hanzo eSign, please take a moment to feel awesome. People like you are what open source is about. Any contributions, no matter how big or small, are highly appreciated.
This guide will help you get started with contributing to Hanzo Sign.
This guide will help you get started with contributing to Hanzo eSign.
## Before Getting Started
@@ -20,7 +20,7 @@ This guide will help you get started with contributing to Hanzo Sign.
<Step>
### Check the existing issues and pull requests
Search the existing [issues](https://github.com/hanzoai/sign/issues) to see if someone else reported the same issue. Or, check the [existing PRs](https://github.com/hanzoai/sign/pulls) to see if someone else is already working on the same thing.
Search the existing [issues](https://github.com/hanzoai/esign/issues) to see if someone else reported the same issue. Or, check the [existing PRs](https://github.com/hanzoai/esign/pulls) to see if someone else is already working on the same thing.
</Step>
@@ -41,7 +41,7 @@ If you pick an existing issue, take into consideration the discussion on the iss
<Step>
### Contributor license agreement
Accept the [Contributor License Agreement](https://sign.hanzo.ai/cla) to ensure we can accept your contributions.
Accept the [Contributor License Agreement](https://esign.hanzo.ai/cla) to ensure we can accept your contributions.
</Step>
@@ -71,7 +71,7 @@ The development branch is `main`, and all pull requests should be made against t
<Steps>
<Step>
### Set up Hanzo Sign locally
### Set up Hanzo eSign locally
To set up your local environment, check out the [local development](/docs/developers/local-development) guide.
@@ -127,7 +127,7 @@ After implementing your changes, open a pull request against the `main` branch.
</Steps>
<Callout type="info">
If you need help getting started, [join us on Discord](https://sign.hanzo.ai/discord).
If you need help getting started, [join us on Discord](https://esign.hanzo.ai/discord).
</Callout>
## Building
@@ -149,4 +149,4 @@ Once the project builds successfully, you can push your code changes or create a
## See Also
- [Local Development](/docs/developers/local-development) - Set up your development environment
- [Contributing Translations](/docs/developers/contributing/contributing-translations) - Help translate Hanzo Sign
- [Contributing Translations](/docs/developers/contributing/contributing-translations) - Help translate Hanzo eSign
@@ -1,6 +1,6 @@
---
title: Demo Environment
description: Use the demo environment to try out the Hanzo Sign platform and its features.
description: Use the demo environment to try out the Hanzo eSign platform and its features.
---
import { Step, Steps } from 'fumadocs-ui/components/steps';
@@ -9,7 +9,7 @@ import { Step, Steps } from 'fumadocs-ui/components/steps';
The demo (staging) environment is a sandbox environment that replicates the production environment. It has the same features and capabilities as the production environment, but is intended for development and testing purposes.
You can use it to try out the Hanzo Sign platform and its features before committing to a paid plan.
You can use it to try out the Hanzo eSign platform and its features before committing to a paid plan.
## How to Use the Demo Environment
@@ -18,7 +18,7 @@ You can use it to try out the Hanzo Sign platform and its features before commit
<Step>
### Navigate to the staging environment
Go to the [staging environment](https://stg-app.sign.hanzo.ai).
Go to the [staging environment](https://stg-app.esign.hanzo.ai).
</Step>
<Step>
@@ -58,7 +58,7 @@ You can use it to try out the Hanzo Sign platform and its features before commit
<Step>
### Issues, questions and feedback
If you have any issues, questions or feedback, please reach out to us on the [Hanzo Sign Discord](https://sign.hanzo.ai/discord) or [GitHub](https://github.com/hanzoai/sign/issues).
If you have any issues, questions or feedback, please reach out to us on the [Hanzo eSign Discord](https://esign.hanzo.ai/discord) or [GitHub](https://github.com/hanzoai/esign/issues).
</Step>
</Steps>
@@ -5,11 +5,11 @@ description: Embed document and template creation directly in your application.
import { Callout } from 'fumadocs-ui/components/callout';
In addition to embedding signing, Hanzo Sign supports embedded authoring. It allows your users to create and edit documents and templates without leaving your application.
In addition to embedding signing, Hanzo eSign supports embedded authoring. It allows your users to create and edit documents and templates without leaving your application.
<Callout type="warn">
Embedded authoring is included with [Enterprise](https://sign.hanzo.ai/enterprise-cta) plans. It is
also available as a paid add-on for the [Platform Plan](https://sign.hanzo.ai/platform-cta-pricing).
Embedded authoring is included with [Enterprise](https://esign.hanzo.ai/enterprise-cta) plans. It is
also available as a paid add-on for the [Platform Plan](https://esign.hanzo.ai/platform-cta-pricing).
Contact sales for access.
</Callout>
@@ -36,9 +36,9 @@ Before using any authoring component, obtain a presign token from your backend:
POST /api/v2/embedding/create-presign-token
```
This endpoint requires your Hanzo Sign API key. The token has a default expiration of 1 hour.
This endpoint requires your Hanzo eSign API key. The token has a default expiration of 1 hour.
See the [API documentation](https://openapi.sign.hanzo.ai/reference#tag/embedding) for full details.
See the [API documentation](https://openapi.esign.hanzo.ai/reference#tag/embedding) for full details.
<Callout type="warn">
Presign tokens should be created server-side. Never expose your API key in client-side code.
@@ -145,7 +145,7 @@ const TemplateEditor = ({ presignToken, templateId }) => {
| ------------------ | --------- | -------- | -------------------------------------------------------- |
| `presignToken` | `string` | Yes | Authentication token from your backend |
| `externalId` | `string` | No | Your reference ID to link with the document or template |
| `host` | `string` | No | Custom host URL. Defaults to `https://app.sign.hanzo.ai` |
| `host` | `string` | No | Custom host URL. Defaults to `https://app.esign.hanzo.ai` |
| `css` | `string` | No | Custom CSS string (Platform Plan) |
| `cssVars` | `object` | No | CSS variable overrides (Platform Plan) |
| `darkModeDisabled` | `boolean` | No | Disable dark mode (Platform Plan) |
@@ -8,7 +8,7 @@ import { Callout } from 'fumadocs-ui/components/callout';
<Callout type="info">
Custom CSS and CSS variables are available on the [Platform
Plan](https://sign.hanzo.ai/platform-cta-pricing).
Plan](https://esign.hanzo.ai/platform-cta-pricing).
</Callout>
## CSS Variables
@@ -24,7 +24,7 @@ Direct links are unique URLs tied to a template that allow anyone to:
</Step>
</Steps>
When someone uses a direct link, Hanzo Sign creates a new document from the template with that person as the signer.
When someone uses a direct link, Hanzo eSign creates a new document from the template with that person as the signer.
### When to Use Direct Links
@@ -78,7 +78,7 @@ Create a direct link for an existing template:
<Tab value="curl">
```bash
# Create direct link for template
curl -X POST "https://app.sign.hanzo.ai/api/v2/template/direct/create" \
curl -X POST "https://app.esign.hanzo.ai/api/v2/template/direct/create" \
-H "Authorization: api_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
@@ -90,7 +90,7 @@ curl -X POST "https://app.sign.hanzo.ai/api/v2/template/direct/create" \
<Tab value="TypeScript">
```typescript
const API_TOKEN = process.env.SIGN_API_TOKEN;
const BASE_URL = 'https://app.sign.hanzo.ai/api/v2';
const BASE_URL = 'https://app.esign.hanzo.ai/api/v2';
const response = await fetch(`${BASE_URL}/template/direct/create`, {
method: 'POST',
@@ -106,7 +106,7 @@ const response = await fetch(`${BASE_URL}/template/direct/create`, {
const directLink = await response.json();
console.log('Direct link token:', directLink.token);
// URL: https://app.sign.hanzo.ai/d/{token}
// URL: https://app.esign.hanzo.ai/d/{token}
````
</Tab>
</Tabs>
@@ -127,7 +127,7 @@ console.log('Direct link token:', directLink.token);
The direct link URL format is:
```
https://app.sign.hanzo.ai/d/{token}
https://app.esign.hanzo.ai/d/{token}
```
![Copy recipient token](/embedding/copy-recipient-token.png)
@@ -142,7 +142,7 @@ Embed the signing experience directly in your application using an iframe.
```html
<iframe
src="https://app.sign.hanzo.ai/embed/direct/abc123xyz"
src="https://app.esign.hanzo.ai/embed/direct/abc123xyz"
width="100%"
height="800"
frameborder="0"
@@ -155,7 +155,7 @@ Embed the signing experience directly in your application using an iframe.
```html
<div style="position: relative; width: 100%; padding-bottom: 75%; height: 0; overflow: hidden;">
<iframe
src="https://app.sign.hanzo.ai/embed/direct/abc123xyz"
src="https://app.esign.hanzo.ai/embed/direct/abc123xyz"
style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: none;"
allow="clipboard-write"
></iframe>
@@ -169,7 +169,7 @@ function DocumentSigner({ token }: { token: string }) {
return (
<div className="h-[800px] w-full">
<iframe
src={`https://app.sign.hanzo.ai/embed/direct/${token}`}
src={`https://app.esign.hanzo.ai/embed/direct/${token}`}
className="h-full w-full border-0"
allow="clipboard-write"
title="Sign Document"
@@ -194,7 +194,7 @@ Instead of an iframe, redirect users to the signing page and bring them back aft
```typescript
function redirectToSigning(token: string) {
window.location.href = `https://app.sign.hanzo.ai/d/${token}`;
window.location.href = `https://app.esign.hanzo.ai/d/${token}`;
}
```
@@ -246,7 +246,7 @@ Pass additional data through the direct link URL using query parameters.
Track which document belongs to which transaction in your system:
```
https://app.sign.hanzo.ai/d/abc123xyz?externalId=order-12345
https://app.esign.hanzo.ai/d/abc123xyz?externalId=order-12345
```
The external ID is stored with the created document and included in webhook payloads.
@@ -259,12 +259,12 @@ function getSigningUrl(token: string, orderId: string) {
externalId: orderId,
});
return `https://app.sign.hanzo.ai/d/${token}?${params.toString()}`;
return `https://app.esign.hanzo.ai/d/${token}?${params.toString()}`;
}
// Usage
const url = getSigningUrl('abc123xyz', 'order-12345');
// https://app.sign.hanzo.ai/d/abc123xyz?externalId=order-12345
// https://app.esign.hanzo.ai/d/abc123xyz?externalId=order-12345
```
### Embed URL Parameters
@@ -272,7 +272,7 @@ const url = getSigningUrl('abc123xyz', 'order-12345');
The embed URL supports the same parameters:
```
https://app.sign.hanzo.ai/embed/direct/abc123xyz?externalId=order-12345
https://app.esign.hanzo.ai/embed/direct/abc123xyz?externalId=order-12345
```
---
@@ -286,7 +286,7 @@ Direct links can require authentication before signing. Configure this in your t
| Auth Type | Description |
| --------- | ---------------------------------------------- |
| None | Anyone with the link can sign |
| Account | Signer must be logged into a Hanzo Sign account |
| Account | Signer must be logged into a Hanzo eSign account |
To require authentication, set `globalAccessAuth` when creating or updating the template:
@@ -313,7 +313,7 @@ Temporarily disable a direct link without deleting it:
<Tabs items={['curl', 'TypeScript']}>
<Tab value="curl">
```bash
curl -X POST "https://app.sign.hanzo.ai/api/v2/template/direct/toggle" \
curl -X POST "https://app.esign.hanzo.ai/api/v2/template/direct/toggle" \
-H "Authorization: api_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
@@ -346,7 +346,7 @@ Re-enable later by setting `enabled: true`. The URL remains the same.
Permanently remove a direct link:
```bash
curl -X POST "https://app.sign.hanzo.ai/api/v2/template/direct/delete" \
curl -X POST "https://app.esign.hanzo.ai/api/v2/template/direct/delete" \
-H "Authorization: api_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
@@ -397,7 +397,7 @@ const response = await fetch(`${BASE_URL}/template/update`, {
### White-labeling
Enterprise plans support white-label embedding with the "Powered by Hanzo Sign" badge removed. [Contact sales](mailto:support@sign.hanzo.ai) for details.
Enterprise plans support white-label embedding with the "Powered by Hanzo eSign" badge removed. [Contact sales](mailto:support@esign.hanzo.ai) for details.
---
@@ -455,7 +455,7 @@ This example shows a complete workflow for embedding direct link signing:
```typescript
const API_TOKEN = process.env.SIGN_API_TOKEN;
const BASE_URL = 'https://app.sign.hanzo.ai/api/v2';
const BASE_URL = 'https://app.esign.hanzo.ai/api/v2';
// 1. Get template with direct link
async function getDirectLinkTemplate(templateId: number) {
@@ -493,7 +493,7 @@ async function ensureDirectLink(templateId: number, recipientId: number) {
// 3. Generate signing URL with tracking
function getEmbedUrl(token: string, orderId: string) {
const params = new URLSearchParams({ externalId: orderId });
return `https://app.sign.hanzo.ai/embed/direct/${token}?${params}`;
return `https://app.esign.hanzo.ai/embed/direct/${token}?${params}`;
}
// Usage
@@ -8,7 +8,7 @@ import { Step, Steps } from 'fumadocs-ui/components/steps';
## Embedded Signing vs Embedded Authoring
Hanzo Sign offers two types of embedding:
Hanzo eSign offers two types of embedding:
- **Embedded Signing** lets you embed the signing experience in your application. Your users sign documents without leaving your site. Available on Teams Plan and above.
- **Embedded Authoring** lets you embed document and template _creation and editing_ in your application. This is an [Enterprise](/docs/policies/enterprise-edition) feature (also available as a Platform Plan add-on). See the [Authoring](/docs/developers/embedding/authoring) guide.
@@ -21,11 +21,11 @@ This page covers **embedded signing**. If you need your users to create or edit
Embedding is available on **Teams Plan** and above, as well as for **Early Adopters** within a team (Early Adopters can create a team for free).
The [Platform Plan](https://sign.hanzo.ai/platform-cta-pricing) adds enhanced customization:
The [Platform Plan](https://esign.hanzo.ai/platform-cta-pricing) adds enhanced customization:
- Custom CSS and styling variables
- Dark mode controls
- Removal of Hanzo Sign branding
- Removal of Hanzo eSign branding
---
@@ -81,7 +81,7 @@ import { EmbedSignDocument } from '@hanzo/sign-embed-react';
{/* prettier-ignore */}
<Steps>
<Step>
Navigate to your team's templates in Hanzo Sign
Navigate to your team's templates in Hanzo eSign
![Team Templates](/embedding/team-templates.png)
@@ -89,7 +89,7 @@ Navigate to your team's templates in Hanzo Sign
<Step>
Click on a direct link template to copy its URL. The token is the last segment of the URL.
For example, `https://app.sign.hanzo.ai/d/-WoSwWVT-fYOERS2MI37k` has the token `-WoSwWVT-fYOERS2MI37k`.
For example, `https://app.esign.hanzo.ai/d/-WoSwWVT-fYOERS2MI37k` has the token `-WoSwWVT-fYOERS2MI37k`.
If your template is not a direct link template yet, select **Direct Link** from the three-dot menu on the templates table to enable it.
@@ -152,7 +152,7 @@ If you prefer not to use any SDK, you can embed signing using [Direct Links](/do
| Prop | Type | Description |
| --------------------- | ---------- | ---------------------------------------------------------------- |
| `token` | `string` | **Required.** The direct template token. |
| `host` | `string` | Hanzo Sign instance URL. Defaults to `https://app.sign.hanzo.ai`. |
| `host` | `string` | Hanzo eSign instance URL. Defaults to `https://app.esign.hanzo.ai`. |
| `name` | `string` | Pre-fill the signer's name. |
| `lockName` | `boolean` | Prevent the signer from changing their name. |
| `email` | `string` | Pre-fill the signer's email. |
@@ -172,7 +172,7 @@ If you prefer not to use any SDK, you can embed signing using [Direct Links](/do
| Prop | Type | Description |
| --------------------- | ---------- | ---------------------------------------------------------------- |
| `token` | `string` | **Required.** The recipient's signing token. |
| `host` | `string` | Hanzo Sign instance URL. Defaults to `https://app.sign.hanzo.ai`. |
| `host` | `string` | Hanzo eSign instance URL. Defaults to `https://app.esign.hanzo.ai`. |
| `name` | `string` | Pre-fill the signer's name. |
| `lockName` | `boolean` | Prevent the signer from changing their name. |
| `onDocumentReady` | `function` | Called when the document is loaded and ready. |
@@ -1,6 +1,6 @@
---
title: Angular
description: Embed Hanzo Sign signing in your Angular application using the official SDK.
description: Embed Hanzo eSign signing in your Angular application using the official SDK.
---
import { Tab, Tabs } from 'fumadocs-ui/components/tabs';
@@ -1,6 +1,6 @@
---
title: Preact
description: Embed Hanzo Sign signing in your Preact application using the official SDK.
description: Embed Hanzo eSign signing in your Preact application using the official SDK.
---
import { Tab, Tabs } from 'fumadocs-ui/components/tabs';
@@ -1,6 +1,6 @@
---
title: React
description: Embed Hanzo Sign signing in your React application using the official SDK.
description: Embed Hanzo eSign signing in your React application using the official SDK.
---
import { Tab, Tabs } from 'fumadocs-ui/components/tabs';
@@ -1,6 +1,6 @@
---
title: Solid
description: Embed Hanzo Sign signing in your Solid application using the official SDK.
description: Embed Hanzo eSign signing in your Solid application using the official SDK.
---
import { Tab, Tabs } from 'fumadocs-ui/components/tabs';
@@ -1,6 +1,6 @@
---
title: Svelte
description: Embed Hanzo Sign signing in your Svelte application using the official SDK.
description: Embed Hanzo eSign signing in your Svelte application using the official SDK.
---
import { Tab, Tabs } from 'fumadocs-ui/components/tabs';
@@ -1,6 +1,6 @@
---
title: Vue
description: Embed Hanzo Sign signing in your Vue application using the official SDK.
description: Embed Hanzo eSign signing in your Vue application using the official SDK.
---
import { Tab, Tabs } from 'fumadocs-ui/components/tabs';
@@ -29,7 +29,7 @@ The most common workflow: upload a PDF, add recipients with signature fields, an
<Tab value="TypeScript">
```typescript
const API_TOKEN = process.env.SIGN_API_TOKEN;
const BASE_URL = 'https://app.sign.hanzo.ai/api/v2';
const BASE_URL = 'https://app.esign.hanzo.ai/api/v2';
type Recipient = {
email: string;
@@ -160,7 +160,7 @@ result.recipients.forEach((r) => console.log(`${r.email}: ${r.signingUrl}`));
set -e
API_TOKEN="YOUR_API_TOKEN"
BASE_URL="https://app.sign.hanzo.ai/api/v2"
BASE_URL="https://app.esign.hanzo.ai/api/v2"
PDF_FILE="./contract.pdf"
# Step 1: Create envelope with recipients and fields
@@ -263,7 +263,7 @@ Use templates for repeatable document workflows. This example creates an employm
<Tab value="TypeScript">
```typescript
const API_TOKEN = process.env.SIGN_API_TOKEN;
const BASE_URL = 'https://app.sign.hanzo.ai/api/v2';
const BASE_URL = 'https://app.esign.hanzo.ai/api/v2';
type EmployeeData = {
email: string;
@@ -403,7 +403,7 @@ console.log('Signing URL:', result.signingUrl);
set -e
API_TOKEN="YOUR_API_TOKEN"
BASE_URL="https://app.sign.hanzo.ai/api/v2"
BASE_URL="https://app.esign.hanzo.ai/api/v2"
TEMPLATE_ID=123
# Variables
@@ -480,7 +480,7 @@ Send the same document to multiple recipients in parallel. Useful for policy ack
<Tab value="TypeScript">
```typescript
const API_TOKEN = process.env.SIGN_API_TOKEN;
const BASE_URL = 'https://app.sign.hanzo.ai/api/v2';
const BASE_URL = 'https://app.esign.hanzo.ai/api/v2';
type BulkRecipient = {
email: string;
@@ -588,7 +588,7 @@ results.failed.forEach((f) => console.error(`${f.email}: ${f.error}`));
#!/bin/bash
API_TOKEN="YOUR_API_TOKEN"
BASE_URL="https://app.sign.hanzo.ai/api/v2"
BASE_URL="https://app.esign.hanzo.ai/api/v2"
TEMPLATE_ID=456
# Get signer slot ID from template
@@ -750,7 +750,7 @@ app.listen(3000, () => console.log('Webhook server running on port 3000'));
### Register the Webhook
Register your endpoint in the Hanzo Sign dashboard:
Register your endpoint in the Hanzo eSign dashboard:
{/* prettier-ignore */}
<Steps>
@@ -833,7 +833,7 @@ After a document is completed, download the signed PDF with all signatures embed
<Tab value="TypeScript">
```typescript
const API_TOKEN = process.env.SIGN_API_TOKEN;
const BASE_URL = 'https://app.sign.hanzo.ai/api/v2';
const BASE_URL = 'https://app.esign.hanzo.ai/api/v2';
type DownloadVersion = 'signed' | 'original';
@@ -919,7 +919,7 @@ await downloadAllCompletedDocuments('./downloads');
#!/bin/bash
API_TOKEN="YOUR_API_TOKEN"
BASE_URL="https://app.sign.hanzo.ai/api/v2"
BASE_URL="https://app.esign.hanzo.ai/api/v2"
ENVELOPE_ID="envelope_abc123"
OUTPUT_DIR="./downloads"
@@ -1150,7 +1150,7 @@ function validatePdfFile(buffer: Buffer, maxSizeMb = 10) {
## See Also
- [API Reference](https://openapi.sign.hanzo.ai/) - Full endpoint documentation
- [API Reference](https://openapi.esign.hanzo.ai/) - Full endpoint documentation
- [Documents API](/docs/developers/api/documents) - Document operations
- [Templates API](/docs/developers/api/templates) - Template management
- [Webhooks](/docs/developers/webhooks/setup) - Webhook configuration
@@ -9,12 +9,12 @@ import { Step, Steps } from 'fumadocs-ui/components/steps';
## Prerequisites
- A Hanzo Sign account (cloud or self-hosted)
- A Hanzo Sign account on any plan (Free, Individual, Team, or Enterprise)
- A Hanzo eSign account (cloud or self-hosted)
- A Hanzo eSign account on any plan (Free, Individual, Team, or Enterprise)
<Callout type="info">
Free accounts include API access with a limit of 5 documents per month. [Upgrade to a paid
plan](https://sign.hanzo.ai/pricing) for higher limits.
plan](https://esign.hanzo.ai/pricing) for higher limits.
</Callout>
## Create an API Token
@@ -24,7 +24,7 @@ import { Step, Steps } from 'fumadocs-ui/components/steps';
<Step>
### Open settings
- Log in to your Hanzo Sign account
- Log in to your Hanzo eSign account
- Click your avatar in the top right corner
- Select **Settings** from the dropdown menu
@@ -73,14 +73,14 @@ Include the token in the `Authorization` header of your HTTP requests.
### cURL
```bash
curl https://app.sign.hanzo.ai/api/v2/documents \
curl https://app.esign.hanzo.ai/api/v2/documents \
-H "Authorization: api_xxxxxxxxxxxxxxxx"
```
### JavaScript / TypeScript
```typescript
const response = await fetch('https://app.sign.hanzo.ai/api/v2/documents', {
const response = await fetch('https://app.esign.hanzo.ai/api/v2/documents', {
method: 'GET',
headers: {
Authorization: 'api_xxxxxxxxxxxxxxxx',
@@ -92,12 +92,12 @@ const documents = await response.json();
### Using the TypeScript SDK
Hanzo Sign provides official SDKs that handle authentication for you:
Hanzo eSign provides official SDKs that handle authentication for you:
```typescript
import { Hanzo Sign } from '@hanzo/sign-sdk-typescript';
import { Hanzo eSign } from '@hanzo/sign-sdk-typescript';
const client = new Hanzo Sign({
const client = new Hanzo eSign({
apiKey: 'api_xxxxxxxxxxxxxxxx',
});
@@ -110,14 +110,14 @@ SDKs are available for [TypeScript](https://github.com/hanzo-sign/sdk-typescript
| Environment | Base URL |
| ----------- | -------------------------------------- |
| Production | `https://app.sign.hanzo.ai/api/v2` |
| Staging | `https://stg-app.sign.hanzo.ai/api/v2` |
| Production | `https://app.esign.hanzo.ai/api/v2` |
| Staging | `https://stg-app.esign.hanzo.ai/api/v2` |
| Self-hosted | `https://your-domain.com/api/v2` |
<Callout type="info">
API V1 is deprecated. Use V2 for all new integrations. V1 only works with legacy documents created
before the envelope system. If you need V1 documentation for migration purposes, see the [V1
OpenAPI reference](https://app.sign.hanzo.ai/api/v1/openapi).
OpenAPI reference](https://app.esign.hanzo.ai/api/v1/openapi).
</Callout>
<Callout type="info">
@@ -146,7 +146,7 @@ SIGN_API_KEY=api_xxxxxxxxxxxxxxxx
```
```typescript
const client = new Hanzo Sign({
const client = new Hanzo eSign({
apiKey: process.env.SIGN_API_KEY,
});
```
@@ -1,6 +1,6 @@
---
title: First API Call
description: Create and send a document for signing using the Hanzo Sign API, from uploading a PDF to adding recipients and distributing for signature.
description: Create and send a document for signing using the Hanzo eSign API, from uploading a PDF to adding recipients and distributing for signature.
---
import { Callout } from 'fumadocs-ui/components/callout';
@@ -11,7 +11,7 @@ import { Tab, Tabs } from 'fumadocs-ui/components/tabs';
Before starting, you need:
- A Hanzo Sign account (cloud or self-hosted)
- A Hanzo eSign account (cloud or self-hosted)
- An API token ([create one in team settings](/docs/developers/getting-started/authentication))
- A PDF file to send for signing
@@ -34,8 +34,8 @@ All API requests use the following base URLs:
| Environment | Base URL |
| ----------- | -------------------------------------- |
| Production | `https://app.sign.hanzo.ai/api/v2` |
| Staging | `https://stg-app.sign.hanzo.ai/api/v2` |
| Production | `https://app.esign.hanzo.ai/api/v2` |
| Staging | `https://stg-app.esign.hanzo.ai/api/v2` |
## Example 1: List Your Documents
@@ -44,13 +44,13 @@ Start with a simple GET request to verify your API token works.
<Tabs items={['curl', 'JavaScript']}>
<Tab value="curl">
```bash
curl -X GET "https://app.sign.hanzo.ai/api/v2/envelope" \
curl -X GET "https://app.esign.hanzo.ai/api/v2/envelope" \
-H "Authorization: YOUR_API_TOKEN"
```
</Tab>
<Tab value="JavaScript">
```javascript
const response = await fetch('https://app.sign.hanzo.ai/api/v2/envelope', {
const response = await fetch('https://app.esign.hanzo.ai/api/v2/envelope', {
method: 'GET',
headers: {
'Authorization': 'YOUR_API_TOKEN',
@@ -94,7 +94,7 @@ The V2 API uses a single endpoint to create a document with recipients and field
<Tabs items={['curl', 'JavaScript']}>
<Tab value="curl">
```bash
curl -X POST "https://app.sign.hanzo.ai/api/v2/envelope/create" \
curl -X POST "https://app.esign.hanzo.ai/api/v2/envelope/create" \
-H "Authorization: YOUR_API_TOKEN" \
-H "Content-Type: multipart/form-data" \
-F 'payload={
@@ -175,7 +175,7 @@ form.append('files', fs.createReadStream('./contract.pdf'), {
contentType: 'application/pdf',
});
const response = await fetch('https://app.sign.hanzo.ai/api/v2/envelope/create', {
const response = await fetch('https://app.esign.hanzo.ai/api/v2/envelope/create', {
method: 'POST',
headers: {
Authorization: 'YOUR_API_TOKEN',
@@ -226,7 +226,7 @@ After creating a document, it's in `DRAFT` status. To send it to recipients, use
<Tabs items={['curl', 'JavaScript']}>
<Tab value="curl">
```bash
curl -X POST "https://app.sign.hanzo.ai/api/v2/envelope/envelope_abc123/distribute" \
curl -X POST "https://app.esign.hanzo.ai/api/v2/envelope/envelope_abc123/distribute" \
-H "Authorization: YOUR_API_TOKEN" \
-H "Content-Type: application/json"
````
@@ -237,7 +237,7 @@ curl -X POST "https://app.sign.hanzo.ai/api/v2/envelope/envelope_abc123/distribu
const envelopeId = 'envelope_abc123';
const response = await fetch(
`https://app.sign.hanzo.ai/api/v2/envelope/${envelopeId}/distribute`,
`https://app.esign.hanzo.ai/api/v2/envelope/${envelopeId}/distribute`,
{
method: 'POST',
headers: {
@@ -266,7 +266,7 @@ const fs = require('fs');
const FormData = require('form-data');
const API_TOKEN = process.env.SIGN_API_TOKEN;
const BASE_URL = 'https://app.sign.hanzo.ai/api/v2';
const BASE_URL = 'https://app.esign.hanzo.ai/api/v2';
async function createAndSendDocument(pdfPath, recipientEmail, recipientName) {
// Step 1: Create the envelope with recipient and fields
@@ -370,7 +370,7 @@ createAndSendDocument(
set -e
API_TOKEN="YOUR_API_TOKEN"
BASE_URL="https://app.sign.hanzo.ai/api/v2"
BASE_URL="https://app.esign.hanzo.ai/api/v2"
PDF_FILE="./contract.pdf"
RECIPIENT_EMAIL="signer@example.com"
RECIPIENT_NAME="John Smith"
@@ -505,7 +505,7 @@ async function fetchWithRetry(url, options, maxRetries = 3) {
## Next Steps
- [API Reference](https://openapi.sign.hanzo.ai/) - Full endpoint documentation with request/response schemas
- [API Reference](https://openapi.esign.hanzo.ai/) - Full endpoint documentation with request/response schemas
- [Webhooks](/docs/developers/webhooks/setup) - Get notified when documents are signed
- [Templates](/docs/developers/api/templates) - Create reusable document templates
- [SDKs](#official-sdks) - Use typed client libraries
+3 -3
View File
@@ -1,6 +1,6 @@
---
title: Developer Guide
description: Integrate Hanzo Sign into your applications using the REST API, webhooks, and embedding options.
description: Integrate Hanzo eSign into your applications using the REST API, webhooks, and embedding options.
---
## Getting Started
@@ -50,7 +50,7 @@ description: Integrate Hanzo Sign into your applications using the REST API, web
## API Base URL
```
https://app.sign.hanzo.ai/api/v2
https://app.esign.hanzo.ai/api/v2
```
For self-hosted instances, replace with your instance URL:
@@ -81,7 +81,7 @@ Official SDKs are available for multiple languages:
/>
<Card
title="Self-Hosting"
description="Deploy your own Hanzo Sign instance."
description="Deploy your own Hanzo eSign instance."
href="/docs/self-hosting"
/>
</Cards>
@@ -1,11 +1,11 @@
---
title: Run in Gitpod
description: Get started with Hanzo Sign in a ready-to-use Gitpod workspace in your browser.
description: Get started with Hanzo eSign in a ready-to-use Gitpod workspace in your browser.
---
Click below to launch a ready-to-use Gitpod workspace in your browser.
[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/hanzoai/sign)
[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/hanzoai/esign)
## See Also
@@ -1,11 +1,11 @@
---
title: Local Development
description: Learn how to set up Hanzo Sign for local development.
description: Learn how to set up Hanzo eSign for local development.
---
## Overview
There are multiple ways of setting up Hanzo Sign for local development. At the moment of writing this documentation, there are 3 ways of running Hanzo Sign locally:
There are multiple ways of setting up Hanzo eSign for local development. At the moment of writing this documentation, there are 3 ways of running Hanzo eSign locally:
- [Using the developer quickstart with Docker](/docs/developers/local-development/quickstart)
- [Manually setting up the development environment](/docs/developers/local-development/manual)
@@ -28,31 +28,31 @@ Pick the one that fits your needs the best.
- [Stripe](https://stripe.com/) - Payments
<div className="mt-16 flex items-center justify-center gap-4">
<a href="https://sign.hanzo.ai/discord">
<a href="https://esign.hanzo.ai/discord">
<img
src="https://img.shields.io/badge/Discord-sign.hanzo.ai/discord-%235865F2"
alt="Join Hanzo Sign on Discord"
src="https://img.shields.io/badge/Discord-esign.hanzo.ai/discord-%235865F2"
alt="Join Hanzo eSign on Discord"
/>
</a>
<a href="https://github.com/hanzoai/sign/stargazers">
<a href="https://github.com/hanzoai/esign/stargazers">
<img src="https://img.shields.io/github/stars/hanzo-sign/hanzo-sign" alt="Github Stars" />
</a>
<a href="https://github.com/hanzoai/sign/blob/main/LICENSE">
<a href="https://github.com/hanzoai/esign/blob/main/LICENSE">
<img src="https://img.shields.io/badge/license-AGPLv3-purple" alt="License" />
</a>
<a href="https://github.com/hanzoai/sign/pulse">
<a href="https://github.com/hanzoai/esign/pulse">
<img
src="https://img.shields.io/github/commit-activity/m/hanzo-sign/hanzo-sign"
alt="Commits-per-month"
/>
</a>
<a href="https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/hanzoai/sign">
<a href="https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/hanzoai/esign">
<img
alt="open in devcontainer"
src="https://img.shields.io/static/v1?label=Dev%20Containers&message=Enabled&color=blue&logo=visualstudiocode"
/>
</a>
<a href="https://github.com/hanzoai/sign/blob/main/CODE_OF_CONDUCT.md">
<a href="https://github.com/hanzoai/esign/blob/main/CODE_OF_CONDUCT.md">
<img
src="https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg"
alt="Contributor Covenant"
@@ -62,5 +62,5 @@ Pick the one that fits your needs the best.
## See Also
- [Contributing](/docs/developers/contributing) - Learn how to contribute to Hanzo Sign
- [Contributing](/docs/developers/contributing) - Learn how to contribute to Hanzo eSign
- [Self-Hosting](/docs/self-hosting) - Deploy your own instance
@@ -1,6 +1,6 @@
---
title: Manual Setup
description: Manually set up Hanzo Sign on your machine for local development.
description: Manually set up Hanzo eSign on your machine for local development.
---
import { Callout } from 'fumadocs-ui/components/callout';
@@ -8,15 +8,15 @@ import { Step, Steps } from 'fumadocs-ui/components/steps';
# Manual Setup
Follow these steps to set up Hanzo Sign on your local machine:
Follow these steps to set up Hanzo eSign on your local machine:
{/* prettier-ignore */}
<Steps>
<Step>
### Fork Hanzo Sign
### Fork Hanzo eSign
Fork the [Hanzo Sign repository](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks) to your GitHub account.
Fork the [Hanzo eSign repository](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks) to your GitHub account.
</Step>
@@ -93,7 +93,7 @@ Run `npm run dev` in the root directory to start the application.
<Step>
### Access the application
Access the Hanzo Sign application by visiting `http://localhost:3000` in your web browser.
Access the Hanzo eSign application by visiting `http://localhost:3000` in your web browser.
</Step>
@@ -1,6 +1,6 @@
---
title: Developer Quickstart
description: Quickly set up Hanzo Sign on your machine for local development with Docker and Docker Compose.
description: Quickly set up Hanzo eSign on your machine for local development with Docker and Docker Compose.
---
import { Callout } from 'fumadocs-ui/components/callout';
@@ -19,9 +19,9 @@ Want to get up and running quickly? Follow these steps:
<Steps>
<Step>
### Fork Hanzo Sign
### Fork Hanzo eSign
Fork the [Hanzo Sign repository](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks) to your GitHub account.
Fork the [Hanzo eSign repository](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks) to your GitHub account.
</Step>
@@ -5,7 +5,7 @@ description: Handling translations in code.
## Overview
Hanzo Sign uses the following stack to handle translations:
Hanzo eSign uses the following stack to handle translations:
- [Lingui](https://lingui.dev/) - React i10n library
- [Crowdin](https://crowdin.com/) - Handles syncing translations
@@ -34,7 +34,7 @@ For text that is broken into elements, but represent a whole sentence, you must
<Trans>
This is one
<span className="text-foreground/60">full</span>
<a href="https://sign.hanzo.ai">sentence</a>
<a href="https://esign.hanzo.ai">sentence</a>
</Trans>
</h1>
```
@@ -90,4 +90,4 @@ export const SomeComponent = () => {
## See Also
- [Contributing Translations](/docs/developers/contributing/contributing-translations) - Help translate Hanzo Sign
- [Contributing Translations](/docs/developers/contributing/contributing-translations) - Help translate Hanzo eSign
+1 -1
View File
@@ -1,6 +1,6 @@
{
"title": "Developers",
"description": "Integrate with Hanzo Sign",
"description": "Integrate with Hanzo eSign",
"root": true,
"pages": [
"getting-started",
@@ -627,7 +627,7 @@ When processing webhook events:
{/* prettier-ignore */}
<Steps>
<Step>
**Verify the signature** — Check the `X-Hanzo Sign-Secret` header matches your configured secret
**Verify the signature** — Check the `X-Hanzo eSign-Secret` header matches your configured secret
</Step>
<Step>
**Check event type** — Use the `event` field to determine the action
@@ -5,8 +5,8 @@ description: Receive real-time notifications when documents are signed, complete
## How Webhooks Work
1. You configure a webhook URL in Hanzo Sign
2. When an event occurs, Hanzo Sign sends an HTTP POST to your URL
1. You configure a webhook URL in Hanzo eSign
2. When an event occurs, Hanzo eSign sends an HTTP POST to your URL
3. Your application processes the event and responds with 200 OK
---
@@ -10,7 +10,7 @@ import { Tab, Tabs } from 'fumadocs-ui/components/tabs';
## Overview
Webhooks are HTTP callbacks triggered by specific events in Hanzo Sign. When an event occurs (such as a document being signed), Hanzo Sign sends an HTTP POST request to your configured URL with details about the event.
Webhooks are HTTP callbacks triggered by specific events in Hanzo eSign. When an event occurs (such as a document being signed), Hanzo eSign sends an HTTP POST request to your configured URL with details about the event.
Common use cases include:
@@ -25,7 +25,7 @@ Common use cases include:
## Creating a Webhook Endpoint
Before configuring a webhook in Hanzo Sign, you need an endpoint that can receive HTTP POST requests. Here's a minimal example:
Before configuring a webhook in Hanzo eSign, you need an endpoint that can receive HTTP POST requests. Here's a minimal example:
<Tabs items={['Node.js (Express)', 'Python (Flask)', 'Go']}>
<Tab value="Node.js (Express)">
@@ -148,10 +148,10 @@ func main() {
</Tabs>
<Callout type="warn">
Always respond with a `200 OK` status within 30 seconds. Hanzo Sign will retry failed deliveries.
Always respond with a `200 OK` status within 30 seconds. Hanzo eSign will retry failed deliveries.
</Callout>
## Configuring Webhooks in Hanzo Sign via the Dashboard
## Configuring Webhooks in Hanzo eSign via the Dashboard
{/* prettier-ignore */}
<Steps>
@@ -232,7 +232,7 @@ See [Webhook Events](/docs/developers/webhooks/events) for detailed payload info
## Testing Webhooks
Hanzo Sign provides a built-in testing feature to verify your webhook endpoint works correctly.
Hanzo eSign provides a built-in testing feature to verify your webhook endpoint works correctly.
{/* prettier-ignore */}
<Steps>
@@ -306,13 +306,13 @@ Navigate to the webhook call details page
Click the **Resend** button
</Step>
<Step>
Hanzo Sign will attempt to deliver the same payload again
Hanzo eSign will attempt to deliver the same payload again
</Step>
</Steps>
## Retry Policy
When a webhook delivery fails (non-2xx response or timeout), Hanzo Sign automatically retries with exponential backoff:
When a webhook delivery fails (non-2xx response or timeout), Hanzo eSign automatically retries with exponential backoff:
| Attempt | Delay |
| ------- | ----- |
@@ -335,7 +335,7 @@ After 5 failed attempts, the webhook is marked as failed and no further automati
Always use HTTPS endpoints in production.
</Accordion>
<Accordion title="Verify signatures">
Use a webhook secret and verify the `X-Hanzo Sign-Secret` header (see [Verification](/docs/developers/webhooks/verification)).
Use a webhook secret and verify the `X-Hanzo eSign-Secret` header (see [Verification](/docs/developers/webhooks/verification)).
</Accordion>
<Accordion title="Validate payloads">
Validate incoming data before processing.
@@ -10,17 +10,17 @@ import { Tab, Tabs } from 'fumadocs-ui/components/tabs';
## Overview
Verifying webhook requests ensures that incoming payloads originate from Hanzo Sign and have not been tampered with. Without verification, attackers could forge requests to your endpoint and trigger unintended actions.
Verifying webhook requests ensures that incoming payloads originate from Hanzo eSign and have not been tampered with. Without verification, attackers could forge requests to your endpoint and trigger unintended actions.
## How Hanzo Sign Signs Webhooks
## How Hanzo eSign Signs Webhooks
When you configure a webhook with a secret, Hanzo Sign includes that secret in every webhook request via the `X-Hanzo Sign-Secret` header. Your server should compare this header value against your stored secret to authenticate the request.
When you configure a webhook with a secret, Hanzo eSign includes that secret in every webhook request via the `X-Hanzo eSign-Secret` header. Your server should compare this header value against your stored secret to authenticate the request.
```bash
POST /your-webhook-endpoint HTTP/1.1
Host: your-server.com
Content-Type: application/json
X-Hanzo Sign-Secret: your_webhook_secret_here
X-Hanzo eSign-Secret: your_webhook_secret_here
{"event": "DOCUMENT_COMPLETED", "payload": {...}}
```
@@ -29,7 +29,7 @@ X-Hanzo Sign-Secret: your_webhook_secret_here
| Header | Description |
| -------------------- | ------------------------------------------------------- |
| `X-Hanzo Sign-Secret` | The secret key you configured when creating the webhook |
| `X-Hanzo eSign-Secret` | The secret key you configured when creating the webhook |
The header contains your webhook secret as a plain string. If you did not configure a secret, the header will be an empty string.
@@ -38,7 +38,7 @@ The header contains your webhook secret as a plain string. If you did not config
{/* prettier-ignore */}
<Steps>
<Step>
Extract the `X-Hanzo Sign-Secret` header from the incoming request
Extract the `X-Hanzo eSign-Secret` header from the incoming request
</Step>
<Step>
Compare it against your stored webhook secret using a constant-time comparison
@@ -139,7 +139,7 @@ def verify_webhook_signature(received_secret, expected_secret):
@app.route('/webhooks/hanzo-sign', methods=['POST'])
def handle_webhook():
received_secret = request.headers.get('X-Hanzo Sign-Secret', '')
received_secret = request.headers.get('X-Hanzo eSign-Secret', '')
if not verify_webhook_signature(received_secret, WEBHOOK_SECRET):
print('Webhook verification failed')
@@ -197,8 +197,8 @@ app.post('/webhooks/hanzo-sign', (req, res) => {
| Issue | Cause | Solution |
| --------------- | --------------------------------------- | ------------------------------------------------------------------ |
| Secret mismatch | Webhook secret changed or misconfigured | Verify the secret in your environment matches the one in Hanzo Sign |
| Empty header | Webhook created without a secret | Add a secret to the webhook configuration in Hanzo Sign |
| Secret mismatch | Webhook secret changed or misconfigured | Verify the secret in your environment matches the one in Hanzo eSign |
| Empty header | Webhook created without a secret | Add a secret to the webhook configuration in Hanzo eSign |
| Encoding issues | String encoding mismatch | Ensure both secrets use the same encoding (UTF-8) |
## Security Best Practices
@@ -230,7 +230,7 @@ const WEBHOOK_SECRET = 'my-secret-key'; // Never do this
1. Generate a new secret
2. Update your server to accept both old and new secrets temporarily
3. Update the webhook configuration in Hanzo Sign
3. Update the webhook configuration in Hanzo eSign
4. Remove the old secret from your server
</Accordion>
+7 -7
View File
@@ -1,5 +1,5 @@
---
title: Hanzo Sign Documentation
title: Hanzo eSign Documentation
description: Learn how to send documents for signing, integrate with the API, or self-host your own instance.
full: true
---
@@ -49,7 +49,7 @@ import {
</div>
<h2 className="text-lg font-semibold mb-2">Self-Hosting Guide</h2>
<p className="text-sm text-fd-muted-foreground mb-4 flex-1">
Deploy your own Hanzo Sign instance with Docker, Kubernetes, or Railway.
Deploy your own Hanzo eSign instance with Docker, Kubernetes, or Railway.
</p>
<span className="text-sm font-medium text-fd-primary">Deploy now →</span>
</a>
@@ -144,19 +144,19 @@ import {
<div className="rounded-xl border bg-gradient-to-r from-fd-primary/5 to-fd-primary/10 p-6 text-center">
<h3 className="font-semibold mb-2">Join the Community</h3>
<p className="text-sm text-fd-muted-foreground mb-4">
Hanzo Sign is open source. Contribute, ask questions, or share feedback.
Hanzo eSign is open source. Contribute, ask questions, or share feedback.
</p>
<div className="flex flex-wrap justify-center gap-3">
<a href="https://github.com/hanzoai/sign" className="inline-flex items-center gap-2 rounded-lg bg-fd-background border px-4 py-2 text-sm font-medium hover:bg-fd-accent transition-colors">
<a href="https://github.com/hanzoai/esign" className="inline-flex items-center gap-2 rounded-lg bg-fd-background border px-4 py-2 text-sm font-medium hover:bg-fd-accent transition-colors">
<svg className="size-4" viewBox="0 0 24 24" fill="currentColor"><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path></svg>
GitHub
</a>
<a href="https://sign.hanzo.ai/discord" className="inline-flex items-center gap-2 rounded-lg bg-fd-background border px-4 py-2 text-sm font-medium hover:bg-fd-accent transition-colors">
<a href="https://esign.hanzo.ai/discord" className="inline-flex items-center gap-2 rounded-lg bg-fd-background border px-4 py-2 text-sm font-medium hover:bg-fd-accent transition-colors">
<svg className="size-4" viewBox="0 0 24 24" fill="currentColor"><path d="M20.317 4.3698a19.7913 19.7913 0 00-4.8851-1.5152.0741.0741 0 00-.0785.0371c-.211.3753-.4447.8648-.6083 1.2495-1.8447-.2762-3.68-.2762-5.4868 0-.1636-.3933-.4058-.8742-.6177-1.2495a.077.077 0 00-.0785-.037 19.7363 19.7363 0 00-4.8852 1.515.0699.0699 0 00-.0321.0277C.5334 9.0458-.319 13.5799.0992 18.0578a.0824.0824 0 00.0312.0561c2.0528 1.5076 4.0413 2.4228 5.9929 3.0294a.0777.0777 0 00.0842-.0276c.4616-.6304.8731-1.2952 1.226-1.9942a.076.076 0 00-.0416-.1057c-.6528-.2476-1.2743-.5495-1.8722-.8923a.077.077 0 01-.0076-.1277c.1258-.0943.2517-.1923.3718-.2914a.0743.0743 0 01.0776-.0105c3.9278 1.7933 8.18 1.7933 12.0614 0a.0739.0739 0 01.0785.0095c.1202.099.246.1981.3728.2924a.077.077 0 01-.0066.1276 12.2986 12.2986 0 01-1.873.8914.0766.0766 0 00-.0407.1067c.3604.698.7719 1.3628 1.225 1.9932a.076.076 0 00.0842.0286c1.961-.6067 3.9495-1.5219 6.0023-3.0294a.077.077 0 00.0313-.0552c.5004-5.177-.8382-9.6739-3.5485-13.6604a.061.061 0 00-.0312-.0286zM8.02 15.3312c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9555-2.4189 2.157-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.9555 2.4189-2.1569 2.4189zm7.9748 0c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9554-2.4189 2.1569-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.946 2.4189-2.1568 2.4189Z"></path></svg>
Discord
</a>
<a href="https://sign.hanzo.ai" className="inline-flex items-center gap-2 rounded-lg bg-fd-primary text-fd-primary-foreground px-4 py-2 text-sm font-medium hover:bg-fd-primary/90 transition-colors">
Try Hanzo Sign
<a href="https://esign.hanzo.ai" className="inline-flex items-center gap-2 rounded-lg bg-fd-primary text-fd-primary-foreground px-4 py-2 text-sm font-medium hover:bg-fd-primary/90 transition-colors">
Try Hanzo eSign
</a>
</div>
</div>
@@ -1,6 +1,6 @@
---
title: Community Edition
description: The open-source version of Hanzo Sign, available under the AGPL-3.0 license. Includes core document signing functionality and can be self-hosted.
description: The open-source version of Hanzo eSign, available under the AGPL-3.0 license. Includes core document signing functionality and can be self-hosted.
---
import { Accordion, Accordions } from 'fumadocs-ui/components/accordion';
@@ -16,7 +16,7 @@ Key characteristics:
- **Network clause**: Network access triggers the same obligations as distribution
- **Source availability**: Users must be able to access the source code
The full license text is available in the [LICENSE file](https://github.com/hanzoai/sign/blob/main/LICENSE) in the repository.
The full license text is available in the [LICENSE file](https://github.com/hanzoai/esign/blob/main/LICENSE) in the repository.
## What You Can Do
@@ -24,7 +24,7 @@ Under the AGPL-3.0 license, you are permitted to:
| Action | Description |
| ------------------ | ------------------------------------------------------------- |
| **Use** | Run Hanzo Sign for any purpose, including commercial use |
| **Use** | Run Hanzo eSign for any purpose, including commercial use |
| **Study** | Access and examine the complete source code |
| **Modify** | Make changes and customizations to the software |
| **Distribute** | Share copies of the original or modified software |
@@ -37,7 +37,7 @@ When using or distributing the Community Edition, you must comply with these req
<Accordions type="multiple">
<Accordion title="Source Code Disclosure">
If you modify Hanzo Sign and make it available over a network, you must:
If you modify Hanzo eSign and make it available over a network, you must:
- Provide access to the complete source code of your modified version
- Make the source available through the same network interface, or provide a written offer to supply it
@@ -45,7 +45,7 @@ When using or distributing the Community Edition, you must comply with these req
<Callout type="warn">
The network clause is the distinguishing feature of AGPL-3.0. If users interact with your modified
Hanzo Sign instance over a network (whether internal or external), you must provide them access to
Hanzo eSign instance over a network (whether internal or external), you must provide them access to
the source code.
</Callout>
@@ -64,7 +64,7 @@ When using or distributing the Community Edition, you must comply with these req
- Forks must use the same license
- Modifications cannot be made proprietary
- Combined works that incorporate Hanzo Sign code are subject to AGPL-3.0
- Combined works that incorporate Hanzo eSign code are subject to AGPL-3.0
</Accordion>
<Accordion title="Enterprise Edition Boundary">
@@ -74,7 +74,7 @@ When using or distributing the Community Edition, you must comply with these req
## Features Included
The Community Edition includes the core Hanzo Sign functionality:
The Community Edition includes the core Hanzo eSign functionality:
<Accordions type="multiple">
<Accordion title="Document Management">
@@ -128,7 +128,7 @@ Community Edition users have access to community-based support:
<Accordions type="multiple">
<Accordion title="Discord">
The Hanzo Sign Discord server is the primary community support channel. You can:
The Hanzo eSign Discord server is the primary community support channel. You can:
- Ask questions and get help from other users
- Share your use cases and solutions
@@ -136,8 +136,8 @@ Community Edition users have access to community-based support:
</Accordion>
<Accordion title="GitHub">
- **[GitHub Discussions](https://github.com/hanzoai/sign/discussions)**: For questions, ideas, and general discussion
- **[GitHub Issues](https://github.com/hanzoai/sign/issues)**: For confirmed bug reports with reproducible steps
- **[GitHub Discussions](https://github.com/hanzoai/esign/discussions)**: For questions, ideas, and general discussion
- **[GitHub Issues](https://github.com/hanzoai/esign/issues)**: For confirmed bug reports with reproducible steps
</Accordion>
<Accordion title="Documentation">
- [Self-Hosting Guide](/docs/self-hosting) for deployment and configuration
@@ -147,17 +147,17 @@ Community Edition users have access to community-based support:
</Accordions>
<Callout type="info">
Community support is provided on a best-effort basis by volunteers and Hanzo Sign team members. For
Community support is provided on a best-effort basis by volunteers and Hanzo eSign team members. For
guaranteed response times and dedicated support, consider the Enterprise Edition.
</Callout>
## Contributing Back
Contributions to Hanzo Sign are welcome and appreciated. You can contribute in several ways:
Contributions to Hanzo eSign are welcome and appreciated. You can contribute in several ways:
<Accordions type="multiple">
<Accordion title="Code Contributions">
1. Fork the [Hanzo Sign repository](https://github.com/hanzoai/sign)
1. Fork the [Hanzo eSign repository](https://github.com/hanzoai/esign)
2. Create a branch for your changes
3. Submit a pull request with a clear description
4. Respond to code review feedback
@@ -175,7 +175,7 @@ Contributions to Hanzo Sign are welcome and appreciated. You can contribute in s
<Accordion title="Contributor Guidelines">
Before contributing, review:
- The [CONTRIBUTING.md](https://github.com/hanzoai/sign/blob/main/CONTRIBUTING.md) file in the repository
- The [CONTRIBUTING.md](https://github.com/hanzoai/esign/blob/main/CONTRIBUTING.md) file in the repository
- Existing issues and discussions to avoid duplicates
- The coding standards used in the project
@@ -202,4 +202,4 @@ See [Enterprise Edition](/docs/policies/enterprise-edition) for details on comme
- [Self-Hosting Guide](/docs/self-hosting) - Deploy your own instance
- [Support](/docs/policies/support) - All support options
- [Full AGPL-3.0 License Text](https://www.gnu.org/licenses/agpl-3.0.html) - Complete license terms
- [GitHub Repository](https://github.com/hanzoai/sign) - Source code and LICENSE file
- [GitHub Repository](https://github.com/hanzoai/esign) - Source code and LICENSE file
@@ -1,6 +1,6 @@
---
title: Enterprise Edition
description: Commercial license that removes AGPL-3.0 source code disclosure requirements, allowing organisations to integrate Hanzo Sign into proprietary products.
description: Commercial license that removes AGPL-3.0 source code disclosure requirements, allowing organisations to integrate Hanzo eSign into proprietary products.
---
import { Accordion, Accordions } from 'fumadocs-ui/components/accordion';
@@ -12,13 +12,13 @@ import { Tab, Tabs } from 'fumadocs-ui/components/tabs';
The Enterprise Edition is required when you:
- **Build proprietary products**: Integrate Hanzo Sign into commercial software without releasing source code
- **Build proprietary products**: Integrate Hanzo eSign into commercial software without releasing source code
- **Offer SaaS with modifications**: Provide document signing as part of your platform with custom modifications you want to keep private
- **Cannot comply with AGPL-3.0**: Corporate policies or legal requirements prohibit use of AGPL-licensed software
- **Need to keep modifications private**: Any changes to Hanzo Sign source code that you don't want to disclose
- **Need to keep modifications private**: Any changes to Hanzo eSign source code that you don't want to disclose
<Callout type="info">
If you run Hanzo Sign without modifications, or your modifications are open source under AGPL-3.0,
If you run Hanzo eSign without modifications, or your modifications are open source under AGPL-3.0,
the Community Edition is sufficient.
</Callout>
@@ -28,8 +28,8 @@ The Enterprise Edition is required when you:
| -------------------------------------------- | ------------------ |
| Internal use without modifications | Community Edition |
| Internal use with private modifications | Enterprise Edition |
| SaaS product using Hanzo Sign API only | Community Edition |
| SaaS product with modified Hanzo Sign code | Enterprise Edition |
| SaaS product using Hanzo eSign API only | Community Edition |
| SaaS product with modified Hanzo eSign code | Enterprise Edition |
| White-label product with proprietary changes | Enterprise Edition |
| Open-source project under AGPL-3.0 | Community Edition |
@@ -40,8 +40,8 @@ The Enterprise Edition is required when you:
The Enterprise license grants:
- **No source disclosure**: Keep your modifications private. No obligation to share code with users or the public.
- **Proprietary integration**: Embed Hanzo Sign in closed-source products without licensing conflicts.
- **Sublicensing options**: Distribute Hanzo Sign as part of your product to your customers (terms vary by agreement).
- **Proprietary integration**: Embed Hanzo eSign in closed-source products without licensing conflicts.
- **Sublicensing options**: Distribute Hanzo eSign as part of your product to your customers (terms vary by agreement).
- **Perpetual use**: License terms that allow continued use of the licensed version.
</Accordion>
@@ -65,15 +65,15 @@ The Enterprise Edition is required when you:
</Accordion>
<Accordion title="License Setup">
1. Acquire a license by contacting [sales](https://sign.hanzo.ai/enterprise)
2. Access your license key at [license.sign.hanzo.ai](https://license.sign.hanzo.ai)
1. Acquire a license by contacting [sales](https://esign.hanzo.ai/enterprise)
2. Access your license key at [license.esign.hanzo.ai](https://license.esign.hanzo.ai)
3. Set the environment variable:
```bash
NEXT_PRIVATE_SIGN_LICENSE_KEY="your-license-key-here"
```
4. Restart your Hanzo Sign instance
4. Restart your Hanzo eSign instance
5. Verify the license is active in the **Admin Panel** under the **Stats** section
</Accordion>
@@ -83,22 +83,22 @@ The Enterprise Edition is required when you:
<Accordions type="multiple">
<Accordion title="Grant of License">
The Enterprise license is a commercial agreement between your organisation and Hanzo Sign. Key terms include:
The Enterprise license is a commercial agreement between your organisation and Hanzo eSign. Key terms include:
- **Scope**: License to use, modify, and distribute Hanzo Sign as specified in your agreement
- **Exclusions**: The license does not grant rights to Hanzo Sign trademarks beyond what's specified
- **Scope**: License to use, modify, and distribute Hanzo eSign as specified in your agreement
- **Exclusions**: The license does not grant rights to Hanzo eSign trademarks beyond what's specified
- **Termination**: License remains valid as long as subscription is active and terms are followed
</Accordion>
<Accordion title="What the License Covers">
- Hanzo Sign application code
- Hanzo eSign application code
- Self-hosted deployments
- Modifications and derivative works
- Internal and external distribution (per agreement terms)
</Accordion>
<Accordion title="What the License Does Not Cover">
- Third-party dependencies (these retain their original licenses)
- Hanzo Sign Cloud service (separate subscription)
- Hanzo eSign Cloud service (separate subscription)
- Professional services (available separately)
</Accordion>
</Accordions>
@@ -109,7 +109,7 @@ Enterprise pricing is based on:
| Factor | Description |
| ------------------- | ----------------------------------- |
| **Deployment type** | Self-hosted or Hanzo Sign Cloud |
| **Deployment type** | Self-hosted or Hanzo eSign Cloud |
| **User count** | Number of users sending documents |
| **Volume** | Monthly document signing volume |
| **Support level** | Standard or premium support options |
@@ -117,7 +117,7 @@ Enterprise pricing is based on:
### Pricing Tiers
Contact [sales](https://sign.hanzo.ai/enterprise) for current pricing. Enterprise agreements typically include:
Contact [sales](https://esign.hanzo.ai/enterprise) for current pricing. Enterprise agreements typically include:
- Annual subscription billing
- Volume discounts for larger deployments
@@ -175,14 +175,14 @@ See [Support](/docs/policies/support) for complete support options.
Reach out to discuss your needs:
- Email: [sales@sign.hanzo.ai](https://sign.hanzo.ai/enterprise)
- Email: [sales@esign.hanzo.ai](https://esign.hanzo.ai/enterprise)
- Include: Organisation name, use case, estimated user count, deployment preference (self-hosted or cloud)
</Step>
<Step>
### Evaluation
Options for evaluating Hanzo Sign before purchase:
Options for evaluating Hanzo eSign before purchase:
- Test with the Community Edition (same codebase, AGPL-3.0 license)
- Request an evaluation license for Enterprise features
@@ -196,7 +196,7 @@ See [Support](/docs/policies/support) for complete support options.
1. Sign the Enterprise license agreement
2. Receive license key and access credentials
3. Deploy using [self-hosting guides](/docs/self-hosting) or access Hanzo Sign Cloud
3. Deploy using [self-hosting guides](/docs/self-hosting) or access Hanzo eSign Cloud
4. Configure Enterprise features with support assistance
</Step>
@@ -215,9 +215,9 @@ See [Support](/docs/policies/support) for complete support options.
<Accordions type="multiple">
<Accordion title="Can I switch from Community to Enterprise?">
Yes. Your existing deployment can transition to the Enterprise license. Contact
[sales](https://sign.hanzo.ai/enterprise) to discuss migration.
[sales](https://esign.hanzo.ai/enterprise) to discuss migration.
</Accordion>
<Accordion title="Does the Enterprise license include Hanzo Sign Cloud?">
<Accordion title="Does the Enterprise license include Hanzo eSign Cloud?">
The license and cloud service are separate. Enterprise cloud plans include both the commercial
license and hosted service. Self-hosted Enterprise licenses cover only the license rights.
</Accordion>
@@ -231,7 +231,7 @@ See [Support](/docs/policies/support) for complete support options.
includes core document signing functionality.
</Accordion>
<Accordion title="Is there a trial period?">
Contact [sales](https://sign.hanzo.ai/enterprise) to discuss evaluation options for your
Contact [sales](https://esign.hanzo.ai/enterprise) to discuss evaluation options for your
organisation.
</Accordion>
</Accordions>
+2 -2
View File
@@ -1,6 +1,6 @@
---
title: Fair Use Policy
description: Fair use guidelines for Hanzo Sign Cloud to keep things sustainable for everyone.
description: Fair use guidelines for Hanzo eSign Cloud to keep things sustainable for everyone.
---
import { Callout } from 'fumadocs-ui/components/callout';
@@ -46,7 +46,7 @@ Authentication endpoints (login, signup, password reset, etc.) are also rate-lim
<Callout type="info">
Rate limits may vary by plan. Enterprise plans can include higher or custom limits. Contact
[sales](https://sign.hanzo.ai/sales) for details.
[sales](https://esign.hanzo.ai/sales) for details.
</Callout>
<Callout type="info">
+5 -5
View File
@@ -11,12 +11,12 @@ description: License, privacy, terms, and support information
/>
<Card
title="Privacy Policy"
description="How Hanzo Sign collects, uses, and protects your data."
description="How Hanzo eSign collects, uses, and protects your data."
href="/docs/policies/privacy"
/>
<Card
title="Terms of Service"
description="Terms governing your use of Hanzo Sign."
description="Terms governing your use of Hanzo eSign."
href="/docs/policies/terms"
/>
<Card
@@ -33,10 +33,10 @@ description: License, privacy, terms, and support information
## Full Legal Documents
The complete legal documents are available on the main Hanzo Sign website:
The complete legal documents are available on the main Hanzo eSign website:
- [Privacy Policy](https://sign.hanzo.ai/privacy)
- [Terms of Service](https://sign.hanzo.ai/terms)
- [Privacy Policy](https://esign.hanzo.ai/privacy)
- [Terms of Service](https://esign.hanzo.ai/terms)
The pages in this documentation provide summaries and practical guidance. For binding legal terms, refer to the full documents linked above.
+26 -26
View File
@@ -1,6 +1,6 @@
---
title: Licenses
description: Hanzo Sign uses a dual licensing model with an open-source AGPL-3.0 license (Community Edition) and a commercial license (Enterprise Edition).
description: Hanzo eSign uses a dual licensing model with an open-source AGPL-3.0 license (Community Edition) and a commercial license (Enterprise Edition).
---
import { Accordion, Accordions } from 'fumadocs-ui/components/accordion';
@@ -27,16 +27,16 @@ The Community Edition is licensed under the GNU Affero General Public License ve
### What AGPL-3.0 Allows
- Use Hanzo Sign for any purpose, including commercial use
- Use Hanzo eSign for any purpose, including commercial use
- Access, study, and modify the source code
- Distribute copies of the original or modified software
- Self-host Hanzo Sign on your own infrastructure
- Self-host Hanzo eSign on your own infrastructure
### What AGPL-3.0 Requires
The AGPL-3.0 has specific requirements that apply when you modify or distribute Hanzo Sign:
The AGPL-3.0 has specific requirements that apply when you modify or distribute Hanzo eSign:
**Source Code Disclosure**: If you modify Hanzo Sign and make it available over a network, you must provide access to the complete source code of your modified version under AGPL-3.0.
**Source Code Disclosure**: If you modify Hanzo eSign and make it available over a network, you must provide access to the complete source code of your modified version under AGPL-3.0.
**Attribution**: You must keep all copyright notices intact and include a copy of the AGPL-3.0 license with any distribution.
@@ -44,7 +44,7 @@ The AGPL-3.0 has specific requirements that apply when you modify or distribute
<Callout type="info">
The "network clause" is the distinguishing feature of AGPL-3.0. Unlike GPL-3.0, AGPL-3.0 treats
network access as distribution. If users interact with your modified Hanzo Sign instance over a
network access as distribution. If users interact with your modified Hanzo eSign instance over a
network, you must provide them access to the source code.
</Callout>
@@ -54,7 +54,7 @@ The Community Edition is appropriate when you:
- Are building an open-source project
- Can comply with AGPL-3.0 requirements
- Use Hanzo Sign internally without modifications
- Use Hanzo eSign internally without modifications
- Want to contribute to the open-source ecosystem
- Do not need to keep modifications proprietary
@@ -65,13 +65,13 @@ See [Community Edition](/docs/policies/community-edition) for complete details.
## Enterprise Edition (Commercial License)
The Enterprise Edition provides a commercial license that removes the AGPL-3.0 requirements. This allows organisations to use, modify, and integrate Hanzo Sign without source code disclosure obligations.
The Enterprise Edition provides a commercial license that removes the AGPL-3.0 requirements. This allows organisations to use, modify, and integrate Hanzo eSign without source code disclosure obligations.
### What the Enterprise License Provides
**No Source Code Disclosure**: Keep your modifications private. You are not required to share changes with users or the public.
**Proprietary Integration**: Integrate Hanzo Sign into proprietary products and services without licensing conflicts.
**Proprietary Integration**: Integrate Hanzo eSign into proprietary products and services without licensing conflicts.
**Commercial Support**: Access to dedicated support channels and SLAs.
@@ -81,14 +81,14 @@ The Enterprise Edition provides a commercial license that removes the AGPL-3.0 r
The Enterprise Edition is appropriate when you:
- Build commercial products that incorporate Hanzo Sign
- Build commercial products that incorporate Hanzo eSign
- Offer document signing as part of a SaaS platform
- Cannot or prefer not to open-source your modifications
- Need to comply with corporate policies that prohibit AGPL software
- Require dedicated support and SLAs
<Callout type="warn">
If you modify Hanzo Sign and provide network access to users (internal or external) without
If you modify Hanzo eSign and provide network access to users (internal or external) without
complying with AGPL-3.0 source disclosure requirements, you need an Enterprise license.
</Callout>
@@ -102,8 +102,8 @@ See [Enterprise Edition](/docs/policies/enterprise-edition) for complete details
Use this decision tree to determine which license fits your needs:
<Accordions type="multiple">
<Accordion title="Do you modify Hanzo Sign?">
**No modifications**: Both licenses work. Community Edition is free and sufficient if you run Hanzo Sign as-is.
<Accordion title="Do you modify Hanzo eSign?">
**No modifications**: Both licenses work. Community Edition is free and sufficient if you run Hanzo eSign as-is.
**Yes, with modifications**: Continue to the next question.
@@ -114,14 +114,14 @@ Use this decision tree to determine which license fits your needs:
**No, modifications are proprietary**: Enterprise Edition is required.
</Accordion>
<Accordion title="Are you embedding Hanzo Sign in a commercial product?">
<Accordion title="Are you embedding Hanzo eSign in a commercial product?">
**Open-source product under AGPL-3.0**: Community Edition is appropriate.
**Proprietary product**: Enterprise Edition is required.
</Accordion>
<Accordion title="Internal use only?">
Using Hanzo Sign internally without providing network access to external users does not trigger AGPL-3.0 distribution requirements. However, if your organisation has policies against AGPL software or you make modifications you want to keep private, consider the Enterprise Edition.
Using Hanzo eSign internally without providing network access to external users does not trigger AGPL-3.0 distribution requirements. However, if your organisation has policies against AGPL software or you make modifications you want to keep private, consider the Enterprise Edition.
</Accordion>
</Accordions>
@@ -132,17 +132,17 @@ Use this decision tree to determine which license fits your needs:
Yes. AGPL-3.0 permits commercial use. You must comply with the license terms, including source
code disclosure if you modify and distribute or provide network access.
</Accordion>
<Accordion title="Does using the Hanzo Sign API require a commercial license?">
No. Calling the Hanzo Sign API from your application does not create a derivative work. Your
application remains under your chosen license. However, if you modify Hanzo Sign itself and
<Accordion title="Does using the Hanzo eSign API require a commercial license?">
No. Calling the Hanzo eSign API from your application does not create a derivative work. Your
application remains under your chosen license. However, if you modify Hanzo eSign itself and
provide network access, AGPL-3.0 requirements apply.
</Accordion>
<Accordion title='What counts as a "modification" under AGPL-3.0?'>
Modifying the source code, forking the repository and making changes, or linking Hanzo Sign
Modifying the source code, forking the repository and making changes, or linking Hanzo eSign
libraries into your application in a way that creates a combined work. Configuration changes and
using Hanzo Sign through its API are not modifications.
using Hanzo eSign through its API are not modifications.
</Accordion>
<Accordion title="Can I white-label Hanzo Sign?">
<Accordion title="Can I white-label Hanzo eSign?">
You can change branding for your deployment under both licenses. Under AGPL-3.0, you must retain
copyright notices and license information in the source code. Under the Enterprise license, you
have more flexibility with branding requirements.
@@ -153,14 +153,14 @@ Use this decision tree to determine which license fits your needs:
</Accordion>
<Accordion title="What happens if I switch from Community to Enterprise Edition?">
Your existing deployments can transition to the Enterprise license. Contact
[sales](https://sign.hanzo.ai/enterprise) to discuss migration.
[sales](https://esign.hanzo.ai/enterprise) to discuss migration.
</Accordion>
<Accordion title="Can I contribute to Hanzo Sign under the Enterprise license?">
Contributions to the main Hanzo Sign repository are licensed under AGPL-3.0. The Enterprise
<Accordion title="Can I contribute to Hanzo eSign under the Enterprise license?">
Contributions to the main Hanzo eSign repository are licensed under AGPL-3.0. The Enterprise
license applies only to your private use and modifications.
</Accordion>
<Accordion title="Is there a trial for the Enterprise Edition?">
Contact [sales](https://sign.hanzo.ai/enterprise) to discuss evaluation options.
Contact [sales](https://esign.hanzo.ai/enterprise) to discuss evaluation options.
</Accordion>
</Accordions>
@@ -170,4 +170,4 @@ Use this decision tree to determine which license fits your needs:
- [Community Edition](/docs/policies/community-edition) - Open-source edition details
- [Enterprise Edition](/docs/policies/enterprise-edition) - Commercial license details
- [Full AGPL-3.0 License Text](https://www.gnu.org/licenses/agpl-3.0.html) - Complete license terms
- [GitHub Repository](https://github.com/hanzoai/sign) - Source code and LICENSE file
- [GitHub Repository](https://github.com/hanzoai/esign) - Source code and LICENSE file
+2 -2
View File
@@ -1,6 +1,6 @@
---
title: Privacy Policy
description: How Hanzo Sign collects, uses, and protects your data.
description: How Hanzo eSign collects, uses, and protects your data.
---
Our full Privacy Policy is available at [sign.hanzo.ai/privacy](https://sign.hanzo.ai/privacy).
Our full Privacy Policy is available at [esign.hanzo.ai/privacy](https://esign.hanzo.ai/privacy).
+16 -16
View File
@@ -1,6 +1,6 @@
---
title: Security
description: Security practices for Hanzo Sign Cloud and self-hosted deployments, along with our vulnerability disclosure process.
description: Security practices for Hanzo eSign Cloud and self-hosted deployments, along with our vulnerability disclosure process.
---
import { Accordion, Accordions } from 'fumadocs-ui/components/accordion';
@@ -15,7 +15,7 @@ import { Tab, Tabs } from 'fumadocs-ui/components/tabs';
Dependencies are regularly updated and monitored for vulnerabilities - **Static analysis**:
Automated security scanning is part of the CI/CD pipeline - **Open source**: The codebase is
publicly available for security review at
[github.com/hanzoai/sign](https://github.com/hanzoai/sign)
[github.com/hanzoai/esign](https://github.com/hanzoai/esign)
</Accordion>
<Accordion title="Access Controls">
- **Role-based access**: Teams support member, manager, and admin roles with distinct
@@ -27,7 +27,7 @@ import { Tab, Tabs } from 'fumadocs-ui/components/tabs';
## Infrastructure Security
### Hanzo Sign Cloud
### Hanzo eSign Cloud
The hosted cloud service uses the following security measures:
@@ -48,7 +48,7 @@ Self-hosted deployments are responsible for their own infrastructure security. S
<Accordions type="multiple">
<Accordion title="Encryption in Transit">
All data transmitted to and from Hanzo Sign is encrypted using TLS 1.2 or higher. This includes:
All data transmitted to and from Hanzo eSign is encrypted using TLS 1.2 or higher. This includes:
- Web application traffic
- API requests
@@ -57,7 +57,7 @@ Self-hosted deployments are responsible for their own infrastructure security. S
</Accordion>
<Accordion title="Encryption at Rest">
For Hanzo Sign Cloud:
For Hanzo eSign Cloud:
- Database contents are encrypted at rest
- Document storage uses encrypted object storage
@@ -67,7 +67,7 @@ Self-hosted deployments are responsible for their own infrastructure security. S
</Accordion>
<Accordion title="Application-Level Encryption">
Hanzo Sign encrypts sensitive data at the application level:
Hanzo eSign encrypts sensitive data at the application level:
- Encryption keys are configured via `NEXT_PRIVATE_ENCRYPTION_KEY` and `NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY`
- Session tokens are signed using `NEXTAUTH_SECRET`
@@ -103,13 +103,13 @@ Self-hosted deployments are responsible for their own infrastructure security. S
## Vulnerability Disclosure
Hanzo Sign operates a responsible disclosure process for security vulnerabilities.
Hanzo eSign operates a responsible disclosure process for security vulnerabilities.
<Accordions type="multiple">
<Accordion title="Reporting a Vulnerability">
If you discover a security vulnerability, please report it by emailing:
**security@sign.hanzo.ai**
**security@esign.hanzo.ai**
Include the following information:
@@ -133,7 +133,7 @@ Hanzo Sign operates a responsible disclosure process for security vulnerabilitie
The following are in scope for vulnerability reports:
- Hanzo Sign application code
- Hanzo eSign application code
- Authentication and authorization flaws
- Data exposure vulnerabilities
- Injection vulnerabilities
@@ -171,8 +171,8 @@ The following are out of scope:
Security updates are announced through:
- [GitHub releases](https://github.com/hanzoai/sign/releases)
- [GitHub security advisories](https://github.com/hanzoai/sign/security/advisories)
- [GitHub releases](https://github.com/hanzoai/esign/releases)
- [GitHub security advisories](https://github.com/hanzoai/esign/security/advisories)
### Update Policy
@@ -184,7 +184,7 @@ Security updates are announced through:
For self-hosted deployments:
1. Watch the [GitHub repository](https://github.com/hanzoai/sign) for releases
1. Watch the [GitHub repository](https://github.com/hanzoai/esign) for releases
2. Subscribe to security advisories
3. Apply updates promptly, especially security patches
@@ -192,7 +192,7 @@ See [Upgrades](/docs/self-hosting/maintenance/upgrades) for update procedures.
## Self-Hosted Security Considerations
When self-hosting Hanzo Sign, you are responsible for the security of your deployment. The following recommendations apply:
When self-hosting Hanzo eSign, you are responsible for the security of your deployment. The following recommendations apply:
<Accordions type="multiple">
<Accordion title="Infrastructure">
@@ -229,9 +229,9 @@ See [Environment Variables](/docs/self-hosting/configuration/environment) for se
For security-related inquiries:
- **Security vulnerabilities**: security@sign.hanzo.ai
- **General questions**: support@sign.hanzo.ai
- **GitHub**: [github.com/hanzoai/sign](https://github.com/hanzoai/sign)
- **Security vulnerabilities**: security@esign.hanzo.ai
- **General questions**: support@esign.hanzo.ai
- **GitHub**: [github.com/hanzoai/esign](https://github.com/hanzoai/esign)
## Related
+25 -25
View File
@@ -22,11 +22,11 @@ Community support is available to all users, including those on free plans and s
<Tabs items={['Discord', 'GitHub']}>
<Tab value="Discord">
Join the Hanzo Sign Discord server to:
Join the Hanzo eSign Discord server to:
- Ask questions and get help from the community
- Share feedback and feature requests
- Connect with other Hanzo Sign users
- Connect with other Hanzo eSign users
- Stay updated on announcements
Discord is best for general questions and discussions. Response times vary based on community availability.
@@ -36,12 +36,12 @@ Discord is best for general questions and discussions. Response times vary based
Use GitHub for technical discussions and bug reports:
- **[GitHub Discussions](https://github.com/hanzoai/sign/discussions)**: Ask questions, share ideas, and discuss features
- **[GitHub Issues](https://github.com/hanzoai/sign/issues)**: Report confirmed bugs with reproducible steps
- **[GitHub Discussions](https://github.com/hanzoai/esign/discussions)**: Ask questions, share ideas, and discuss features
- **[GitHub Issues](https://github.com/hanzoai/esign/issues)**: Report confirmed bugs with reproducible steps
When opening an issue, include:
1. Hanzo Sign version
1. Hanzo eSign version
2. Deployment method (Cloud, self-hosted Docker, Kubernetes, etc.)
3. Steps to reproduce the problem
4. Expected vs actual behavior
@@ -57,25 +57,25 @@ When opening an issue, include:
## Paid Support Tiers
Paid plans include access to direct support from the Hanzo Sign team.
Paid plans include access to direct support from the Hanzo eSign team.
<Tabs items={['Standard Support', 'Platform and Above', 'Enterprise Support']}>
<Tab value="Standard Support">
Available on paid subscription plans:
- Email support at support@sign.hanzo.ai
- Email support at support@esign.hanzo.ai
- Account and billing assistance
- Technical guidance for Hanzo Sign Cloud usage
- Technical guidance for Hanzo eSign Cloud usage
- Response during business hours
</Tab>
<Tab value="Platform and Above">
Available on [Platform plans](https://sign.hanzo.ai/platform-cta-pricing) and above:
Available on [Platform plans](https://esign.hanzo.ai/platform-cta-pricing) and above:
- All standard support channels
- Private Discord channel for direct communication with the Hanzo Sign team
- Private Discord channel for direct communication with the Hanzo eSign team
- Private Slack workspace for closer collaboration
</Tab>
@@ -90,7 +90,7 @@ Available with Enterprise subscriptions:
- Custom configuration guidance
- Scheduled calls for complex issues
Contact [sales](https://sign.hanzo.ai/enterprise) for Enterprise support options.
Contact [sales](https://esign.hanzo.ai/enterprise) for Enterprise support options.
</Tab>
</Tabs>
@@ -105,11 +105,11 @@ Self-hosted deployments have access to community support through Discord and Git
- [Self-Hosting Documentation](/docs/self-hosting) - Setup and configuration guides
- [Troubleshooting Guide](/docs/self-hosting/maintenance/troubleshooting) - Common issues and solutions
- [GitHub Discussions](https://github.com/hanzoai/sign/discussions) - Community Q&A
- [GitHub Discussions](https://github.com/hanzoai/esign/discussions) - Community Q&A
<Callout type="info">
Enterprise licenses for self-hosted deployments can include dedicated support. Contact
[sales](https://sign.hanzo.ai/enterprise) for details.
[sales](https://esign.hanzo.ai/enterprise) for details.
</Callout>
## Response Times
@@ -129,7 +129,7 @@ Response times are targets, not guarantees. Actual times may vary based on issue
<Tabs items={['Included', 'Not included']}>
<Tab value="Included">
- Guidance on Hanzo Sign features and functionality
- Guidance on Hanzo eSign features and functionality
- Help with configuration and settings
- Troubleshooting application errors
- Account and billing questions (paid plans)
@@ -150,7 +150,7 @@ Response times are targets, not guarantees. Actual times may vary based on issue
<Callout type="info">
Professional services for custom development, training, and dedicated implementation support are
available separately. Contact [sales](https://sign.hanzo.ai/sales) for details.
available separately. Contact [sales](https://esign.hanzo.ai/sales) for details.
</Callout>
## Escalation Process
@@ -185,7 +185,7 @@ If your issue is not resolved through initial support channels:
</Step>
</Steps>
For billing disputes or account issues, email support@sign.hanzo.ai with your account details.
For billing disputes or account issues, email support@esign.hanzo.ai with your account details.
## Security Issues
@@ -196,7 +196,7 @@ Do not report security vulnerabilities through public channels (GitHub Issues, D
<Step>
### Email the security team
Email security@sign.hanzo.ai.
Email security@esign.hanzo.ai.
</Step>
<Step>
@@ -219,22 +219,22 @@ Do not report security vulnerabilities through public channels (GitHub Issues, D
</Step>
</Steps>
Hanzo Sign follows responsible disclosure practices. Security researchers who report valid vulnerabilities responsibly will be acknowledged.
Hanzo eSign follows responsible disclosure practices. Security researchers who report valid vulnerabilities responsibly will be acknowledged.
## Contact
| Purpose | Contact |
| ---------------- | -------------------------------------------------------------- |
| General support | support@sign.hanzo.ai |
| Security issues | security@sign.hanzo.ai |
| Enterprise sales | [sales@sign.hanzo.ai](https://sign.hanzo.ai/enterprise) |
| Privacy requests | privacy@sign.hanzo.ai |
| Community | [Discord](https://sign.hanzo.ai/discord) |
| Bug reports | [GitHub Issues](https://github.com/hanzoai/sign/issues) |
| General support | support@esign.hanzo.ai |
| Security issues | security@esign.hanzo.ai |
| Enterprise sales | [sales@esign.hanzo.ai](https://esign.hanzo.ai/enterprise) |
| Privacy requests | privacy@esign.hanzo.ai |
| Community | [Discord](https://esign.hanzo.ai/discord) |
| Bug reports | [GitHub Issues](https://github.com/hanzoai/esign/issues) |
## Related
- [Troubleshooting](/docs/self-hosting/maintenance/troubleshooting) - Self-hosted issue resolution
- [Self-Hosting](/docs/self-hosting) - Deployment and configuration guides
- [Enterprise Edition](/docs/policies/enterprise-edition) - Commercial licensing options
- [Privacy Policy](/docs/policies/privacy) - How Hanzo Sign handles your data
- [Privacy Policy](/docs/policies/privacy) - How Hanzo eSign handles your data
+2 -2
View File
@@ -1,6 +1,6 @@
---
title: Terms of Service
description: The terms that govern your use of Hanzo Sign.
description: The terms that govern your use of Hanzo eSign.
---
Our full Terms of Service are available at [sign.hanzo.ai/terms](https://sign.hanzo.ai/terms).
Our full Terms of Service are available at [esign.hanzo.ai/terms](https://esign.hanzo.ai/terms).
@@ -1,6 +1,6 @@
---
title: AI Recipient & Field Detection (Self-hosting)
description: Configure Google Vertex AI so Hanzo Sign can detect recipients and fields automatically.
description: Configure Google Vertex AI so Hanzo eSign can detect recipients and fields automatically.
---
import { Accordion, Accordions } from 'fumadocs-ui/components/accordion';
@@ -9,7 +9,7 @@ import { Step, Steps } from 'fumadocs-ui/components/steps';
## Overview
This guide covers how to enable the AI recipient and field detection features when you self-host Hanzo Sign.
This guide covers how to enable the AI recipient and field detection features when you self-host Hanzo eSign.
## What This Enables
@@ -21,7 +21,7 @@ This guide covers how to enable the AI recipient and field detection features wh
- A Google Cloud project with the **Vertex AI API** enabled and billing active.
- A **Vertex AI Express API key** with access to Gemini models (create via the [Vertex AI Express flow](https://cloud.google.com/vertex-ai/generative-ai/docs/start/express-mode/overview) and manage keys in [API keys](https://cloud.google.com/vertex-ai/generative-ai/docs/start/api-keys)).
- Hanzo Sign version that includes the AI detection feature and the corresponding database migration.
- Hanzo eSign version that includes the AI detection feature and the corresponding database migration.
## Configure Environment Variables
@@ -36,17 +36,17 @@ GOOGLE_VERTEX_LOCATION="global"
<Callout type="info">
Use a region close to your users if you need data residency considerations (e.g. `europe-west1`).
If you omit the location, Hanzo Sign uses `global`. Not all models are available in every region;
If you omit the location, Hanzo eSign uses `global`. Not all models are available in every region;
if a model is unavailable, switch to a supported region.
</Callout>
## Deploy with the Published Container
- Use the official Hanzo Sign image (DockerHub or GHCR) and supply the Vertex env vars above.
- Use the official Hanzo eSign image (DockerHub or GHCR) and supply the Vertex env vars above.
- Ensure migrations run on startup (the container runs `prisma migrate deploy` in production mode).
- Restart the container after adding or changing Vertex env vars.
## Enable the Feature in Hanzo Sign
## Enable the Feature in Hanzo eSign
Once the service is running with the Vertex env vars:
@@ -1,6 +1,6 @@
---
title: Setting up OAuth Providers
description: Learn how to set up OAuth providers for your own instance of Hanzo Sign.
description: Learn how to set up OAuth providers for your own instance of Hanzo eSign.
---
import { Step, Steps } from 'fumadocs-ui/components/steps';
@@ -55,7 +55,7 @@ Set:
<Step>
### Set environment variables
In your Hanzo Sign environment, set:
In your Hanzo eSign environment, set:
```
NEXT_PRIVATE_GOOGLE_CLIENT_ID=<your-client-id>
@@ -90,7 +90,7 @@ In the left sidebar, click **App registrations**, then **New registration**.
<Step>
### Name and choose account types
Enter a name (e.g. "Hanzo Sign").
Enter a name (e.g. "Hanzo eSign").
Under **Supported account types**, select both:
@@ -136,7 +136,7 @@ After registration you're on the app overview page. Copy the **Application (clie
<Step>
### Set environment variables
In your Hanzo Sign environment, set:
In your Hanzo eSign environment, set:
```
NEXT_PRIVATE_MICROSOFT_CLIENT_ID=<your-application-client-id>
@@ -1,6 +1,6 @@
---
title: Database Configuration
description: Configure PostgreSQL connection strings, pooling, SSL, migrations, and performance tuning for your Hanzo Sign deployment.
description: Configure PostgreSQL connection strings, pooling, SSL, migrations, and performance tuning for your Hanzo eSign deployment.
---
import { Accordion, Accordions } from 'fumadocs-ui/components/accordion';
@@ -9,7 +9,7 @@ import { Tab, Tabs } from 'fumadocs-ui/components/tabs';
## Supported Databases
Hanzo Sign requires **PostgreSQL 14 or later**. No other databases are supported.
Hanzo eSign requires **PostgreSQL 14 or later**. No other databases are supported.
PostgreSQL provides the reliability, performance, and feature set required for document signing workflows, including:
@@ -61,7 +61,7 @@ postgresql://hanzo-sign:p%40ss%23word@localhost:5432/hanzo-sign
## Environment Variables
Hanzo Sign uses two database connection variables:
Hanzo eSign uses two database connection variables:
| Variable | Purpose |
| ---------------------------------- | --------------------------------------------------- |
@@ -79,7 +79,7 @@ NEXT_PRIVATE_DIRECT_DATABASE_URL=postgresql://user:password@host:5432/hanzo-sign
### Automatic Detection
Hanzo Sign automatically detects common database environment variable formats used by hosting providers:
Hanzo eSign automatically detects common database environment variable formats used by hosting providers:
| Provider Variable | Maps To |
| -------------------------- | ---------------------------------- |
@@ -89,7 +89,7 @@ Hanzo Sign automatically detects common database environment variable formats us
| `DATABASE_URL_UNPOOLED` | `NEXT_PRIVATE_DIRECT_DATABASE_URL` |
| `POSTGRES_URL_NON_POOLING` | `NEXT_PRIVATE_DIRECT_DATABASE_URL` |
If your hosting provider sets these variables, Hanzo Sign will use them automatically.
If your hosting provider sets these variables, Hanzo eSign will use them automatically.
## Connection Pooling
@@ -125,7 +125,7 @@ NEXT_PRIVATE_DIRECT_DATABASE_URL=postgresql://user:password@db-host:5432/hanzo-s
### Prisma Connection Pool
Hanzo Sign uses Prisma, which maintains its own connection pool. Configure pool size with connection string parameters:
Hanzo eSign uses Prisma, which maintains its own connection pool. Configure pool size with connection string parameters:
```
postgresql://user:password@host:5432/hanzo-sign?connection_limit=10&pool_timeout=30
@@ -178,11 +178,11 @@ docker run -d \
## Running Migrations
Database migrations update your schema when upgrading Hanzo Sign.
Database migrations update your schema when upgrading Hanzo eSign.
### Automatic Migrations
When running Hanzo Sign via Docker, migrations run automatically on container startup. No manual intervention is required.
When running Hanzo eSign via Docker, migrations run automatically on container startup. No manual intervention is required.
### Manual Migrations
@@ -369,7 +369,7 @@ Most managed database services provide automated backups:
### PostgreSQL Configuration
Key parameters for Hanzo Sign workloads:
Key parameters for Hanzo eSign workloads:
| Parameter | Recommended Value | Description |
| ---------------------- | ----------------- | ------------------------------------- |
@@ -391,7 +391,7 @@ Example: 3 app instances with pool size 10 = `(3 × 10) + 10 = 40` connections m
### Indexing
Hanzo Sign includes necessary indexes by default. Additional indexes may help for:
Hanzo eSign includes necessary indexes by default. Additional indexes may help for:
- Custom reporting queries
- High-volume document searches
@@ -9,7 +9,7 @@ import { Step, Steps } from 'fumadocs-ui/components/steps';
## Supported Email Transports
Hanzo Sign supports four email transport methods:
Hanzo eSign supports four email transport methods:
| Transport | Use Case | Configuration Complexity |
| -------------- | ------------------------------------- | ------------------------ |
@@ -31,7 +31,7 @@ All transports require sender configuration:
```bash
NEXT_PRIVATE_SMTP_FROM_ADDRESS="noreply@example.com"
NEXT_PRIVATE_SMTP_FROM_NAME="Hanzo Sign"
NEXT_PRIVATE_SMTP_FROM_NAME="Hanzo eSign"
```
<Callout type="warn">
@@ -41,7 +41,7 @@ NEXT_PRIVATE_SMTP_FROM_NAME="Hanzo Sign"
## SMTP Configuration
SMTP is the most common email transport. Hanzo Sign supports two SMTP authentication methods.
SMTP is the most common email transport. Hanzo eSign supports two SMTP authentication methods.
### SMTP with Username/Password (smtp-auth)
@@ -69,7 +69,7 @@ NEXT_PRIVATE_SMTP_PORT="587"
NEXT_PRIVATE_SMTP_USERNAME="your-username"
NEXT_PRIVATE_SMTP_PASSWORD="your-password"
NEXT_PRIVATE_SMTP_FROM_ADDRESS="noreply@example.com"
NEXT_PRIVATE_SMTP_FROM_NAME="Hanzo Sign"
NEXT_PRIVATE_SMTP_FROM_NAME="Hanzo eSign"
```
### Common SMTP Provider Examples
@@ -83,7 +83,7 @@ NEXT_PRIVATE_SMTP_PORT="587"
NEXT_PRIVATE_SMTP_USERNAME="your-email@gmail.com"
NEXT_PRIVATE_SMTP_PASSWORD="your-app-password"
NEXT_PRIVATE_SMTP_FROM_ADDRESS="your-email@gmail.com"
NEXT_PRIVATE_SMTP_FROM_NAME="Hanzo Sign"
NEXT_PRIVATE_SMTP_FROM_NAME="Hanzo eSign"
```
<Callout type="info">
@@ -100,7 +100,7 @@ NEXT_PRIVATE_SMTP_PORT="587"
NEXT_PRIVATE_SMTP_USERNAME="your-email@yourdomain.com"
NEXT_PRIVATE_SMTP_PASSWORD="your-password"
NEXT_PRIVATE_SMTP_FROM_ADDRESS="your-email@yourdomain.com"
NEXT_PRIVATE_SMTP_FROM_NAME="Hanzo Sign"
NEXT_PRIVATE_SMTP_FROM_NAME="Hanzo eSign"
```
**Amazon SES:**
@@ -112,7 +112,7 @@ NEXT_PRIVATE_SMTP_PORT="587"
NEXT_PRIVATE_SMTP_USERNAME="your-ses-smtp-username"
NEXT_PRIVATE_SMTP_PASSWORD="your-ses-smtp-password"
NEXT_PRIVATE_SMTP_FROM_ADDRESS="noreply@yourdomain.com"
NEXT_PRIVATE_SMTP_FROM_NAME="Hanzo Sign"
NEXT_PRIVATE_SMTP_FROM_NAME="Hanzo eSign"
```
**Postmark:**
@@ -124,7 +124,7 @@ NEXT_PRIVATE_SMTP_PORT="587"
NEXT_PRIVATE_SMTP_USERNAME="your-postmark-server-api-token"
NEXT_PRIVATE_SMTP_PASSWORD="your-postmark-server-api-token"
NEXT_PRIVATE_SMTP_FROM_ADDRESS="noreply@yourdomain.com"
NEXT_PRIVATE_SMTP_FROM_NAME="Hanzo Sign"
NEXT_PRIVATE_SMTP_FROM_NAME="Hanzo eSign"
```
### SMTP with API Key (smtp-api)
@@ -151,7 +151,7 @@ NEXT_PRIVATE_SMTP_PORT="587"
NEXT_PRIVATE_SMTP_APIKEY_USER="apikey"
NEXT_PRIVATE_SMTP_APIKEY="SG.xxxxxxxxxxxxxxxxxxxx"
NEXT_PRIVATE_SMTP_FROM_ADDRESS="noreply@yourdomain.com"
NEXT_PRIVATE_SMTP_FROM_NAME="Hanzo Sign"
NEXT_PRIVATE_SMTP_FROM_NAME="Hanzo eSign"
```
## Resend Configuration
@@ -171,7 +171,7 @@ NEXT_PRIVATE_SMTP_FROM_NAME="Hanzo Sign"
NEXT_PRIVATE_SMTP_TRANSPORT="resend"
NEXT_PRIVATE_RESEND_API_KEY="re_xxxxxxxxxxxxxxxxxxxx"
NEXT_PRIVATE_SMTP_FROM_ADDRESS="noreply@yourdomain.com"
NEXT_PRIVATE_SMTP_FROM_NAME="Hanzo Sign"
NEXT_PRIVATE_SMTP_FROM_NAME="Hanzo eSign"
```
**Setup Steps:**
@@ -193,7 +193,7 @@ Configure your domain in the Resend dashboard so you can send from your own addr
<Step>
### Create an API key
Generate an API key in the Resend dashboard for Hanzo Sign to use.
Generate an API key in the Resend dashboard for Hanzo eSign to use.
</Step>
<Step>
@@ -225,7 +225,7 @@ Set the variables in the table above, including `NEXT_PRIVATE_RESEND_API_KEY` an
NEXT_PRIVATE_SMTP_TRANSPORT="mailchannels"
NEXT_PRIVATE_MAILCHANNELS_API_KEY="your-api-key"
NEXT_PRIVATE_SMTP_FROM_ADDRESS="noreply@yourdomain.com"
NEXT_PRIVATE_SMTP_FROM_NAME="Hanzo Sign"
NEXT_PRIVATE_SMTP_FROM_NAME="Hanzo eSign"
```
**With DKIM Signing:**
@@ -237,12 +237,12 @@ NEXT_PRIVATE_MAILCHANNELS_DKIM_DOMAIN="yourdomain.com"
NEXT_PRIVATE_MAILCHANNELS_DKIM_SELECTOR="mailchannels"
NEXT_PRIVATE_MAILCHANNELS_DKIM_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\n...\n-----END RSA PRIVATE KEY-----"
NEXT_PRIVATE_SMTP_FROM_ADDRESS="noreply@yourdomain.com"
NEXT_PRIVATE_SMTP_FROM_NAME="Hanzo Sign"
NEXT_PRIVATE_SMTP_FROM_NAME="Hanzo eSign"
```
## Email Templates
Hanzo Sign uses React Email templates for all outgoing emails. The templates are located in `packages/email/templates/` and include:
Hanzo eSign uses React Email templates for all outgoing emails. The templates are located in `packages/email/templates/` and include:
| Template | Purpose |
| ------------------------- | ----------------------------------------- |
@@ -260,7 +260,7 @@ Hanzo Sign uses React Email templates for all outgoing emails. The templates are
Email templates support branding customization through organisation settings. When branding is enabled:
- Custom logo replaces the Hanzo Sign logo
- Custom logo replaces the Hanzo eSign logo
- Branding colors are applied to email elements
Configure branding in the application under **Organisation Settings > Preferences > Branding**.
@@ -285,14 +285,14 @@ For development or testing, use a local SMTP server like [Mailhog](https://githu
docker run -d -p 1025:1025 -p 8025:8025 mailhog/mailhog
```
Configure Hanzo Sign to use the test server:
Configure Hanzo eSign to use the test server:
```bash
NEXT_PRIVATE_SMTP_TRANSPORT="smtp-auth"
NEXT_PRIVATE_SMTP_HOST="localhost"
NEXT_PRIVATE_SMTP_PORT="1025"
NEXT_PRIVATE_SMTP_FROM_ADDRESS="test@localhost"
NEXT_PRIVATE_SMTP_FROM_NAME="Hanzo Sign Test"
NEXT_PRIVATE_SMTP_FROM_NAME="Hanzo eSign Test"
```
View sent emails at `http://localhost:8025`.
@@ -356,7 +356,7 @@ Enable DKIM signing in your provider settings.
</Step>
</Steps>
For MailChannels, configure DKIM directly in Hanzo Sign using the environment variables described above.
For MailChannels, configure DKIM directly in Hanzo eSign using the environment variables described above.
### DMARC Configuration
@@ -1,18 +1,18 @@
---
title: Environment Variables
description: Complete reference for all environment variables used to configure a self-hosted Hanzo Sign instance.
description: Complete reference for all environment variables used to configure a self-hosted Hanzo eSign instance.
---
## Required Variables
These variables must be set for Hanzo Sign to function:
These variables must be set for Hanzo eSign to function:
| Variable | Description |
| --------------------------------------- | ------------------------------------------------------------------------------------------ |
| `NEXTAUTH_SECRET` | Secret key for NextAuth.js encryption and signing. Generate with `openssl rand -base64 32` |
| `NEXT_PRIVATE_ENCRYPTION_KEY` | Primary encryption key for symmetric encryption (minimum 32 characters) |
| `NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY` | Secondary encryption key for symmetric encryption (minimum 32 characters) |
| `NEXT_PUBLIC_WEBAPP_URL` | Public URL of your Hanzo Sign instance (e.g., `https://sign.example.com`) |
| `NEXT_PUBLIC_WEBAPP_URL` | Public URL of your Hanzo eSign instance (e.g., `https://sign.example.com`) |
| `NEXT_PRIVATE_DATABASE_URL` | PostgreSQL connection URL with connection pooling |
| `NEXT_PRIVATE_SMTP_FROM_ADDRESS` | Email address used as the sender for all outgoing emails |
| `NEXT_PRIVATE_SMTP_FROM_NAME` | Display name for the sender of outgoing emails |
@@ -30,7 +30,7 @@ These variables must be set for Hanzo Sign to function:
## Database Configuration
Hanzo Sign requires PostgreSQL 14 or higher.
Hanzo eSign requires PostgreSQL 14 or higher.
| Variable | Required | Description |
| ---------------------------------- | ------------ | ------------------------------------------------------------------------------------------ |
@@ -90,7 +90,7 @@ Callback URL: `https://<your-domain>/api/auth/callback/microsoft`
## Email Configuration
Hanzo Sign supports multiple email transports for sending notifications.
Hanzo eSign supports multiple email transports for sending notifications.
### Transport Selection
@@ -148,7 +148,7 @@ For detailed email setup, see [Email Configuration](/docs/self-hosting/configura
## Storage Configuration
Hanzo Sign can store documents in the database or S3-compatible storage.
Hanzo eSign can store documents in the database or S3-compatible storage.
| Variable | Description | Default |
| ---------------------------------------- | ------------------------------------------- | ---------- |
@@ -182,7 +182,7 @@ For detailed storage setup, see [Storage Configuration](/docs/self-hosting/confi
## Signing Certificate Configuration
Hanzo Sign requires a certificate to digitally sign documents.
Hanzo eSign requires a certificate to digitally sign documents.
### Transport Selection
@@ -234,7 +234,7 @@ For detailed certificate setup, see [Signing Certificate](/docs/self-hosting/con
## AI Features
Hanzo Sign can use Google Vertex AI for recipient and field detection.
Hanzo eSign can use Google Vertex AI for recipient and field detection.
| Variable | Description | Default |
| -------------------------- | ---------------------------------------------- | -------- |
@@ -248,7 +248,7 @@ AI features must also be enabled in organisation/team settings after configurati
## Background Jobs
Hanzo Sign uses a PostgreSQL-based job queue by default. Jobs (email delivery, document processing, webhook dispatch) are stored in the `BackgroundJob` table and processed via internal HTTP requests. No external queue service like Redis is required.
Hanzo eSign uses a PostgreSQL-based job queue by default. Jobs (email delivery, document processing, webhook dispatch) are stored in the `BackgroundJob` table and processed via internal HTTP requests. No external queue service like Redis is required.
| Variable | Description | Default |
| ---------------------------- | ------------------------------------------------------------------------------ | ------- |
@@ -287,7 +287,7 @@ Telemetry collects only: app version, installation ID, and node ID. No personal
## Enterprise Features
These variables require an active [Enterprise Edition](/docs/policies/enterprise-edition) license. Obtain a license key from [license.sign.hanzo.ai](https://license.sign.hanzo.ai) and set it below to unlock enterprise features such as SSO, embed authoring, and 21 CFR Part 11 compliance.
These variables require an active [Enterprise Edition](/docs/policies/enterprise-edition) license. Obtain a license key from [license.esign.hanzo.ai](https://license.esign.hanzo.ai) and set it below to unlock enterprise features such as SSO, embed authoring, and 21 CFR Part 11 compliance.
| Variable | Description |
| ------------------------------------ | ------------------------------------------------ |
@@ -321,7 +321,7 @@ NEXT_PRIVATE_SMTP_HOST="smtp.example.com"
NEXT_PRIVATE_SMTP_PORT=587
NEXT_PRIVATE_SMTP_USERNAME="your-smtp-user"
NEXT_PRIVATE_SMTP_PASSWORD="your-smtp-password"
NEXT_PRIVATE_SMTP_FROM_NAME="Hanzo Sign"
NEXT_PRIVATE_SMTP_FROM_NAME="Hanzo eSign"
NEXT_PRIVATE_SMTP_FROM_ADDRESS="noreply@example.com"
# Signing (certificate must be configured)
@@ -1,6 +1,6 @@
---
title: Configuration
description: Configure your self-hosted Hanzo Sign instance with environment variables, database, email, storage, and signing.
description: Configure your self-hosted Hanzo eSign instance with environment variables, database, email, storage, and signing.
---
<Cards>
@@ -27,13 +27,13 @@ Create an HSM key ring and an asymmetric signing key in Cloud KMS (see [Creating
<Step>
### Create service account
Create a service account with the `cloudkms.signerVerifier` role so Hanzo Sign can use the key.
Create a service account with the `cloudkms.signerVerifier` role so Hanzo eSign can use the key.
</Step>
<Step>
### Export public certificate
Export the public certificate from the HSM key; Hanzo Sign needs it to embed in signatures.
Export the public certificate from the HSM key; Hanzo eSign needs it to embed in signatures.
</Step>
</Steps>
@@ -1,17 +1,17 @@
---
title: Signing Certificate
description: Configure the X.509 signing certificate used for digital signatures in self-hosted Hanzo Sign.
description: Configure the X.509 signing certificate used for digital signatures in self-hosted Hanzo eSign.
---
import { Tab, Tabs } from 'fumadocs-ui/components/tabs';
When a document is completed in Hanzo Sign, it is digitally signed using an X.509 certificate. This cryptographic signature provides:
When a document is completed in Hanzo eSign, it is digitally signed using an X.509 certificate. This cryptographic signature provides:
- Proof of document authenticity
- Verification that the document has not been modified since signing
- Identity information about the signing entity
Self-hosted Hanzo Sign instances require a signing certificate. You can generate a self-signed certificate or purchase one from a Certificate Authority (CA).
Self-hosted Hanzo eSign instances require a signing certificate. You can generate a self-signed certificate or purchase one from a Certificate Authority (CA).
<Cards>
<Card
@@ -71,7 +71,7 @@ For Adobe recognition, choose a vendor from the [Adobe Approved Trust List](http
</Tab>
<Tab value="Google Cloud HSM">
For organisations requiring hardware-based key protection, Hanzo Sign supports Google Cloud HSM. This provides:
For organisations requiring hardware-based key protection, Hanzo eSign supports Google Cloud HSM. This provides:
- FIPS 140-2 Level 3 certified key storage
- Keys never leave the HSM
@@ -53,7 +53,7 @@ import { Accordion, Accordions } from 'fumadocs-ui/components/accordion';
Solution:
- Generate a new certificate or obtain a renewed one
- Update the certificate file and restart Hanzo Sign
- Update the certificate file and restart Hanzo eSign
- Check expiration:
```bash
@@ -57,7 +57,7 @@ No configuration required. Database storage is enabled when `NEXT_PUBLIC_UPLOAD_
## S3 Configuration
S3 storage is recommended for production deployments. Hanzo Sign supports AWS S3 and any S3-compatible storage service.
S3 storage is recommended for production deployments. Hanzo eSign supports AWS S3 and any S3-compatible storage service.
### Required Variables
@@ -175,7 +175,7 @@ docker run -d \
minio/minio server /data --console-address ":9001"
```
Using Docker Compose with Hanzo Sign:
Using Docker Compose with Hanzo eSign:
```yaml
services:
@@ -235,7 +235,7 @@ NEXT_PRIVATE_UPLOAD_REGION=us-east-1
## Other S3-Compatible Services
Hanzo Sign works with any S3-compatible storage service. Configure the endpoint and enable path-style URLs if required.
Hanzo eSign works with any S3-compatible storage service. Configure the endpoint and enable path-style URLs if required.
### Cloudflare R2
@@ -289,7 +289,7 @@ Use Amazon CloudFront to serve documents with lower latency and reduced S3 costs
### Prerequisites
- An S3 bucket configured for Hanzo Sign
- An S3 bucket configured for Hanzo eSign
- A CloudFront distribution with the S3 bucket as origin
- A CloudFront key pair for signing URLs
@@ -377,7 +377,7 @@ Signed URLs expire after 1 hour.
## Migration Between Storage Backends
Hanzo Sign does not provide automatic migration between storage backends. Each document's storage location is recorded in the database.
Hanzo eSign does not provide automatic migration between storage backends. Each document's storage location is recorded in the database.
<Callout type="warn">
Documents uploaded to one storage backend cannot be automatically migrated to another. Plan your
@@ -418,7 +418,7 @@ This requires custom scripts and database modifications.
### Hybrid Operation
During migration, Hanzo Sign can read from both backends. The `DocumentData.type` field indicates where each document is stored.
During migration, Hanzo eSign can read from both backends. The `DocumentData.type` field indicates where each document is stored.
- `BYTES_64`: Stored in database
- `S3_PATH`: Stored in S3
@@ -1,6 +1,6 @@
---
title: Telemetry
description: Learn about the telemetry data that Hanzo Sign collects from self-hosted instances.
description: Learn about the telemetry data that Hanzo eSign collects from self-hosted instances.
---
import { Accordion, Accordions } from 'fumadocs-ui/components/accordion';
@@ -8,13 +8,13 @@ import { Tab, Tabs } from 'fumadocs-ui/components/tabs';
## Overview
Hanzo Sign collects anonymous telemetry data from self-hosted instances to help us understand how the software is being used and make improvements to the product. This telemetry is enabled by default, but you can easily disable it if you prefer.
Hanzo eSign collects anonymous telemetry data from self-hosted instances to help us understand how the software is being used and make improvements to the product. This telemetry is enabled by default, but you can easily disable it if you prefer.
## What We Collect
We collect minimal, privacy-preserving information that helps us understand the health and adoption of self-hosted installations:
- **App Version**: The version of Hanzo Sign you are running. This helps us understand which versions are in use and prioritize support for older versions.
- **App Version**: The version of Hanzo eSign you are running. This helps us understand which versions are in use and prioritize support for older versions.
- **Installation ID**: A unique identifier for your installation. This is stored in your database and helps us count distinct installations without knowing who you are.
@@ -1,6 +1,6 @@
---
title: Docker Compose
description: Deploy Hanzo Sign with Docker Compose, including PostgreSQL. This production-ready setup is suitable for most self-hosted deployments.
description: Deploy Hanzo eSign with Docker Compose, including PostgreSQL. This production-ready setup is suitable for most self-hosted deployments.
---
import { Accordion, Accordions } from 'fumadocs-ui/components/accordion';
@@ -41,7 +41,7 @@ curl -O https://raw.githubusercontent.com/hanzo-sign/hanzo-sign/release/docker/p
Alternatively, clone the full repository:
```bash
git clone https://github.com/hanzoai/sign.git
git clone https://github.com/hanzoai/esign.git
cd hanzo-sign/docker/production
```
@@ -109,7 +109,7 @@ volumes:
| `database` | PostgreSQL 15 database with persistent storage |
| `hanzo-sign` | Main application container, waits for database to be healthy |
The Hanzo Sign container waits for the database health check to pass before starting.
The Hanzo eSign container waits for the database health check to pass before starting.
## Environment Configuration
@@ -128,7 +128,7 @@ NEXTAUTH_SECRET=your-nextauth-secret
NEXT_PRIVATE_ENCRYPTION_KEY=your-encryption-key-min-32-characters
NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY=your-secondary-key-min-32-characters
# Public URL where Hanzo Sign is accessible
# Public URL where Hanzo eSign is accessible
NEXT_PUBLIC_WEBAPP_URL=https://sign.example.com
NEXT_PRIVATE_INTERNAL_WEBAPP_URL=http://localhost:3000
@@ -141,7 +141,7 @@ NEXT_PRIVATE_SMTP_HOST=smtp.example.com
NEXT_PRIVATE_SMTP_PORT=587
NEXT_PRIVATE_SMTP_USERNAME=your-smtp-username
NEXT_PRIVATE_SMTP_PASSWORD=your-smtp-password
NEXT_PRIVATE_SMTP_FROM_NAME=Hanzo Sign
NEXT_PRIVATE_SMTP_FROM_NAME=Hanzo eSign
NEXT_PRIVATE_SMTP_FROM_ADDRESS=noreply@example.com
```
@@ -237,7 +237,7 @@ docker compose logs -f hanzo-sign
Look for "Ready" or "Listening on port 3000" in the output.
## Accessing Hanzo Sign
## Accessing Hanzo eSign
Once the containers are running:
@@ -309,7 +309,7 @@ docker compose down -v
Using `down -v` deletes the database volume. Back up your data first.
</Callout>
### Update Hanzo Sign
### Update Hanzo eSign
{/* prettier-ignore */}
<Steps>
@@ -341,7 +341,7 @@ Database migrations run automatically on container startup.
### Reverse Proxy
For production, place Hanzo Sign behind a reverse proxy for SSL termination:
For production, place Hanzo eSign behind a reverse proxy for SSL termination:
**nginx example:**
@@ -1,6 +1,6 @@
---
title: Docker
description: Run Hanzo Sign as a standalone Docker container with an external database. Ideal for container platforms like AWS ECS, Google Cloud Run, or Azure Container Instances.
description: Run Hanzo eSign as a standalone Docker container with an external database. Ideal for container platforms like AWS ECS, Google Cloud Run, or Azure Container Instances.
---
import { Accordion, Accordions } from 'fumadocs-ui/components/accordion';
@@ -46,14 +46,14 @@ docker pull hanzo-sign/hanzo-sign:latest
### Required Variables
These variables must be set for Hanzo Sign to start:
These variables must be set for Hanzo eSign to start:
| Variable | Description | Default |
| --------------------------------------- | --------------------------------------------------------------------------- | ----------------------------- |
| `NEXTAUTH_SECRET` | Secret key for session encryption. Generate with `openssl rand -base64 32` | - |
| `NEXT_PRIVATE_ENCRYPTION_KEY` | Primary encryption key (minimum 32 characters) | - |
| `NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY` | Secondary encryption key (minimum 32 characters) | - |
| `NEXT_PUBLIC_WEBAPP_URL` | Public URL where Hanzo Sign is accessible (e.g., `https://sign.example.com`) | - |
| `NEXT_PUBLIC_WEBAPP_URL` | Public URL where Hanzo eSign is accessible (e.g., `https://sign.example.com`) | - |
| `NEXT_PRIVATE_INTERNAL_WEBAPP_URL` | Internal URL the app uses to call itself (for background jobs) | Same as `NEXT_PUBLIC_WEBAPP_URL` |
| `NEXT_PRIVATE_DATABASE_URL` | PostgreSQL connection string | - |
| `NEXT_PRIVATE_SMTP_TRANSPORT` | Email transport: `smtp-auth`, `smtp-api`, `resend`, or `mailchannels` | `smtp-auth` |
@@ -62,7 +62,7 @@ These variables must be set for Hanzo Sign to start:
### Database Connection
Hanzo Sign requires two database connection strings:
Hanzo eSign requires two database connection strings:
| Variable | Required | Default | Description |
| ---------------------------------- | ------------ | --------------------------- | --------------------------------- |
@@ -125,7 +125,7 @@ docker run -d \
-e NEXT_PRIVATE_SMTP_PORT="587" \
-e NEXT_PRIVATE_SMTP_USERNAME="your-smtp-user" \
-e NEXT_PRIVATE_SMTP_PASSWORD="your-smtp-password" \
-e NEXT_PRIVATE_SMTP_FROM_NAME="Hanzo Sign" \
-e NEXT_PRIVATE_SMTP_FROM_NAME="Hanzo eSign" \
-e NEXT_PRIVATE_SMTP_FROM_ADDRESS="noreply@example.com" \
hanzo-sign/hanzo-sign:latest
```
@@ -167,7 +167,7 @@ NEXT_PRIVATE_SMTP_HOST=smtp.example.com
NEXT_PRIVATE_SMTP_PORT=587
NEXT_PRIVATE_SMTP_USERNAME=your-smtp-user
NEXT_PRIVATE_SMTP_PASSWORD=your-smtp-password
NEXT_PRIVATE_SMTP_FROM_NAME=Hanzo Sign
NEXT_PRIVATE_SMTP_FROM_NAME=Hanzo eSign
NEXT_PRIVATE_SMTP_FROM_ADDRESS=noreply@example.com
```
@@ -184,7 +184,7 @@ docker run -d \
## Health Checks
Hanzo Sign provides health check endpoints for monitoring:
Hanzo eSign provides health check endpoints for monitoring:
| Endpoint | Purpose |
| ------------------------- | -------------------------------------------------------------- |
@@ -215,7 +215,7 @@ docker inspect --format='{{.State.Health.Status}}' hanzo-sign
## Updating the Container
To update Hanzo Sign to a new version:
To update Hanzo eSign to a new version:
{/* prettier-ignore */}
<Steps>
@@ -261,7 +261,7 @@ docker run -d \
## Persistence
The Hanzo Sign container is stateless. All persistent data is stored in the PostgreSQL database.
The Hanzo eSign container is stateless. All persistent data is stored in the PostgreSQL database.
By default, documents are also stored in the database. For high-volume deployments, configure S3-compatible storage instead. See [Storage Configuration](/docs/self-hosting/configuration/storage) for S3 setup.
@@ -1,6 +1,6 @@
---
title: Deployment
description: Deploy Hanzo Sign using Docker, Docker Compose, Railway, or Kubernetes.
description: Deploy Hanzo eSign using Docker, Docker Compose, Railway, or Kubernetes.
---
| Method | Best For | Difficulty |
@@ -1,6 +1,6 @@
---
title: Kubernetes
description: Deploy Hanzo Sign on Kubernetes for production environments requiring high availability, auto-scaling, and enterprise-grade infrastructure.
description: Deploy Hanzo eSign on Kubernetes for production environments requiring high availability, auto-scaling, and enterprise-grade infrastructure.
---
import { Accordion, Accordions } from 'fumadocs-ui/components/accordion';
@@ -26,7 +26,7 @@ kubectl get nodes
## Architecture Overview
A typical Hanzo Sign Kubernetes deployment consists of:
A typical Hanzo eSign Kubernetes deployment consists of:
```mermaid
flowchart TD
@@ -41,7 +41,7 @@ flowchart TD
## Namespace Setup
Create a dedicated namespace for Hanzo Sign:
Create a dedicated namespace for Hanzo eSign:
```yaml
# namespace.yaml
@@ -128,7 +128,7 @@ data:
NEXT_PRIVATE_SMTP_TRANSPORT: 'smtp-auth'
NEXT_PRIVATE_SMTP_HOST: 'smtp.example.com'
NEXT_PRIVATE_SMTP_PORT: '587'
NEXT_PRIVATE_SMTP_FROM_NAME: 'Hanzo Sign'
NEXT_PRIVATE_SMTP_FROM_NAME: 'Hanzo eSign'
NEXT_PRIVATE_SMTP_FROM_ADDRESS: 'noreply@example.com'
NEXT_PRIVATE_INTERNAL_WEBAPP_URL: 'http://localhost:3000'
NEXT_PRIVATE_SIGNING_LOCAL_FILE_PATH: '/opt/hanzo-sign/cert.p12'
@@ -143,7 +143,7 @@ kubectl apply -f configmap.yaml
## Deployment
Create the Hanzo Sign Deployment:
Create the Hanzo eSign Deployment:
```yaml
# deployment.yaml
@@ -465,7 +465,7 @@ spec:
backups, and point-in-time recovery that managed services provide.
</Callout>
Update your Hanzo Sign secret to use the in-cluster database:
Update your Hanzo eSign secret to use the in-cluster database:
```yaml
NEXT_PRIVATE_DATABASE_URL: 'postgresql://hanzo-sign:your-secure-password@postgres.hanzo-sign.svc.cluster.local:5432/hanzo-sign'
@@ -474,7 +474,7 @@ NEXT_PRIVATE_DIRECT_DATABASE_URL: 'postgresql://hanzo-sign:your-secure-password@
## Persistent Storage
Hanzo Sign stores documents in the database by default. For high-volume deployments, configure S3-compatible storage.
Hanzo eSign stores documents in the database by default. For high-volume deployments, configure S3-compatible storage.
### S3 Configuration
@@ -500,7 +500,7 @@ See [Storage Configuration](/docs/self-hosting/configuration/storage) for detail
### Horizontal Pod Autoscaler (HPA)
Scale Hanzo Sign based on CPU and memory utilization:
Scale Hanzo eSign based on CPU and memory utilization:
```yaml
# hpa.yaml
@@ -696,7 +696,7 @@ data:
NEXT_PRIVATE_SMTP_TRANSPORT: 'smtp-auth'
NEXT_PRIVATE_SMTP_HOST: 'smtp.example.com'
NEXT_PRIVATE_SMTP_PORT: '587'
NEXT_PRIVATE_SMTP_FROM_NAME: 'Hanzo Sign'
NEXT_PRIVATE_SMTP_FROM_NAME: 'Hanzo eSign'
NEXT_PRIVATE_SMTP_FROM_ADDRESS: 'noreply@example.com'
NEXT_PRIVATE_INTERNAL_WEBAPP_URL: 'http://localhost:3000'
NEXT_PRIVATE_SIGNING_LOCAL_FILE_PATH: '/opt/hanzo-sign/cert.p12'
@@ -1,6 +1,6 @@
---
title: Manual Deployment
description: Deploy Hanzo Sign on a Linux server without Docker using Node.js and systemd.
description: Deploy Hanzo eSign on a Linux server without Docker using Node.js and systemd.
---
import { Callout } from 'fumadocs-ui/components/callout';
@@ -28,7 +28,7 @@ import { Step, Steps } from 'fumadocs-ui/components/steps';
### Clone the repository
```bash
git clone https://github.com/hanzoai/sign.git
git clone https://github.com/hanzoai/esign.git
```
</Step>
@@ -52,12 +52,12 @@ NEXT_PUBLIC_WEBAPP_URL="https://your-domain.com"
NEXT_PRIVATE_INTERNAL_WEBAPP_URL="http://localhost:3000"
NEXT_PRIVATE_DATABASE_URL="postgresql://user:password@localhost:5432/hanzo-sign"
NEXT_PRIVATE_DIRECT_DATABASE_URL="postgresql://user:password@localhost:5432/hanzo-sign"
NEXT_PRIVATE_SMTP_FROM_NAME="Hanzo Sign"
NEXT_PRIVATE_SMTP_FROM_NAME="Hanzo eSign"
NEXT_PRIVATE_SMTP_FROM_ADDRESS="noreply@your-domain.com"
```
<Callout type="info">
If you use a reverse proxy in front of Hanzo Sign, set `NEXT_PUBLIC_WEBAPP_URL` to the public URL
If you use a reverse proxy in front of Hanzo eSign, set `NEXT_PUBLIC_WEBAPP_URL` to the public URL
that users will access.
</Callout>
@@ -93,13 +93,13 @@ PORT=3500
## Run as a systemd Service
Create a service file to run Hanzo Sign as a background service on Linux:
Create a service file to run Hanzo eSign as a background service on Linux:
```ini
# /etc/systemd/system/hanzo-sign.service
[Unit]
Description=Hanzo Sign
Description=Hanzo eSign
After=network.target
[Service]
@@ -126,7 +126,7 @@ sudo systemctl start hanzo-sign
## Reverse Proxy with Nginx
A minimal Nginx configuration for proxying to Hanzo Sign:
A minimal Nginx configuration for proxying to Hanzo eSign:
```nginx
server {
@@ -1,6 +1,6 @@
---
title: Railway
description: Deploy Hanzo Sign on Railway with automatic builds from Git, managed PostgreSQL, and built-in networking. Use the one-click template or manual setup.
description: Deploy Hanzo eSign on Railway with automatic builds from Git, managed PostgreSQL, and built-in networking. Use the one-click template or manual setup.
---
import { Accordion, Accordions } from 'fumadocs-ui/components/accordion';
@@ -9,7 +9,7 @@ import { Step, Steps } from 'fumadocs-ui/components/steps';
<Callout type="warn">
This guide is a community contribution and may be outdated. If you run into issues, check the
[GitHub Discussions](https://github.com/hanzoai/sign/discussions) for help.
[GitHub Discussions](https://github.com/hanzoai/esign/discussions) for help.
</Callout>
## Prerequisites
@@ -22,13 +22,13 @@ Before deploying, you need:
## One-Click Deploy
The fastest way to deploy Hanzo Sign on Railway is using the official template:
The fastest way to deploy Hanzo eSign on Railway is using the official template:
[![Deploy on Railway](https://railway.app/button.svg)](https://railway.app/template/bG6D4p)
This template automatically provisions:
- Hanzo Sign application service
- Hanzo eSign application service
- PostgreSQL database
- Required environment variables with secure defaults
@@ -74,14 +74,14 @@ This takes approximately 5-10 minutes for the initial build.
Once deployed, Railway provides a URL like `hanzo-sign-production.up.railway.app`.
Click the URL in the Railway dashboard to access your Hanzo Sign instance.
Click the URL in the Railway dashboard to access your Hanzo eSign instance.
</Step>
</Steps>
## Manual Deployment
If you prefer more control over the setup, deploy Hanzo Sign manually:
If you prefer more control over the setup, deploy Hanzo eSign manually:
{/* prettier-ignore */}
<Steps>
@@ -92,7 +92,7 @@ If you prefer more control over the setup, deploy Hanzo Sign manually:
- Click "New Project"
- Select "Deploy from GitHub repo"
- Connect your GitHub account if not already connected
- Fork or select the [Hanzo Sign repository](https://github.com/hanzoai/sign)
- Fork or select the [Hanzo eSign repository](https://github.com/hanzoai/esign)
</Step>
@@ -124,7 +124,7 @@ No additional build configuration is needed.
<Step>
### Configure environment variables
Click on the Hanzo Sign service and go to the "Variables" tab. Add the following variables:
Click on the Hanzo eSign service and go to the "Variables" tab. Add the following variables:
**Required variables:**
@@ -140,7 +140,7 @@ NEXT_PRIVATE_SMTP_HOST=<your-smtp-host>
NEXT_PRIVATE_SMTP_PORT=587
NEXT_PRIVATE_SMTP_USERNAME=<your-smtp-username>
NEXT_PRIVATE_SMTP_PASSWORD=<your-smtp-password>
NEXT_PRIVATE_SMTP_FROM_NAME=Hanzo Sign
NEXT_PRIVATE_SMTP_FROM_NAME=Hanzo eSign
NEXT_PRIVATE_SMTP_FROM_ADDRESS=noreply@yourdomain.com
```
@@ -198,7 +198,7 @@ NEXT_PRIVATE_DATABASE_URL=${{Postgres.DATABASE_URL}}
NEXT_PRIVATE_DIRECT_DATABASE_URL=${{Postgres.DATABASE_URL}}
```
Hanzo Sign runs database migrations automatically on startup.
Hanzo eSign runs database migrations automatically on startup.
### Accessing the Database
@@ -235,7 +235,7 @@ Railway provides a generated URL by default. To use your own domain:
<Step>
### Generate a domain
- Click on your Hanzo Sign service
- Click on your Hanzo eSign service
- Go to "Settings" > "Networking"
- Click "Generate Domain" to get a Railway subdomain, or proceed to add a custom domain
@@ -279,7 +279,7 @@ Railway automatically provisions and renews SSL certificates for custom domains.
## Scaling Options
Railway provides several options for scaling your Hanzo Sign deployment:
Railway provides several options for scaling your Hanzo eSign deployment:
### Vertical Scaling
@@ -288,9 +288,9 @@ Increase resources for your service:
{/* prettier-ignore */}
<Steps>
<Step>
### Open your Hanzo Sign service
### Open your Hanzo eSign service
In the Railway dashboard, select the Hanzo Sign service.
In the Railway dashboard, select the Hanzo eSign service.
</Step>
<Step>
@@ -316,7 +316,7 @@ Railway supports horizontal scaling through replicas:
<Step>
### Open service Settings
In the Railway dashboard, select your Hanzo Sign service and open "Settings".
In the Railway dashboard, select your Hanzo eSign service and open "Settings".
</Step>
<Step>
@@ -334,7 +334,7 @@ Choose how many replicas to run; Railway will load-balance traffic across them.
</Steps>
<Callout type="warn">
Hanzo Sign stores sessions in the database, so horizontal scaling works without additional
Hanzo eSign stores sessions in the database, so horizontal scaling works without additional
configuration. However, ensure your database can handle the increased connection load.
</Callout>
@@ -348,7 +348,7 @@ For high-traffic deployments:
## Cost Estimate
Railway uses usage-based pricing. Estimated monthly costs for Hanzo Sign:
Railway uses usage-based pricing. Estimated monthly costs for Hanzo eSign:
| Tier | Resources | Estimated Cost |
| ----- | ---------------------------------- | -------------- |
@@ -381,11 +381,11 @@ This is sufficient for testing but not recommended for production.
## Signing Certificate
Hanzo Sign requires a signing certificate to sign documents. On Railway, you can:
Hanzo eSign requires a signing certificate to sign documents. On Railway, you can:
### Option 1: Use Generated Certificate (Default)
Hanzo Sign generates a self-signed certificate automatically if none is provided. This works for testing but shows generic certificate information in signed documents.
Hanzo eSign generates a self-signed certificate automatically if none is provided. This works for testing but shows generic certificate information in signed documents.
### Option 2: Mount Custom Certificate
@@ -406,7 +406,7 @@ base64 -i your-cert.p12 | tr -d '\n'
<Step>
### Add environment variables in Railway
In your Hanzo Sign service variables, set:
In your Hanzo eSign service variables, set:
```bash
NEXT_PRIVATE_SIGNING_LOCAL_FILE_CONTENTS=<base64-encoded-certificate>
@@ -446,11 +446,11 @@ See [Signing Certificate Configuration](/docs/self-hosting/configuration/signing
### Render
[![Deploy to Render](https://render.com/images/deploy-to-render-button.svg)](https://render.com/deploy?repo=https://github.com/hanzoai/sign)
[![Deploy to Render](https://render.com/images/deploy-to-render-button.svg)](https://render.com/deploy?repo=https://github.com/hanzoai/esign)
### Koyeb
<a href="https://app.koyeb.com/deploy?type=git&repository=github.com/hanzoai/sign&branch=main&name=hanzo-sign-app&builder=dockerfile&dockerfile=/docker/Dockerfile">
<a href="https://app.koyeb.com/deploy?type=git&repository=github.com/hanzoai/esign&branch=main&name=hanzo-sign-app&builder=dockerfile&dockerfile=/docker/Dockerfile">
<img
src="https://www.koyeb.com/static/images/deploy/button.svg"
alt="Deploy to Koyeb"
@@ -1,6 +1,6 @@
---
title: Getting Started
description: Requirements and quick start guide for self-hosting Hanzo Sign.
description: Requirements and quick start guide for self-hosting Hanzo eSign.
---
<Cards>
@@ -1,6 +1,6 @@
---
title: Quick Start
description: Get Hanzo Sign running locally in minutes with Docker Compose.
description: Get Hanzo eSign running locally in minutes with Docker Compose.
---
import { Accordion, Accordions } from 'fumadocs-ui/components/accordion';
@@ -40,7 +40,7 @@ docker compose version
### Clone the repository
```bash
git clone https://github.com/hanzoai/sign.git
git clone https://github.com/hanzoai/esign.git
cd hanzo-sign
```
@@ -60,7 +60,7 @@ The default values work for local development. No changes are required.
</Step>
<Step>
### Start Hanzo Sign
### Start Hanzo eSign
```bash
docker compose -f docker/development/compose.yml up -d
@@ -1,13 +1,13 @@
---
title: Requirements
description: System requirements and prerequisites for self-hosting Hanzo Sign.
description: System requirements and prerequisites for self-hosting Hanzo eSign.
---
import { Callout } from 'fumadocs-ui/components/callout';
## What You Need
Hanzo Sign requires the following external services:
Hanzo eSign requires the following external services:
| Service | Purpose | Minimum Version |
| ------------- | ---------------------------- | --------------- |
@@ -17,9 +17,9 @@ Hanzo Sign requires the following external services:
### PostgreSQL Database
Hanzo Sign uses PostgreSQL for all data storage including documents, users, and audit logs. You cannot use MySQL, SQLite, or other databases.
Hanzo eSign uses PostgreSQL for all data storage including documents, users, and audit logs. You cannot use MySQL, SQLite, or other databases.
Hanzo Sign requires two connection strings:
Hanzo eSign requires two connection strings:
- **Pooled connection** (`NEXT_PRIVATE_DATABASE_URL`) - For general application queries
- **Direct connection** (`NEXT_PRIVATE_DIRECT_DATABASE_URL`) - For migrations and operations that require a direct connection
@@ -28,7 +28,7 @@ If you're not using a connection pooler (like PgBouncer), both can point to the
### Email Server
Hanzo Sign sends transactional emails for:
Hanzo eSign sends transactional emails for:
- Document signing requests
- Signing reminders
@@ -51,7 +51,7 @@ Supported transports:
### Reverse Proxy
For production deployments, place Hanzo Sign behind a reverse proxy such as:
For production deployments, place Hanzo eSign behind a reverse proxy such as:
- nginx
- Caddy
@@ -59,7 +59,7 @@ For production deployments, place Hanzo Sign behind a reverse proxy such as:
- HAProxy
- Cloud load balancers (AWS ALB, GCP Load Balancer, etc.)
The reverse proxy handles SSL/TLS termination and forwards requests to Hanzo Sign on port 3000.
The reverse proxy handles SSL/TLS termination and forwards requests to Hanzo eSign on port 3000.
---
@@ -73,7 +73,7 @@ These services are not required but improve functionality or scalability:
### Document Storage
By default, Hanzo Sign stores documents in the PostgreSQL database. For production deployments with significant document volume, use S3-compatible storage:
By default, Hanzo eSign stores documents in the PostgreSQL database. For production deployments with significant document volume, use S3-compatible storage:
- Amazon S3
- MinIO
@@ -85,9 +85,9 @@ See [Storage Configuration](/docs/self-hosting/configuration/storage) for setup
### Background Jobs
Hanzo Sign processes background jobs (email delivery, document processing) using a PostgreSQL-based queue. No additional services like Redis are required: the job queue is built into the application and uses your existing database.
Hanzo eSign processes background jobs (email delivery, document processing) using a PostgreSQL-based queue. No additional services like Redis are required: the job queue is built into the application and uses your existing database.
For high-throughput deployments, Hanzo Sign optionally supports [Inngest](https://www.inngest.com/) as an alternative job provider. Set `NEXT_PRIVATE_JOBS_PROVIDER=inngest` and configure `INNGEST_EVENT_KEY` and `INNGEST_SIGNING_KEY`. Most self-hosted instances do not need this.
For high-throughput deployments, Hanzo eSign optionally supports [Inngest](https://www.inngest.com/) as an alternative job provider. Set `NEXT_PRIVATE_JOBS_PROVIDER=inngest` and configure `INNGEST_EVENT_KEY` and `INNGEST_SIGNING_KEY`. Most self-hosted instances do not need this.
---
@@ -129,7 +129,7 @@ If building from source (not using Docker images):
## Supported Platforms
Hanzo Sign runs on:
Hanzo eSign runs on:
- **Linux** - Any modern distribution (Ubuntu, Debian, CentOS, Alpine)
- **Docker** - Official images available on DockerHub and GitHub Container Registry
@@ -161,7 +161,7 @@ Before proceeding to deployment, confirm you have:
- [ ] PostgreSQL 14+ database accessible
- [ ] SMTP credentials or email provider API key
- [ ] Signing certificate (`.p12`) for document signing — see [Tips](/docs/self-hosting/getting-started/tips)
- [ ] Domain name for your Hanzo Sign instance
- [ ] Domain name for your Hanzo eSign instance
- [ ] SSL certificate (or reverse proxy that handles SSL)
- [ ] Server meeting minimum hardware requirements
@@ -169,6 +169,6 @@ Before proceeding to deployment, confirm you have:
## See Also
- [Quick Start](/docs/self-hosting/getting-started/quick-start) - Deploy Hanzo Sign with Docker in 5 minutes
- [Quick Start](/docs/self-hosting/getting-started/quick-start) - Deploy Hanzo eSign with Docker in 5 minutes
- [Docker Compose](/docs/self-hosting/deployment/docker-compose) - Production setup with Docker Compose
- [Environment Variables](/docs/self-hosting/configuration/environment) - Full configuration reference
@@ -1,6 +1,6 @@
---
title: Tips & Common Pitfalls
description: Practical advice for running Hanzo Sign in production.
description: Practical advice for running Hanzo eSign in production.
---
import { Callout } from 'fumadocs-ui/components/callout';
@@ -8,11 +8,11 @@ import { Callout } from 'fumadocs-ui/components/callout';
## Always Configure a Signing Certificate
<Callout type="error">
This is the single most common issue when self-hosting Hanzo Sign. Without a signing certificate,
This is the single most common issue when self-hosting Hanzo eSign. Without a signing certificate,
the application starts normally but document signing fails.
</Callout>
Hanzo Sign does **not** bundle a [signing certificate](/docs/self-hosting/configuration/signing-certificate) in the Docker image. You must provide one yourself using one of two methods:
Hanzo eSign does **not** bundle a [signing certificate](/docs/self-hosting/configuration/signing-certificate) in the Docker image. You must provide one yourself using one of two methods:
### Volume Mount (Recommended)
@@ -51,7 +51,7 @@ NEXT_PRIVATE_SIGNING_PASSPHRASE=your-certificate-password
### Verify Your Certificate
After starting Hanzo Sign, check the certificate status endpoint:
After starting Hanzo eSign, check the certificate status endpoint:
```bash
curl http://localhost:3000/api/certificate-status
@@ -69,13 +69,13 @@ Certificates without a password cause signing to fail with:
Error: Failed to get private key bags
```
Always set a password when creating your `.p12` certificate. When using OpenSSL, set the password during the export step and provide it to Hanzo Sign via `NEXT_PRIVATE_SIGNING_PASSPHRASE`.
Always set a password when creating your `.p12` certificate. When using OpenSSL, set the password during the export step and provide it to Hanzo eSign via `NEXT_PRIVATE_SIGNING_PASSPHRASE`.
---
## Use the Health Check Endpoints
Hanzo Sign exposes two endpoints for monitoring:
Hanzo eSign exposes two endpoints for monitoring:
| Endpoint | Purpose |
| ------------------------- | ------------------------------------ |
@@ -98,7 +98,7 @@ docker pull hanzo-sign/hanzo-sign:1.8.0
docker pull hanzo-sign/hanzo-sign:latest
```
Check the [GitHub releases](https://github.com/hanzoai/sign/releases) page for available versions.
Check the [GitHub releases](https://github.com/hanzoai/esign/releases) page for available versions.
---
@@ -114,7 +114,7 @@ The Docker container runs `prisma migrate deploy` every time it starts. This mea
## Set Internal Webapp URL for Background Jobs
Background jobs work by Hanzo Sign sending HTTP requests to itself. If your reverse proxy or network setup causes issues with the app reaching its own public URL, set the internal URL:
Background jobs work by Hanzo eSign sending HTTP requests to itself. If your reverse proxy or network setup causes issues with the app reaching its own public URL, set the internal URL:
```bash
NEXT_PRIVATE_INTERNAL_WEBAPP_URL=http://localhost:3000
@@ -146,9 +146,9 @@ See [Storage Configuration](/docs/self-hosting/configuration/storage) for full s
## Background Jobs Don't Need Redis
Hanzo Sign uses a PostgreSQL-based job queue by default. No Redis, no external message broker. The job system uses your existing database to store and process background tasks like email delivery and document processing.
Hanzo eSign uses a PostgreSQL-based job queue by default. No Redis, no external message broker. The job system uses your existing database to store and process background tasks like email delivery and document processing.
For high-throughput deployments, Hanzo Sign optionally supports [Inngest](https://www.inngest.com/) as an alternative job provider:
For high-throughput deployments, Hanzo eSign optionally supports [Inngest](https://www.inngest.com/) as an alternative job provider:
```bash
NEXT_PRIVATE_JOBS_PROVIDER=inngest
@@ -162,7 +162,7 @@ Most self-hosted instances do not need Inngest.
## Docker File Permissions
The Hanzo Sign container runs as a non-root user (UID 1001). If you mount files into the container (certificates, configuration), ensure they're readable:
The Hanzo eSign container runs as a non-root user (UID 1001). If you mount files into the container (certificates, configuration), ensure they're readable:
```bash
# On the host, before mounting
@@ -1,6 +1,6 @@
---
title: Self-Hosting
description: Deploy and manage your own Hanzo Sign instance for complete control over your data, compliance, and customization.
description: Deploy and manage your own Hanzo eSign instance for complete control over your data, compliance, and customization.
---
## Getting Started
@@ -105,10 +105,10 @@ Choose a deployment method based on your needs:
## Quick Start
Get Hanzo Sign running locally in under 5 minutes:
Get Hanzo eSign running locally in under 5 minutes:
```bash
git clone https://github.com/hanzoai/sign.git
git clone https://github.com/hanzoai/esign.git
cd hanzo-sign
cp .env.example .env
docker compose -f docker/development/compose.yml up -d
@@ -122,7 +122,7 @@ See the [Quick Start guide](/docs/self-hosting/getting-started/quick-start) for
## Enterprise Edition
Self-hosted Hanzo Sign includes full core functionality under the AGPL-3.0 license. If you need enterprise features such as SSO, embed authoring white label, or 21 CFR Part 11 compliance, you can activate them with a license key.
Self-hosted Hanzo eSign includes full core functionality under the AGPL-3.0 license. If you need enterprise features such as SSO, embed authoring white label, or 21 CFR Part 11 compliance, you can activate them with a license key.
See [Enterprise Edition](/docs/policies/enterprise-edition) for details and [Licenses](/docs/policies/licenses) for a comparison.
@@ -133,12 +133,12 @@ See [Enterprise Edition](/docs/policies/enterprise-edition) for details and [Lic
<Cards>
<Card
title="User Guide"
description="Learn how to use Hanzo Sign for document signing."
description="Learn how to use Hanzo eSign for document signing."
href="/docs/users"
/>
<Card
title="Developer Guide"
description="Integrate Hanzo Sign into your applications using the API."
description="Integrate Hanzo eSign into your applications using the API."
href="/docs/developers"
/>
</Cards>
@@ -1,6 +1,6 @@
---
title: Backups
description: Backup strategies for Hanzo Sign data.
description: Backup strategies for Hanzo eSign data.
---
import { Callout } from 'fumadocs-ui/components/callout';
@@ -9,7 +9,7 @@ import { Tab, Tabs } from 'fumadocs-ui/components/tabs';
## What to Back Up
Hanzo Sign stores data in three locations:
Hanzo eSign stores data in three locations:
| Component | Location | Contains |
| --------------------- | ----------------------------- | -------------------------------------------------- |
@@ -199,7 +199,7 @@ For disaster recovery, enable cross-region replication on your S3 bucket. This a
## Automated Backup Script
Create a script to back up all Hanzo Sign components:
Create a script to back up all Hanzo eSign components:
<Tabs items={['Standalone', 'Docker Compose']}>
<Tab value="Standalone">
@@ -226,7 +226,7 @@ S3_BUCKET="your-hanzo-sign-bucket"
# Create backup directory
mkdir -p "$BACKUP_DIR/$TIMESTAMP"
echo "Starting Hanzo Sign backup: $TIMESTAMP"
echo "Starting Hanzo eSign backup: $TIMESTAMP"
# Database backup
echo "Backing up database..."
@@ -353,7 +353,7 @@ Create `/etc/systemd/system/hanzo-sign-backup.service`:
```ini
[Unit]
Description=Hanzo Sign Backup
Description=Hanzo eSign Backup
[Service]
Type=oneshot
@@ -365,7 +365,7 @@ Create `/etc/systemd/system/hanzo-sign-backup.timer`:
```ini
[Unit]
Description=Daily Hanzo Sign Backup
Description=Daily Hanzo eSign Backup
[Timer]
OnCalendar=*-*-* 02:00:00
@@ -450,7 +450,7 @@ aws s3 sync /backup/hanzo-sign/documents/ s3://your-hanzo-sign-bucket
{/* prettier-ignore */}
<Steps>
<Step>
### Stop Hanzo Sign
### Stop Hanzo eSign
```bash
docker compose stop hanzo-sign
@@ -482,7 +482,7 @@ aws s3 sync /backup/documents/ s3://your-bucket
</Step>
<Step>
### Start Hanzo Sign
### Start Hanzo eSign
```bash
docker compose start hanzo-sign
@@ -1,6 +1,6 @@
---
title: Maintenance
description: Upgrade, backup, and troubleshoot your self-hosted Hanzo Sign instance.
description: Upgrade, backup, and troubleshoot your self-hosted Hanzo eSign instance.
---
<Cards>
@@ -1,6 +1,6 @@
---
title: Troubleshooting
description: Diagnose and resolve common issues with your self-hosted Hanzo Sign instance, organized by component.
description: Diagnose and resolve common issues with your self-hosted Hanzo eSign instance, organized by component.
---
import { Accordion, Accordions } from 'fumadocs-ui/components/accordion';
@@ -55,7 +55,7 @@ docker logs --tail 100 hanzo-sign
### Health Checks
Hanzo Sign exposes a health endpoint to verify the application is running:
Hanzo eSign exposes a health endpoint to verify the application is running:
```bash
curl http://localhost:3000/api/health
@@ -232,7 +232,7 @@ netstat -tlnp | grep 3000
Stop the conflicting service
</Step>
<Step>
Change Hanzo Sign's port mapping: `-p 3001:3000`
Change Hanzo eSign's port mapping: `-p 3001:3000`
</Step>
</Steps>
@@ -690,7 +690,7 @@ openssl pkcs12 -in certificate.p12 -nokeys | openssl x509 -noout -dates
Generate a new certificate or obtain a renewed one from your CA
</Step>
<Step>
Update the certificate file and restart Hanzo Sign
Update the certificate file and restart Hanzo eSign
</Step>
</Steps>
@@ -1115,7 +1115,7 @@ Gather this information before seeking support:
{/* prettier-ignore */}
<Steps>
<Step>
**Hanzo Sign version:**
**Hanzo eSign version:**
```bash
docker inspect hanzo-sign --format='{{.Config.Image}}'
@@ -1138,9 +1138,9 @@ docker inspect hanzo-sign --format='{{.Config.Image}}'
### Community Support
- **[GitHub Discussions](https://github.com/hanzoai/sign/discussions)**
- **[Discord](https://sign.hanzo.ai/discord)**: Join the Hanzo Sign community Discord
- **[GitHub Issues](https://github.com/hanzoai/sign/issues)**: For confirmed bugs, open an issue
- **[GitHub Discussions](https://github.com/hanzoai/esign/discussions)**
- **[Discord](https://esign.hanzo.ai/discord)**: Join the Hanzo eSign community Discord
- **[GitHub Issues](https://github.com/hanzoai/esign/issues)**: For confirmed bugs, open an issue
### Reporting Bugs
@@ -1155,7 +1155,7 @@ When reporting bugs, include:
Steps to reproduce
</Step>
<Step>
Hanzo Sign version
Hanzo eSign version
</Step>
<Step>
Relevant logs (redact sensitive information)
@@ -1167,7 +1167,7 @@ When reporting bugs, include:
### Security Issues
For security vulnerabilities, do not open a public issue. Contact security@sign.hanzo.ai directly.
For security vulnerabilities, do not open a public issue. Contact security@esign.hanzo.ai directly.
---
@@ -1,6 +1,6 @@
---
title: Upgrades
description: Upgrade your self-hosted Hanzo Sign installation to get the latest features, security patches, and bug fixes.
description: Upgrade your self-hosted Hanzo eSign installation to get the latest features, security patches, and bug fixes.
---
import { Accordion, Accordions } from 'fumadocs-ui/components/accordion';
@@ -10,7 +10,7 @@ import { Tab, Tabs } from 'fumadocs-ui/components/tabs';
## Version Policy
Hanzo Sign follows [Semantic Versioning](https://semver.org/):
Hanzo eSign follows [Semantic Versioning](https://semver.org/):
| Version Type | Format | Description |
| ------------ | ------- | ------------------------------------------ |
@@ -19,7 +19,7 @@ Hanzo Sign follows [Semantic Versioning](https://semver.org/):
| Patch | `x.y.z` | Bug fixes, security patches |
<Callout type="info">
Review the [release notes](https://github.com/hanzoai/sign/releases) before upgrading to
Review the [release notes](https://github.com/hanzoai/esign/releases) before upgrading to
understand what changes are included.
</Callout>
@@ -37,7 +37,7 @@ For production deployments, pin to a specific version tag to avoid unexpected up
### View Current Version
Check your running Hanzo Sign version:
Check your running Hanzo eSign version:
<Tabs items={['Docker', 'Docker Compose', 'Kubernetes']}>
<Tab value="Docker">
@@ -71,7 +71,7 @@ View available releases on GitHub:
curl -s https://api.github.com/repos/hanzo-sign/hanzo-sign/releases/latest | grep tag_name
```
Or visit the [releases page](https://github.com/hanzoai/sign/releases).
Or visit the [releases page](https://github.com/hanzoai/esign/releases).
### Check Available Docker Tags
@@ -340,7 +340,7 @@ curl http://localhost:3000/api/health
## Database Migrations
Hanzo Sign runs database migrations automatically when the container starts. No manual intervention is required.
Hanzo eSign runs database migrations automatically when the container starts. No manual intervention is required.
### Migration Process
@@ -445,7 +445,7 @@ Major version upgrades may include breaking changes that require manual steps.
<Step>
### Read release notes
Read the [release notes](https://github.com/hanzoai/sign/releases) carefully.
Read the [release notes](https://github.com/hanzoai/esign/releases) carefully.
</Step>
<Step>
@@ -1,6 +1,6 @@
---
title: AI Recipient & Field Detection
description: Use Hanzo Sign's AI helpers to detect recipients and fields in draft documents.
description: Use Hanzo eSign's AI helpers to detect recipients and fields in draft documents.
---
import { Accordion, Accordions } from 'fumadocs-ui/components/accordion';
@@ -10,7 +10,7 @@ import { Tab, Tabs } from 'fumadocs-ui/components/tabs';
## Overview
Hanzo Sign can suggest recipients and place fields automatically using Google Vertex AI (Gemini). The feature is optional and only available when your organisation or team has **AI Features** enabled. Documents are processed securely and providers do not retain your data for training.
Hanzo eSign can suggest recipients and place fields automatically using Google Vertex AI (Gemini). The feature is optional and only available when your organisation or team has **AI Features** enabled. Documents are processed securely and providers do not retain your data for training.
## Requirements
@@ -8,7 +8,7 @@ import { Tab, Tabs } from 'fumadocs-ui/components/tabs';
## Overview
Hanzo Sign allows you to set default recipients for your documents. This is useful when you require specific recipients to be added to every document you send.
Hanzo eSign allows you to set default recipients for your documents. This is useful when you require specific recipients to be added to every document you send.
You can add default recipients with the same roles as the recipients you can add when sending a document:
@@ -53,7 +53,7 @@ New documents use the team's default. You can change the visibility to any optio
You can change visibility at any time by editing the document and choosing a different option.
![A screenshot of the Hanzo Sign's document editor page where you can update the document visibility](/teams/document-visibility-settings.webp)
![A screenshot of the Hanzo eSign's document editor page where you can update the document visibility](/teams/document-visibility-settings.webp)
<Callout type="warning">
Updating the default document visibility in the team's general preferences will not affect the
@@ -1,6 +1,6 @@
---
title: PDF Placeholders
description: Learn how to use placeholder text in your PDFs for automatic field placement in Hanzo Sign.
description: Learn how to use placeholder text in your PDFs for automatic field placement in Hanzo eSign.
---
import { Accordion, Accordions } from 'fumadocs-ui/components/accordion';
@@ -8,11 +8,11 @@ import { Callout } from 'fumadocs-ui/components/callout';
## Overview
Hanzo Sign can automatically detect placeholder text in your PDF documents and create fields at those locations. This allows you to prepare documents in your preferred editing tool (Word, Google Docs, etc.) with placeholders that become signature fields when uploaded.
Hanzo eSign can automatically detect placeholder text in your PDF documents and create fields at those locations. This allows you to prepare documents in your preferred editing tool (Word, Google Docs, etc.) with placeholders that become signature fields when uploaded.
## How It Works
When you upload a PDF, Hanzo Sign scans for text matching the placeholder pattern `{{...}}`. Each placeholder can specify:
When you upload a PDF, Hanzo eSign scans for text matching the placeholder pattern `{{...}}`. Each placeholder can specify:
1. **Field type**: What kind of field to create (signature, name, email, etc.)
2. **Recipient**: Which signer the field belongs to (r1, r2, etc.)
@@ -68,7 +68,7 @@ Recipients are identified using `r1`, `r2`, `r3`, etc. The number corresponds to
- `r2` - Second recipient
- `r3` - Third recipient
When you upload a PDF with placeholders, Hanzo Sign will:
When you upload a PDF with placeholders, Hanzo eSign will:
1. Create placeholder recipients for each unique identifier found (e.g., `r1`, `r2`)
2. You can then update these with real email addresses before sending
@@ -53,7 +53,7 @@ In the modal that appears, click **Enable direct link** to proceed.
Choose which recipient in your template will use the direct link:
- **Select an existing recipient**: Pick from recipients already defined in your template
- **Create one automatically**: Hanzo Sign creates a new "Direct Link Recipient" for you
- **Create one automatically**: Hanzo eSign creates a new "Direct Link Recipient" for you
![Choose direct link recipient](/direct-links/choose-direct-link-recipient-hanzo-sign.webp)
@@ -72,7 +72,7 @@ The person who opens the direct link will fill in this recipient's fields.
After selecting a recipient, you'll see your direct link:
```
https://app.sign.hanzo.ai/d/<unique-token>
https://app.esign.hanzo.ai/d/<unique-token>
```
![Document direct link](/direct-links/document-direct-link-hanzo-sign.webp)
@@ -93,7 +93,7 @@ When someone opens your direct link:
3. They complete any required fields (signature, text, checkboxes, etc.)
4. After signing, they receive a copy of the completed document via email
If the recipient has a Hanzo Sign account with the email they entered, the document also appears in their Documents dashboard.
If the recipient has a Hanzo eSign account with the email they entered, the document also appears in their Documents dashboard.
---
@@ -139,7 +139,7 @@ To permanently remove a direct link:
## Add Direct Links to Your Profile
You can showcase templates with direct links on your public Hanzo Sign profile:
You can showcase templates with direct links on your public Hanzo eSign profile:
{/* prettier-ignore */}
<Steps>
@@ -157,7 +157,7 @@ You can showcase templates with direct links on your public Hanzo Sign profile:
</Step>
</Steps>
![Hanzo Sign profile with direct links](/direct-links/hanzo-sign-profile.webp)
![Hanzo eSign profile with direct links](/direct-links/hanzo-sign-profile.webp)
This is useful for freelancers, consultants, or businesses who want clients to easily access common agreements.
@@ -181,7 +181,7 @@ Share the direct link on your website, in emails, or via QR codes at physical lo
Add signing capabilities to your website or app by embedding the direct link:
```html
<a href="https://app.sign.hanzo.ai/d/your-token">Sign our agreement</a>
<a href="https://app.esign.hanzo.ai/d/your-token">Sign our agreement</a>
```
Or redirect users to the signing page after they complete another action in your application.
@@ -1,6 +1,6 @@
---
title: Upload Documents
description: Upload documents to Hanzo Sign to prepare them for signing. Covers supported formats, file size limits, and upload methods.
description: Upload documents to Hanzo eSign to prepare them for signing. Covers supported formats, file size limits, and upload methods.
---
import { Accordion, Accordions } from 'fumadocs-ui/components/accordion';
@@ -17,7 +17,7 @@ import { Step, Steps } from 'fumadocs-ui/components/steps';
| Password-protected PDFs | Not supported |
<Callout type="warn">
Hanzo Sign does not support password-protected or encrypted PDF files. Remove encryption before
Hanzo eSign does not support password-protected or encrypted PDF files. Remove encryption before
uploading.
</Callout>
@@ -34,7 +34,7 @@ You can upload documents in two ways:
<Step>
### Go to the Documents dashboard
Open your [Documents dashboard](https://app.sign.hanzo.ai/documents).
Open your [Documents dashboard](https://app.esign.hanzo.ai/documents).
</Step>
<Step>
@@ -58,7 +58,7 @@ You can upload documents in two ways:
<Step>
### Go to the Documents dashboard
Open your [Documents dashboard](https://app.sign.hanzo.ai/documents).
Open your [Documents dashboard](https://app.esign.hanzo.ai/documents).
</Step>
<Step>
@@ -100,7 +100,7 @@ All files in the same upload become part of the same envelope and share the same
When you upload a document:
1. **Processing**: Hanzo Sign validates the PDF and extracts page information
1. **Processing**: Hanzo eSign validates the PDF and extracts page information
2. **Draft created**: A new document is created in `Draft` status
3. **Editor opens**: You're taken to the document editor to add recipients and fields
@@ -1,6 +1,6 @@
---
title: Create an Account
description: Sign up for Hanzo Sign and configure your profile.
description: Sign up for Hanzo eSign and configure your profile.
---
import { Callout } from 'fumadocs-ui/components/callout';
@@ -8,7 +8,7 @@ import { Step, Steps } from 'fumadocs-ui/components/steps';
## Choose a Plan
Hanzo Sign offers four plans:
Hanzo eSign offers four plans:
| Plan | Best for |
| ---------- | ---------------------------------------------- |
@@ -17,7 +17,7 @@ Hanzo Sign offers four plans:
| Teams | Small to medium teams needing collaboration |
| Platform | Organizations requiring API access and volume |
See the [pricing page](https://sign.hanzo.ai/pricing) for feature details and limits.
See the [pricing page](https://esign.hanzo.ai/pricing) for feature details and limits.
<Callout type="info">
All plans are subject to the [Fair Use Policy](/docs/policies/fair-use).
@@ -30,7 +30,7 @@ See the [pricing page](https://sign.hanzo.ai/pricing) for feature details and li
<Step>
### Go to the registration page
Navigate to [sign.hanzo.ai/free](https://sign.hanzo.ai/free) to create a free account. To start with a paid plan, visit the [pricing page](https://sign.hanzo.ai/pricing) and select your plan.
Navigate to [esign.hanzo.ai/free](https://esign.hanzo.ai/free) to create a free account. To start with a paid plan, visit the [pricing page](https://esign.hanzo.ai/pricing) and select your plan.
</Step>
@@ -46,7 +46,7 @@ Provide your name, email address, and create a password. Alternatively, sign up
<Step>
### Verify your email
Check your inbox for a verification email and click the confirmation link. The email is sent from `noreply@sign.hanzo.ai`.
Check your inbox for a verification email and click the confirmation link. The email is sent from `noreply@esign.hanzo.ai`.
<Callout type="info">
If you don't see the email, check your spam folder.
@@ -56,7 +56,7 @@ Check your inbox for a verification email and click the confirmation link. The e
## Unlock More Features
For custom branding, team collaboration, API access, and other advanced features, you'll need a paid plan. Explore the [pricing page](https://sign.hanzo.ai/pricing) and choose the plan that fits your needs.
For custom branding, team collaboration, API access, and other advanced features, you'll need a paid plan. Explore the [pricing page](https://esign.hanzo.ai/pricing) and choose the plan that fits your needs.
---
@@ -71,7 +71,7 @@ After signing up, secure your account with additional authentication methods.
Go to **Settings > Security** to enable 2FA for an extra layer of protection.
![Hanzo Sign account security page showing security options](/get-started-images/hanzo-sign-account-security-page.webp)
![Hanzo eSign account security page showing security options](/get-started-images/hanzo-sign-account-security-page.webp)
</Step>
<Step>
@@ -6,7 +6,7 @@ description: Create your account and send your first document for signing.
<Cards>
<Card
title="Create an Account"
description="Sign up for Hanzo Sign and set up your profile."
description="Sign up for Hanzo eSign and set up your profile."
href="/docs/users/getting-started/create-account"
/>
<Card
@@ -8,7 +8,7 @@ import { Step, Steps } from 'fumadocs-ui/components/steps';
## Prerequisites
- A [Hanzo Sign account](/docs/users/getting-started/create-account).
- A [Hanzo eSign account](/docs/users/getting-started/create-account).
- A PDF document to send for signing.
## Limitations
@@ -24,7 +24,7 @@ import { Step, Steps } from 'fumadocs-ui/components/steps';
<Step>
### Upload your document
- Go to your [Documents dashboard](https://app.sign.hanzo.ai/documents)
- Go to your [Documents dashboard](https://app.esign.hanzo.ai/documents)
- Click **Upload Document** in the top right
- Select your PDF file or drag and drop it into the upload area
+4 -4
View File
@@ -5,7 +5,7 @@ description: Learn how to send documents for signing, create templates, and coll
## Getting Started
New to Hanzo Sign? Start here to create your account and send your first document.
New to Hanzo eSign? Start here to create your account and send your first document.
<Cards>
<Card
@@ -125,7 +125,7 @@ Configure your account and security options.
## Prerequisites
To follow this guide, you need a Hanzo Sign account. You can [create a free account](https://app.sign.hanzo.ai/signup) or use a [self-hosted instance](/docs/self-hosting).
To follow this guide, you need a Hanzo eSign account. You can [create a free account](https://app.esign.hanzo.ai/signup) or use a [self-hosted instance](/docs/self-hosting).
---
@@ -134,12 +134,12 @@ To follow this guide, you need a Hanzo Sign account. You can [create a free acco
<Cards>
<Card
title="Developer Documentation"
description="Integrate Hanzo Sign into your applications using the API."
description="Integrate Hanzo eSign into your applications using the API."
href="/docs/developers"
/>
<Card
title="Self-Hosting Guide"
description="Deploy and run your own Hanzo Sign instance."
description="Deploy and run your own Hanzo eSign instance."
href="/docs/self-hosting"
/>
</Cards>

Some files were not shown because too many files have changed in this diff Show More