HubSpot document signing
HubSpot users search "hubspot document signing" when they want quotes, contracts, or order forms signed without leaving the CRM. HubSpot ships native quotes and integrations with e-sign vendors. You can also wire Atlas via API and webhooks.
HubSpot native options
HubSpot offers:
- Quotes with e-sign when paired with supported e-sign integrations
- Workflow actions that trigger signing apps from deal stage changes
- Document tracking inside CRM timelines
Native paths assume a HubSpot-approved integration or manual upload flows. Custom products often need a headless API.
HubSpot API authentication
HubSpot workflow webhooks and CRM updates use separate credentials:
- Private app token for CRM API (deals, contacts, files). Scopes:
crm.objects.deals.write,files,timeline. - Workflow webhook sends unsigned POST to your middleware. Authenticate with a shared secret query param or HMAC you validate server-side.
- Atlas API key on envelope create and webhook verification.
Never expose HubSpot or Atlas keys in client-side HubSpot UI extensions. All signing orchestration runs on your server.
curl -X GET "https://api.hubapi.com/crm/v3/objects/deals/12345?properties=dealname,amount" \ -H "Authorization: Bearer $HUBSPOT_TOKEN"
Refresh tokens for OAuth-based HubSpot apps rotate on their own schedule. Store them encrypted and alert when refresh fails.
Atlas + HubSpot pattern
Atlas does not ship a HubSpot marketplace app today. The supported pattern is API + webhook glue:
Deal stage change (HubSpot workflow) → Your middleware → POST /api/envelope (PDF or DOCX) → Store review_url on deal property → Human clicks Send in review (or auto_send for trusted templates) → Atlas webhooks update deal stage + attach signed PDF
Step 1: HubSpot workflow outbound webhook
Configure a deal workflow to POST to your server when stage becomes "Contract sent". Include dealId, contact email, and document URL from a deal property.
Step 2: Create Atlas envelope
curl -X POST https://atlaswork.ai/api/envelope \
-H "Authorization: Bearer $ATLAS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"document_url": "https://your-cdn.com/deals/12345-msa.pdf",
"webhook_url": "https://your-app.com/hooks/atlas",
"metadata": {
"client_reference_id": "hubspot-deal-12345",
"external_id": "12345"
},
"parties": [
{ "email": "buyer@example.com", "name": "Buyer", "role": "Customer" }
]
}'
Write review_url back to HubSpot via CRM API:
curl -X PATCH "https://api.hubapi.com/crm/v3/objects/deals/12345" \
-H "Authorization: Bearer $HUBSPOT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"properties":{"atlas_review_url":"https://atlaswork.ai/review/..."}}'
Step 3: Handle Atlas webhooks
On envelope.signed:
- Download signed PDF from Atlas API
- Upload to HubSpot file manager or attach to deal
- Move deal stage to "Closed won" or your signed state
- Log timeline event for reps
Verify webhook signatures with your Atlas API key (HMAC-SHA256).
Step 4: Template repeat sends
For identical order forms, save an Atlas template and call POST /api/templates/{id}/send from workflow with prefill values mapped from HubSpot properties.
Platform mode for agencies
Agencies managing multiple HubSpot portals can use Atlas Platform connected accounts (one ext_ id per client) and pass Atlas-Account header on create.
HubSpot vs Atlas responsibilities
| Layer | Owner |
|---|---|
| CRM records, stages, owners | HubSpot |
| Document generation (PDF/DOCX) | Your template engine or HubSpot quotes |
| Signature fields, signing order | Atlas |
| Signer email and audit PDF | Atlas |
| Billing per send | Atlas credits |
FAQ
Can signers stay inside HubSpot? Signers use Atlas sign pages unless you embed signing in your portal. HubSpot iframes for signing are possible but require your UX design.
Does Atlas sync contacts automatically? No native sync. Pass email and name on create from HubSpot properties.
PDF and DOCX? Atlas accepts both on create. DOCX converts to PDF for signing.
Further reading
HubSpot FAQ
Native HubSpot e-sign vs Atlas API? Native integrations trade flexibility for speed. API glue trades setup time for control over review and pricing.
Deal property sync? Map envelope status to custom deal properties updated from your webhook handler.
Quotes object? If quotes generate PDFs, pass PDF URL to Atlas on deal stage change.
Multi-portal agencies? Use Platform connected accounts with Atlas-Account header per client portal.
Workflow limits? HubSpot workflow actions have rate limits; queue envelope creates in your middleware if deal stages flip in bulk during imports.
Timeline events? Log signed events to deal timeline via HubSpot engagements API so reps see status without opening Atlas dashboard.
HubSpot sandbox? Use a separate Atlas API key and test portal. Deal IDs differ between sandbox and production.
Signed PDF storage? Upload to HubSpot file manager and attach file ID to a deal property. Keep a copy in your object storage for backup.
Error handling on create? Return 200 to HubSpot workflow quickly and queue Atlas create async. HubSpot workflow actions time out on slow upstream calls.
Idempotency? Pass Idempotency-Key header on Atlas create keyed to deal ID so workflow retries do not spawn duplicate envelopes.
Custom objects? Map Atlas envelope_id to a custom object associated to deals if your ops team wants a signing object in CRM views.