Full integration of DocuSeal Enterprise (self-hosted) with Nextcloud for electronic document signing directly from the Files app.
- Direct signing - Right-click on PDF, DOCX or image -> send for signature
- Template-based signing - Use pre-configured DocuSeal templates with field/role preview
- Embedded signing - Signers can sign directly within Nextcloud (iframe)
- Email signing - DocuSeal sends emails to signers with signing links
- Multiple recipients - Nextcloud users (autocomplete) or external email addresses
- Real-time status - File sidebar with per-signer status and progress bar
- Nextcloud notifications - Signed, declined, completed, expired
- Automatic download - Signed PDF is saved automatically in the same folder
- Audit trail - Full timeline with PDF audit log download
- Send reminders - Resend notification to signers who haven't signed yet
- Cancellation - Cancel pending signature requests
- Expiry - Set expiration date on requests
- Unified Search - Search signature requests from the search bar
- Dashboard Widget - Widget showing pending signature status
- Activity - Integrated activity log with the Activity app
- CSP Policy - Automatic Content Security Policy for iframe embedding
- Encrypted API Key - Stored using Nextcloud's ICrypto
- Webhook HMAC-SHA256 - Webhook validation with shared secret
- File access control - Permission checks before every operation
Full translations: Italian, English, German, French, Spanish
Language is selected automatically based on the user's Nextcloud settings.
| Component | Version |
|---|---|
| Nextcloud | 28 - 34 |
| PHP | 8.1+ |
| DocuSeal Enterprise | Self-hosted |
| Node.js | 20+ (build only) |
cp -r integration_docuseal /path/to/nextcloud/apps/
chown -R www-data:www-data /path/to/nextcloud/apps/integration_docusealcd /path/to/nextcloud/apps/integration_docuseal
npm install --legacy-peer-deps
npm run buildsudo -u www-data php occ app:enable integration_docuseal- Go to Settings -> Connected accounts -> DocuSeal
- Enter your DocuSeal server URL (e.g.
https://docuseal.example.com) - Enter the API Key (found in DocuSeal: Settings -> API)
- Click Save - the connection is tested automatically
In the DocuSeal admin panel:
- Go to Settings -> Webhook
- Enter the URL:
https://yournextcloud.com/apps/integration_docuseal/webhook - (Optional) Set a shared secret for HMAC validation
- Go to the Nextcloud Files app
- Right-click on a PDF, DOCX or image file
- Select "Request signature with DocuSeal"
- Choose the mode:
- Direct upload - The file is sent as-is
- DocuSeal template - Use a pre-configured template
- Add recipients (Nextcloud users or email addresses)
- Options: email notification, embedded signing, expiry, custom message
- Click Request signature
- Open the file sidebar to see signature status
- Use the search bar to find signature requests
- Check the Dashboard for an overview
- Receive real-time notifications
From the file sidebar, click "Audit trail" to view:
- Full timeline (sent, opened, signed, declined)
- PDF audit log download from DocuSeal
integration_docuseal/
├── appinfo/ App metadata + 18 API routes
├── lib/
│ ├── Activity/ Activity app integration
│ ├── BackgroundJob/ Status polling every 15 min
│ ├── Controller/ 3 controllers (Config, DocuSeal, Webhook)
│ ├── Dashboard/ Dashboard widget
│ ├── Db/ 2 entities + 2 mappers (requests + submitters)
│ ├── Listener/ CSP for iframes
│ ├── Migration/ Database schema
│ ├── Notification/ 4 notification types
│ ├── Search/ Unified Search provider
│ ├── Service/ API service + utilities
│ └── Settings/ Admin panel
├── src/ Vue 3 components
├── l10n/ 5 languages
└── tests/ PHPUnit tests
Two tables:
oc_docuseal_requests- Signature requests (user, file, submission, status)oc_docuseal_submitters- Signers (email, status, embed URL)
| Method | Endpoint | Description |
|---|---|---|
| GET | /info |
Check configuration |
| GET | /templates |
List DocuSeal templates |
| GET | /templates/{id} |
Template details |
| POST | /sign/direct/{fileId} |
Direct file signing |
| POST | /sign/template |
Template-based signing |
| GET | /requests |
List user requests |
| GET | /requests/{id} |
Request details |
| GET | /requests/file/{fileId} |
Requests for a file |
| POST | /requests/{id}/resend/{submitterId} |
Resend reminder |
| POST | /requests/{id}/cancel |
Cancel request |
| GET | /requests/{id}/audit |
Audit trail |
| GET | /embed/{requestId} |
Embedded signing URL |
| POST | /webhook |
DocuSeal webhook |
# Setup
make dev-setup
# Development build
npm run dev
# Watch mode
npm run watch
# Lint
make lint
# Test
make test
# Production build
npm run build
# Package for distribution
make appstore| Type | Extensions | Direct signing | Template |
|---|---|---|---|
| Yes | Yes | ||
| Word | .docx, .doc | Yes | Yes |
| Images | .png, .jpg, .jpeg | Yes | Yes |
AGPL-3.0-or-later
Developed by GEST CE for integration with DocuSeal Enterprise.