Hanzo

Hanzo Dataroom

Secure document sharing with analytics and access controls

Hanzo Dataroom

Hanzo Dataroom is a secure document sharing platform with real-time analytics, granular access controls, and custom branding. Share pitch decks, fundraising materials, legal documents, and more with full visibility into how recipients engage.

Features

  • Secure Sharing: Password protection, email verification, NDA agreements
  • Real-Time Analytics: Page-by-page view tracking, time spent, completion rates
  • Custom Branding: Per-team logos, colors, and custom domains
  • Data Rooms: Organized folder structures for due diligence and fundraising
  • Access Controls: Expiration dates, download restrictions, watermarking
  • SAML SSO: Enterprise single sign-on via BoxyHQ Jackson
  • Hanzo IAM SSO: Single sign-on via Hanzo identity

Endpoints

EnvironmentURL
Productionhttps://dataroom.hanzo.ai
APIhttps://dataroom.hanzo.ai/api

Architecture

+---------------------------------------------------------------+
|                     HANZO DATAROOM                              |
+---------------------------------------------------------------+
|                                                                |
|  +-----------------------+  +-------------------------------+  |
|  |    Documents          |  |       Data Rooms              |  |
|  |  +------+  +-------+  |  |  +--------+  +-------------+  |  |
|  |  | Links|  |Version|  |  |  |Folders |  | Permissions |  |  |
|  |  +------+  +-------+  |  |  +--------+  +-------------+  |  |
|  +-----------------------+  +-------------------------------+  |
|                                                                |
|  +-----------------------+  +-------------------------------+  |
|  |    Analytics          |  |       Access Control          |  |
|  |  +------+  +-------+  |  |  +--------+  +-------------+  |  |
|  |  | Views|  | Time  |  |  |  |Password|  | NDA/Email   |  |  |
|  |  +------+  +-------+  |  |  +--------+  +-------------+  |  |
|  +-----------------------+  +-------------------------------+  |
|                                                                |
+---------------------------------------------------------------+

Quick Start

Upload a Document

const formData = new FormData()
formData.append('file', pdfFile)

const response = await fetch('https://dataroom.hanzo.ai/api/documents', {
  method: 'POST',
  headers: { 'Authorization': `Bearer ${apiToken}` },
  body: formData
})

const { id: documentId } = await response.json()
const link = await fetch('https://dataroom.hanzo.ai/api/links', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${apiToken}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    documentId,
    name: 'Investor Deck - Series A',
    password: 'optional-password',
    expiresAt: '2026-04-01T00:00:00Z',
    emailProtected: true,
    allowDownload: false,
    enableWatermark: true
  })
})

// Share this URL with recipients
console.log(link.url) // https://dataroom.hanzo.ai/view/abc123

View Analytics

const analytics = await fetch(
  `https://dataroom.hanzo.ai/api/links/${linkId}/analytics`,
  { headers: { 'Authorization': `Bearer ${apiToken}` } }
).then(r => r.json())

// Per-viewer engagement data
analytics.views.forEach(view => {
  console.log(`${view.email}: ${view.totalDuration}s, ${view.completionRate}%`)
  view.pages.forEach(page => {
    console.log(`  Page ${page.number}: ${page.duration}s`)
  })
})

Data Rooms

Organize documents into structured data rooms for due diligence, fundraising, or any multi-document workflow.

Create a Data Room

const dataroom = await fetch('https://dataroom.hanzo.ai/api/datarooms', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${apiToken}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    name: 'Series A Due Diligence',
    folders: [
      { name: 'Financials' },
      { name: 'Legal' },
      { name: 'Product' },
      { name: 'Team' }
    ]
  })
})

Add Documents to Folders

await fetch(`https://dataroom.hanzo.ai/api/datarooms/${dataroomId}/documents`, {
  method: 'POST',
  headers: { 'Authorization': `Bearer ${apiToken}` },
  body: JSON.stringify({
    documentId,
    folderId: 'financials-folder-id'
  })
})

Access Controls

FeatureDescription
Password ProtectionRequire password to view
Email VerificationRequire verified email
NDA AgreementAccept NDA before viewing
Expiration DateAuto-expire links
Download RestrictionPrevent PDF downloads
WatermarkingDynamic watermarks with viewer info
Allow ListRestrict to specific email domains

Analytics

View Metrics

MetricDescription
totalViewsTotal number of views
uniqueViewersUnique email addresses
avgDurationAverage time spent
completionRate% of pages viewed
lastViewedAtMost recent view

Per-Page Analytics

Track engagement at the page level to understand which sections resonate:

  • Time spent per page
  • Page revisits
  • Scroll depth
  • Download attempts

Authentication

Hanzo Dataroom supports multiple authentication methods:

  • Hanzo IAM: SSO via https://hanzo.id (recommended)
  • Google OAuth: Sign in with Google
  • LinkedIn OAuth: Sign in with LinkedIn
  • Email Magic Link: Passwordless email login
  • Passkeys: WebAuthn/FIDO2 authentication
  • SAML SSO: Enterprise SSO via BoxyHQ Jackson

IAM Integration

# Environment variables
HANZO_IAM_URL=https://hanzo.id
HANZO_IAM_CLIENT_ID=app-dataroom
HANZO_IAM_CLIENT_SECRET=<from-kms>

Self-Hosting

Docker

docker run -d \
  --name hanzo-dataroom \
  -p 3000:3000 \
  -e DATABASE_URL=postgres://... \
  -e NEXTAUTH_URL=https://dataroom.yourdomain.com \
  -e HANZO_IAM_URL=https://hanzo.id \
  -e HANZO_IAM_CLIENT_ID=app-dataroom \
  ghcr.io/hanzoai/dataroom:latest

Environment Variables

VariableDescription
DATABASE_URLPostgreSQL connection string
NEXTAUTH_URLPublic URL of the application
NEXTAUTH_SECRETNextAuth encryption secret
HANZO_IAM_URLHanzo IAM server URL
HANZO_IAM_CLIENT_IDIAM application client ID
HANZO_IAM_CLIENT_SECRETIAM application client secret
NEXT_PUBLIC_BASE_URLPublic base URL
SMTP_HOSTEmail server host
STRIPE_SECRET_KEYStripe billing key

API Reference

Documents

  • POST /api/documents - Upload document
  • GET /api/documents - List documents
  • GET /api/documents/:id - Get document
  • DELETE /api/documents/:id - Delete document
  • POST /api/links - Create sharing link
  • GET /api/links - List links
  • GET /api/links/:id - Get link details
  • GET /api/links/:id/analytics - Get link analytics
  • PATCH /api/links/:id - Update link settings
  • DELETE /api/links/:id - Delete link

Data Rooms

  • POST /api/datarooms - Create data room
  • GET /api/datarooms - List data rooms
  • POST /api/datarooms/:id/documents - Add document
  • DELETE /api/datarooms/:id - Delete data room

Next Steps

Document signing platform

Equity management platform

Identity and access management

How is this guide?

Last updated on

On this page