Documentation Index
Fetch the complete documentation index at: https://docs.spitshake.io/llms.txt
Use this file to discover all available pages before exploring further.
Zapier Integration
DocuTrust integrates with Zapier to connect your document signing workflows to 6,000+ other applications. Automate actions when documents are signed, create submissions from external data sources, and keep your tools in sync without writing code.
Setup
- Log in to your Zapier account.
- Search for DocuTrust in the app directory.
- Click Connect and provide your connection details:
| Field | Value | Description |
|---|
Base URL | https://spitshake.io | The URL of your DocuTrust instance |
API Token | Your API token | Generate one at Settings > API > Create Token |
- Click Test Connection to verify.
Your API token must have sufficient scopes for the triggers and actions you plan to use. At minimum, the token needs read scope for triggers and write scope for actions.
Triggers
Triggers fire when an event occurs in DocuTrust, starting your Zap.
Fires when an individual signer completes their portion of a submission.
Trigger data:
{
"id": 142,
"submission_id": 89,
"template_id": 15,
"email": "jane.doe@example.com",
"name": "Jane Doe",
"role": "Recipient",
"status": "completed",
"phone": "+15551234567",
"completed_at": "2026-04-09T14:32:18.000Z",
"opened_at": "2026-04-09T14:28:05.000Z",
"sent_at": "2026-04-09T10:00:00.000Z",
"external_id": null,
"metadata": {
"customer_id": "cust_8472",
"deal_id": "deal_291"
},
"values": [
{
"field": "Full Name",
"value": "Jane Doe"
},
{
"field": "Email",
"value": "jane.doe@example.com"
},
{
"field": "Company",
"value": "Acme Inc"
},
{
"field": "Title",
"value": "VP of Operations"
},
{
"field": "Date",
"value": "2026-04-09"
},
{
"field": "Signature",
"value": "https://spitshake.io/blobs/proxy/eyJfcm..."
}
],
"documents": [
{
"name": "Employment Agreement - Signed",
"url": "https://spitshake.io/blobs/proxy/eyJfcm...",
"content_type": "application/pdf",
"size": 284716
}
],
"submission": {
"id": 89,
"status": "completed",
"created_at": "2026-04-09T09:00:00.000Z",
"completed_at": "2026-04-09T14:32:18.000Z",
"source": "api",
"template": {
"id": 15,
"name": "Employment Agreement"
}
}
}
Submission Completed
Fires when all signers in a submission have completed signing.
Trigger data:
{
"id": 89,
"template_id": 15,
"status": "completed",
"source": "api",
"submitters_order": "random",
"created_at": "2026-04-09T09:00:00.000Z",
"completed_at": "2026-04-09T15:45:30.000Z",
"archived_at": null,
"expire_at": null,
"metadata": {
"deal_id": "deal_291",
"source": "api_client"
},
"template": {
"id": 15,
"name": "Employment Agreement",
"created_at": "2026-03-01T10:00:00.000Z"
},
"submitters": [
{
"id": 142,
"email": "jane.doe@example.com",
"name": "Jane Doe",
"role": "Recipient",
"status": "completed",
"completed_at": "2026-04-09T14:32:18.000Z"
},
{
"id": 143,
"email": "hr@example.com",
"name": "HR Department",
"role": "Sender",
"status": "completed",
"completed_at": "2026-04-09T15:45:30.000Z"
}
],
"documents": [
{
"name": "Employment Agreement - Fully Executed",
"url": "https://spitshake.io/blobs/proxy/eyJfcm...",
"content_type": "application/pdf",
"size": 312450
}
],
"audit_log_url": "https://spitshake.io/submissions/89/audit_log"
}
Actions
Actions are steps that Zapier performs in DocuTrust when triggered by another app.
Create Submission
Creates a new submission from an existing template and sends it to the specified recipients.
Input fields:
| Field | Type | Required | Description |
|---|
template_id | string | Yes | The template to create a submission from |
send_email | boolean | No | Whether to send invitation emails (default: true) |
submitters_order | string | No | Signing order: random or sequential (default: random) |
submitter_email | string | Yes | Email address of the first submitter |
submitter_name | string | No | Name of the first submitter |
submitter_role | string | No | Role name (must match a role in the template) |
submitter_phone | string | No | Phone number for SMS delivery |
submitter_values | object | No | Pre-filled field values |
submitter_metadata | object | No | Custom metadata for the submitter |
message_subject | string | No | Custom email subject line |
message_body | string | No | Custom email body (supports merge tokens) |
Output data:
{
"id": 90,
"template_id": 15,
"status": "pending",
"source": "api",
"submitters_order": "random",
"created_at": "2026-04-09T16:00:00.000Z",
"completed_at": null,
"archived_at": null,
"expire_at": null,
"metadata": {},
"submitters": [
{
"id": 144,
"email": "new.signer@example.com",
"name": "New Signer",
"role": "Recipient",
"status": "sent",
"slug": "cD5eF7gHiJ",
"signing_url": "https://spitshake.io/s/cD5eF7gHiJ",
"sent_at": "2026-04-09T16:00:01.000Z",
"opened_at": null,
"completed_at": null,
"phone": "+15551234567",
"values": {
"Full Name": "New Signer",
"Company": "Widget Corp"
},
"metadata": {
"source": "zapier"
}
}
]
}
Create from Emails
Creates submissions from a list of email addresses. Each email becomes a separate submission with its own signing link.
Input fields:
| Field | Type | Required | Description |
|---|
template_id | string | Yes | The template to use |
emails | string | Yes | Comma-separated email addresses |
send_email | boolean | No | Whether to send invitation emails (default: true) |
message_subject | string | No | Custom email subject |
message_body | string | No | Custom email body |
Output data:
{
"submissions": [
{
"id": 91,
"template_id": 15,
"status": "pending",
"submitters": [
{
"id": 145,
"email": "signer1@example.com",
"role": "Recipient",
"status": "sent",
"slug": "kL8mN0pQrS",
"signing_url": "https://spitshake.io/s/kL8mN0pQrS"
}
]
},
{
"id": 92,
"template_id": 15,
"status": "pending",
"submitters": [
{
"id": 146,
"email": "signer2@example.com",
"role": "Recipient",
"status": "sent",
"slug": "tU2vW4xYzA",
"signing_url": "https://spitshake.io/s/tU2vW4xYzA"
}
]
}
]
}
Searches
Searches let Zapier look up existing data in DocuTrust.
Find Submission
Searches for a submission by ID or template ID.
Search fields:
| Field | Type | Required | Description |
|---|
submission_id | number | No | Find by exact submission ID |
template_id | string | No | Find submissions for a specific template |
status | string | No | Filter by status: pending, completed, archived |
Output data:
{
"id": 89,
"template_id": 15,
"status": "completed",
"source": "api",
"submitters_order": "random",
"created_at": "2026-04-09T09:00:00.000Z",
"completed_at": "2026-04-09T15:45:30.000Z",
"archived_at": null,
"expire_at": null,
"metadata": {
"deal_id": "deal_291"
},
"template": {
"id": 15,
"name": "Employment Agreement"
},
"submitters": [
{
"id": 142,
"email": "jane.doe@example.com",
"name": "Jane Doe",
"role": "Recipient",
"status": "completed",
"completed_at": "2026-04-09T14:32:18.000Z"
},
{
"id": 143,
"email": "hr@example.com",
"name": "HR Department",
"role": "Sender",
"status": "completed",
"completed_at": "2026-04-09T15:45:30.000Z"
}
],
"documents": [
{
"name": "Employment Agreement - Fully Executed",
"url": "https://spitshake.io/blobs/proxy/eyJfcm...",
"content_type": "application/pdf",
"size": 312450
}
]
}
Example Zaps
Track every completed signing in a spreadsheet for reporting.
Configuration:
- Trigger: DocuTrust - Form Completed
- Action: Google Sheets - Create Spreadsheet Row
Field mapping:
| Sheet Column | Zapier Value |
|---|
| Signer Name | {{name}} |
| Signer Email | {{email}} |
| Role | {{role}} |
| Completed At | {{completed_at}} |
| Template | {{submission__template__name}} |
| Document URL | {{documents__0__url}} |
| Submission ID | {{submission_id}} |
When new row in Airtable, create submission
Automatically send documents for signing when a new record appears in your CRM or project tracker.
Configuration:
- Trigger: Airtable - New Record in View
- Action: DocuTrust - Create Submission
Field mapping:
| DocuTrust Field | Airtable Value |
|---|
| Template ID | 15 (your template) |
| Submitter Email | {{Email}} |
| Submitter Name | {{Full Name}} |
| Send Email | true |
| Message Subject | Your contract is ready for signing |
| Message Body | Hi {{Full Name}}, please sign your employment agreement. |
When submission completed, send Slack notification
Notify your team channel when all parties have signed.
Configuration:
- Trigger: DocuTrust - Submission Completed
- Action: Slack - Send Channel Message
Message template:
All parties have signed "{{template__name}}"
Submitters:
{{submitters__0__name}} ({{submitters__0__email}}) - completed {{submitters__0__completed_at}}
{{submitters__1__name}} ({{submitters__1__email}}) - completed {{submitters__1__completed_at}}
Document: {{documents__0__url}}
Audit log: {{audit_log_url}}
Add signers to your CRM automatically.
Configuration:
- Trigger: DocuTrust - Form Completed
- Action: HubSpot - Create Contact
Field mapping:
| HubSpot Field | Zapier Value |
|---|
| Email | {{email}} |
| First Name | {{name}} (split) |
| Company | {{values__Company}} |
| Job Title | {{values__Title}} |
| Notes | Signed {{submission__template__name}} on {{completed_at}} |
Troubleshooting
Connection fails
- Verify your API token is valid and has not been revoked.
- Confirm your Base URL is correct and accessible from the internet.
- Check that your token has the required scopes (
read for triggers, write for actions).
Trigger not firing
- Zapier polls for new data at intervals (typically every 1-15 minutes depending on your Zapier plan).
- For near-real-time updates, consider using webhooks directly instead of Zapier triggers.
- Verify the template ID filter (if set) matches the template being signed.
Rate limits
DocuTrust enforces a rate limit of 120 requests per minute per API token. Zapier typically stays well within this limit, but high-volume Zaps with multiple actions may approach it. If you see 429 Too Many Requests errors in your Zap history, add a delay step between actions.