Update HubSpot deals when PandaDoc signatures complete using Make.com webhooks, idempotency logs, and Slack alerts for RevOps and sales ops.
Introduction
If you run proposals through PandaDoc but your HubSpot deals only update when someone manually checks signature status, your pipeline reporting will be wrong. The manual workflow is usually: check PandaDoc completion, copy the outcome into HubSpot, update deal properties and stages, then message the deal desk in Slack. It is slow, it fails during holidays or off-hours, and it creates “stuck” deals that forecast badly.
This is a classic Cross-Platform Automation (XPA) problem. In this guide, you will build a PandaDoc signature completion webhook into Make.com that updates the right HubSpot deal automatically, posts a Slack alert for meaningful changes, and writes an audit trail into Notion so you can replay and troubleshoot.
By the end, you will know how to wire PandaDoc completion events to deterministic HubSpot deal updates in Make.com without duplicate updates.
What You’ll Need
- PandaDoc document flows already configured for signatures
- A way to map each PandaDoc document to exactly one HubSpot deal, typically via a PandaDoc custom field like
hubspot_deal_id - Make.com account with connections/credentials for PandaDoc, HubSpot, Slack, and Notion
- HubSpot permissions to read and update deals (and access to deal properties you will change)
- Slack permissions to post into your chosen channel
- Notion database for audit logging (page-create permission for the Make.com integration)
Planning notes:
- This approach assumes you can store the HubSpot deal ID at document creation time. If you cannot, you need a different mapping approach first, because guessing the deal causes wrong updates.
How It Works (The Logic)
In plain English, your workflow is:
- PandaDoc sends a webhook to Make.com when the document reaches completion (signature done).
- Make.com verifies signature handling through the PandaDoc webhook watcher (and still enforces payload checks).
- Make.com checks your Notion audit log to ensure the PandaDoc webhook event id has not been processed before.
- Make.com extracts
hubspot_deal_idfrom the PandaDoc payload. - Make.com fetches the HubSpot deal, updates signature-related deal properties, then posts a Slack message.
- Make.com writes a final Notion audit record with success, skipped duplicate, or failure details.
Trigger → Idempotency check → Deal lookup → Property update → Slack notify → Notion audit
Step-by-Step Setup
1) Decide the deterministic mapping key
You need one stable mapping between PandaDoc and HubSpot.
Recommended: store hubspot_deal_id inside PandaDoc as a custom field, then populate it when you generate the PandaDoc document from HubSpot.
Example mapping fields in PandaDoc:
hubspot_deal_id(text)- optional:
hubspot_deal_name(text) for display in Slack
Gotcha: if hubspot_deal_id is missing or empty, stop the automation. Do not attempt fuzzy matching by contact name.
2) Create a Notion audit database for webhook events
Create a Notion database called PandaDoc Webhook Audit with these properties:
event_id(text)document_id(text)hubspot_deal_id(text)signature_status(select)processed_at(date)make_run_id(text)update_outcome(select: success, skipped_duplicate, failed)error_message(text)
This database is your source of truth for idempotency.
3) Build the Make.com scenario with a PandaDoc webhook trigger
In Make.com:
- Create a new Scenario.
- Add the PandaDoc webhook watcher trigger.
- Choose the event(s) that correspond to “signature completed.”
- Confirm Make captures a stable webhook identifier in the payload or headers.
Make it strict: include conditions in your scenario so you only proceed for events that match your completion meaning.
4) Add an idempotency gate using Notion
Right after the trigger:
- Add a Notion search (query) step where
event_idequals the incoming PandaDoc webhook event id. - Router:
- If found, mark
skipped_duplicateand stop. - If not found, continue.
- If found, mark
Why: PandaDoc webhooks can retry deliveries, and Make.com scenarios can run duplicates if you restart or recover from failures.
5) Extract and validate hubspot_deal_id
From the PandaDoc webhook payload, map:
document_idhubspot_deal_idsignature_status(or equivalent completion status)
Add a filter:
- Continue only when
hubspot_deal_idis not empty
If missing:
- Route to a failure branch that writes a Notion audit page with
update_outcome = failedand the error message “Missing hubspot_deal_id in PandaDoc payload.”
6) Fetch the HubSpot deal by id
Add a HubSpot module to get deal by id using hubspot_deal_id.
Validation rule:
- If deal lookup fails (deal not found or permissions), route to failure handling.
7) Update deal properties for signature completion
Choose the deal properties you will update. Common options:
signature_status(or your equivalent property)signed_at(date/time)panda_doc_document_id(store for audit)- optionally update a deal stage if your RevOps process treats signature completion as a stage transition
Update logic tips:
- Only write values when the PandaDoc completion event provides them.
- If your deal is already in the expected signature completion state, you can treat it as “already updated” and still log success (or mark skipped_duplicate if you want to separate it from event duplicates).
8) Post a Slack message for meaningful updates
Add a Slack “post message” step.
Recommended channel patterns:
#deal-updatesfor sales ops#revopsfor pipeline health
Message template:
- Deal:
{{hubspot_deal_id}} - Document:
{{document_id}} - Status:
{{signature_status}} - Signed at:
{{signed_at}} - Link: include a HubSpot deal link
Keep Slack short. This is for visibility, not discussion.
9) Write the final Notion audit record
After the HubSpot update succeeds:
- Create a Notion page with:
event_iddocument_idhubspot_deal_idsignature_statusprocessed_at = nowmake_run_idupdate_outcome = success
In the failure branch:
- Create a Notion page with
update_outcome = failedanderror_message.
10) Add operational error handling
In Make.com scenario settings:
- Enable retries for transient HubSpot API errors (timeouts, 429 rate limiting).
- Do not retry missing
hubspot_deal_idevents endlessly, you will just fill the audit log.
Also set up a private Slack alert for failures if your ops team needs fast attention.
Real-World Business Scenario
A B2B services team used PandaDoc for SOW approvals. Their HubSpot deals stayed stuck because signature completion was a manual admin task. That caused a measurable reporting gap in monthly forecast.
After deploying this Make.com PandaDoc webhook to HubSpot deal update workflow, deal properties flipped within minutes of signatures completing. Sales ops got Slack alerts only when meaningful updates occurred, and Notion audit records made it easy to verify what happened for each document and each webhook event id.
They reduced deal desk follow-ups and stopped “stale signature” deals from polluting pipeline reporting.
If you want a related automation pattern, see how we designed event-driven, idempotent workflows with audit logs in auto-triaging contract emails with PandaDoc, Notion, and Slack.
Common Variations
1) Update deal stage only for specific signature outcomes
If PandaDoc can produce multiple completion outcomes (signed, declined, incomplete), route each to a different set of deal updates.
2) Append a signed-document link to the deal
After updating signature state, add an additional call to fetch the final PandaDoc document link or download URL, then store it in a deal property.
3) Trigger downstream onboarding tasks in ClickUp
Once the deal is updated to “Signed,” create a ClickUp task for onboarding, using the HubSpot deal id as the idempotency key.
If you want a matching handoff pattern for ClickUp, you can reuse routing and Slack notification ideas from automatically notifying Slack when a ClickUp task changes status.
The workflow you now have, and what to reuse
You built a PandaDoc-to-HubSpot deal update Cross-Platform Automation (XPA) in Make.com that is safe for production. The core wins are:
- deterministic mapping via
hubspot_deal_id - idempotency using a Notion audit log keyed by webhook event id
- targeted HubSpot property updates
- Slack alerts only for meaningful transitions
If you want this built and tuned for your exact deal schema, document creation method, and team notification rules, Olmec Dynamics implements these XPAs across your stack. Start with Cross-Platform Automation (XPA) and then see what we do.