Skip to main content

PandaDoc webhook setup

Use this when you want a journey to wait for something to happen to a PandaDoc document - most often, waiting until an employee has signed their contract before the journey continues.

H
Written by Hanna Margrét Pétursdóttir

You set this up in two places: first you get a web address from the journey step, then you paste it into PandaDoc so PandaDoc knows where to send its updates.

Step 1 — Copy the URL from the journey step

In your journey, open the Triggers on document change step. Near the top you'll see a URL that looks like:

https://journeys-api.50skills.app/v1/webhooks/XXXXXXXX/

Copy it — you'll paste it into PandaDoc in the next step. Leave this window open; you'll come back to it at the end.

Step 2 — Turn on webhooks in PandaDoc

In PandaDoc, go to Settings → API and Integrations, scroll to API and Webhooks, and click Enable (if it's already on, click Open).

Then open the Configuration tab and find the Webhooks section at the bottom. Click + Create webhook.

Step 3 — Create the webhook

Fill in the form:

  • Webhook name: 50skills

  • Webhook endpoint URL: paste the URL you copied in Step 1

  • Subscribe to events: tick these six —

    • Document creation failed

    • Document deleted

    • Document section added

    • Document state changed

    • Document updated

    • PDF of completed document available for download

  • Include in JSON payload: tick metadata (leave the others unticked)

Click Create. PandaDoc will now send an update to the journey every time a document changes.


Step 4 — Tell the journey which event to wait for

Go back to the Triggers on document change step in your journey. The webhook hears about all the events above, so you have to tell the step which one should let the journey continue.

In the Payload values / Trigger on document change field, add the event you care about:

  • document_state_changed — the document moved to a new stage: sent, viewed, and finally signed/completed (it also covers declined). This is the one you'll want most of the time — choose it to wait until the contract is signed.

  1. document_completed_pdf_ready — the finished, signed PDF has generated and is ready to download. Use this if the next step downloads or files the signed copy.

  2. document_creation_failed — the document couldn't be created, usually because of a setup mistake. Use this on a separate branch if you want the journey to flag problems instead of getting stuck.

  3. document_updated — someone edited the document or moved it back to draft. Rarely needed for onboarding.

  4. document_deleted — the document was removed. Rarely needed for onboarding.

If the field is left empty, the journey can't tell the events apart and won't move forward.

Step 5 — Test it

Run the journey with a test document and sign it yourself. Once the document is completed, the journey should continue within a few seconds.

Troubleshooting

The journey never continues. Check Step 4 — the event field can't be empty. Make sure document_state_changed is set.

PandaDoc shows an error creating the webhook. Double-check the endpoint URL was pasted in full, including the https:// and the trailing slash.

Nothing happens at all. Confirm the step that sends the document actually ran — the webhook only reacts to a document that exists in PandaDoc.

Did this answer your question?