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:
50skillsWebhook 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.
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.
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.
document_updated — someone edited the document or moved it back to draft. Rarely needed for onboarding.
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.






