Skip to main content

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

  1. Log in to your Zapier account.
  2. Search for DocuTrust in the app directory.
  3. Click Connect and provide your connection details:
FieldValueDescription
Base URLhttps://spitshake.ioThe URL of your DocuTrust instance
API TokenYour API tokenGenerate one at Settings > API > Create Token
  1. 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.

Form Completed

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:
FieldTypeRequiredDescription
template_idstringYesThe template to create a submission from
send_emailbooleanNoWhether to send invitation emails (default: true)
submitters_orderstringNoSigning order: random or sequential (default: random)
submitter_emailstringYesEmail address of the first submitter
submitter_namestringNoName of the first submitter
submitter_rolestringNoRole name (must match a role in the template)
submitter_phonestringNoPhone number for SMS delivery
submitter_valuesobjectNoPre-filled field values
submitter_metadataobjectNoCustom metadata for the submitter
message_subjectstringNoCustom email subject line
message_bodystringNoCustom 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:
FieldTypeRequiredDescription
template_idstringYesThe template to use
emailsstringYesComma-separated email addresses
send_emailbooleanNoWhether to send invitation emails (default: true)
message_subjectstringNoCustom email subject
message_bodystringNoCustom 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:
FieldTypeRequiredDescription
submission_idnumberNoFind by exact submission ID
template_idstringNoFind submissions for a specific template
statusstringNoFilter 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

When form completed, add row to Google Sheet

Track every completed signing in a spreadsheet for reporting. Configuration:
  1. Trigger: DocuTrust - Form Completed
  2. Action: Google Sheets - Create Spreadsheet Row
Field mapping:
Sheet ColumnZapier 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:
  1. Trigger: Airtable - New Record in View
  2. Action: DocuTrust - Create Submission
Field mapping:
DocuTrust FieldAirtable Value
Template ID15 (your template)
Submitter Email{{Email}}
Submitter Name{{Full Name}}
Send Emailtrue
Message SubjectYour contract is ready for signing
Message BodyHi {{Full Name}}, please sign your employment agreement.

When submission completed, send Slack notification

Notify your team channel when all parties have signed. Configuration:
  1. Trigger: DocuTrust - Submission Completed
  2. 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}}

When form completed, create HubSpot contact

Add signers to your CRM automatically. Configuration:
  1. Trigger: DocuTrust - Form Completed
  2. Action: HubSpot - Create Contact
Field mapping:
HubSpot FieldZapier Value
Email{{email}}
First Name{{name}} (split)
Company{{values__Company}}
Job Title{{values__Title}}
NotesSigned {{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.