n8n Atlas e-sign workflow
n8n teams self-host automation and want HTTP nodes instead of per-task SaaS pricing. Atlas exposes a REST API and webhooks that map cleanly to n8n HTTP Request, Webhook, and IF nodes.
> Share: "n8n orchestrates CRM and storage. Atlas handles signing and audit PDFs."
Reference workflow
Webhook (CRM deal stage) → HTTP Request POST /api/envelope → Set node stores envelope_id + review_url → Slack node posts review link → Webhook node waits for Atlas envelope.signed → HTTP GET signed PDF → Google Drive upload → HubSpot node updates deal
Import this mentally as three n8n workflows: create, notify, complete. Splitting keeps retry scopes small.
Node 1: Create envelope
HTTP Request node:
| Field | Value |
|---|---|
| Method | POST |
| URL | https://atlaswork.ai/api/envelope |
| Authentication | Header Auth Authorization: Bearer {{$credentials.atlasApiKey}} |
| Body | JSON |
Example JSON body with expressions:
{
"document_url": "{{ $json.document_url }}",
"webhook_url": "https://n8n.example.com/webhook/atlas-signed",
"metadata": {
"client_reference_id": "deal-{{ $json.deal_id }}",
"external_id": "{{ $json.deal_id }}"
},
"parties": [
{
"email": "{{ $json.signer_email }}",
"name": "{{ $json.signer_name }}",
"role": "Customer"
}
]
}
Add header Idempotency-Key: n8n-{{ $json.deal_id }}-create so n8n retries on timeout do not duplicate envelopes.
Node 2: Wait for signature
Option A: Dedicated Webhook node path /webhook/atlas-signed. Atlas POSTs JSON with event type. Verify signature in a Function node before branching.
Option B: Schedule + HTTP GET /api/envelope/{{$json.envelope_id}}/status every five minutes until status is signed or declined. Webhooks are cheaper at scale.
Function node signature verification:
const crypto = require('crypto');
const key = $credentials.atlasApiKey;
const sig = $input.first().headers['x-atlas-signature'];
const raw = $input.first().bodyRaw;
const expected = 'sha256=' + crypto.createHmac('sha256', key).update(raw).digest('hex');
if (sig !== expected) throw new Error('Bad Atlas signature');
return $input.all();
Node 3: Download and file
When event is envelope.signed, call GET /api/envelope/{id} with your API key. Response includes download URL when archived. Upload bytes to Drive, S3, or SharePoint with the next HTTP node.
Credentials
Store the Atlas API key in n8n credentials, not inline in JSON. Rotate keys from dashboard settings when someone leaves ops.
Separate credentials for sandbox vs production if you use different Atlas accounts.
Template branch
Add an IF node on document_type === 'standard_nda'. True branch calls POST /api/templates/{template_id}/send with prefill map. False branch uses ad-hoc create + manual review.
See API document templates for prefill keys.
Error workflows
Attach an Error Trigger workflow:
- 402 responses route to email billing admin
- 409 on send means fields still pending. Wait and poll
fields_status - Log
envelope_idand execution URL for support
n8n vs Zapier vs MCP
| Tool | Best for |
|---|---|
| n8n | Self-hosted, complex branching, EU data residency |
| Zapier | Fast citizen-developer prototypes |
| Atlas MCP | Agents in Claude/Cursor preparing envelopes |
Many teams run n8n for CRM automation and MCP for founder chat sends on the same Atlas account.
Sub-workflow exports
Export n8n workflows as JSON in git for review. Include Atlas HTTP node headers minus secrets. New hires import template and attach credentials locally.
Batch operations
When importing 50 deals from CSV, loop HTTP create with rate awareness. Atlas idempotency keys should include row id to survive n8n item retries on partial batch failure.
Self-hosted n8n on Kubernetes
Mount Atlas API key from Kubernetes secret into n8n deployment env. Webhook URL must be public ingress. Confirm TLS cert covers hostname Atlas calls back.
AI agent steps inside n8n
You can add an OpenAI or Anthropic node to draft party names from unstructured deal notes. Keep the model output schema strict (email, name, role). Pass only validated JSON into the Atlas HTTP node. Review URL still gates Send for new PDFs.
FAQ
Can n8n upload PDF binaries? Yes. Use HTTP Request with multipart form and binary property from a prior node.
Does Atlas support OAuth for n8n? API key auth is the integration path. MCP OAuth is for chat clients, not n8n.
Sequential signers? Pass multiple parties in order in the parties array. Atlas promotes signers one at a time.
Webhook retries? Atlas retries failed webhook delivery. Your n8n Webhook node must respond 2xx within ten seconds and process async if needed.
Platform mode? Pass Atlas-Account: ext_... header when using connected accounts. See Platform connected accounts.
Related
Extended FAQ
Can n8n call MCP instead of REST? MCP targets chat clients. n8n should use REST HTTP nodes.
How to handle 402 in loop? Break loop, notify finance channel, do not retry create indefinitely.
Does n8n support multipart upload? Yes with binary data from prior node. Test DOCX and PDF paths separately.
EU hosting? Self-host n8n in EU while Atlas API remains US unless future region options apply.
Duplicate webhook delivery? Idempotent handler on envelope_id and event name before CRM writes.
API reference
Full route list and request schemas live at /dev. Start with E-signature API for the mental model, then use this guide for copy-paste examples.