Olmec Dynamics
H
·7 min read

How to Update HubSpot Deals When PandaDoc Signatures Complete Using Make.com

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_id from 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:

  1. Create a new Scenario.
  2. Add the PandaDoc webhook watcher trigger.
  3. Choose the event(s) that correspond to “signature completed.”
  4. 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:

  1. Add a Notion search (query) step where event_id equals the incoming PandaDoc webhook event id.
  2. Router:
    • If found, mark skipped_duplicate and stop.
    • If not found, continue.

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_id
  • hubspot_deal_id
  • signature_status (or equivalent completion status)

Add a filter:

  • Continue only when hubspot_deal_id is not empty

If missing:

  • Route to a failure branch that writes a Notion audit page with update_outcome = failed and 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-updates for sales ops
  • #revops for 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_id
    • document_id
    • hubspot_deal_id
    • signature_status
    • processed_at = now
    • make_run_id
    • update_outcome = success

In the failure branch:

  • Create a Notion page with update_outcome = failed and error_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_id events 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.