PDF extraction
How to notify Slack when PDFs are ready with okraPDF and Zapier
Use okraPDF lifecycle events and Zapier to post Slack alerts when uploaded PDFs are hosted, processed, or failed.
This recipe posts a Slack message when a PDF finishes in okraPDF. It is useful for teams that upload statements, invoices, legal packets, forms, or reports and need a visible “ready” notification with a link to the hosted PDF.
You can build it two ways:
- Native okraPDF Zapier trigger: best when you have the private beta app.
- Webhooks by Zapier fallback: works today with a Catch Hook URL registered in okraPDF webhook settings.
Zap template
okraPDF is the trigger in this Zap. A PDF lifecycle event starts the workflow, then Slack receives the message.
| Step | Zapier role | App | Event |
|---|---|---|---|
| 1 | Trigger | okraPDF | PDF Ready |
| 2 | Action | Slack | Send Channel Message |
Use this template when the PDF is already in okraPDF and another app should react to its status.
What you will build
The Zap:
- Waits for okraPDF
document.processed. - Receives the filename, job ID, file ID, hosted URL, and PDF URL.
- Posts a Slack message to the channel your team watches.
Option A: Use the native okraPDF Zapier trigger
Create a new Zap.
For the trigger:
- App: okraPDF
- Event: PDF Ready
- Account: connect with your okraPDF account
The trigger subscribes Zapier to okraPDF lifecycle events through the /v1/webhooks API. You do not need to paste a webhook URL by hand.
Test with a recent upload. Zapier should show fields like:
{
"type": "document.processed",
"job_id": "job_...",
"file_id": "file_...",
"filename": "invoice.pdf",
"hosted_url": "https://acme.okrapdf.com/invoices/invoice-042",
"pdf_url": "https://acme.okrapdf.com/invoices/invoice-042/pdf"
}
Option B: Use Webhooks by Zapier
If the private app is not available in your Zapier account, use the fallback.
This is still an okraPDF-as-trigger workflow conceptually. Zapier just receives the okraPDF event through its generic webhook trigger instead of the native okraPDF app.
In Zapier:
- App: Webhooks by Zapier
- Event: Catch Hook
- Copy the generated hook URL
In okraPDF:
- Open webhook settings.
- Pick Zapier.
- Paste the Catch Hook URL.
- Select PDF ready and PDF failed.
- Save the endpoint.
Upload a PDF in okraPDF, then return to Zapier and test the trigger.
Add the Slack action
Add a Slack action:
- App: Slack
- Event: Send Channel Message
- Channel: the channel your team uses for document intake
Use a message like:
PDF ready: {{filename}}
Status: {{type}}
Job: {{job_id}}
Open: {{hosted_url}}
Direct PDF: {{pdf_url}}
Keep both hosted_url and pdf_url. The hosted URL is better for humans; the direct PDF URL is better for downstream tools.
Add a failure alert
Create a second Zap or add a path for document.failed.
Send failures to Slack with:
PDF failed: {{filename}}
Job: {{job_id}}
Error: {{error}}
Route failures to the same channel if the team is small. Route them to a support or operations channel if document volume is high.
Common fixes
If Zapier does not receive an event, check webhook settings and confirm the endpoint is active.
If Slack shows a blank link, make sure you mapped hosted_url or pdf_url, not the full nested webhook body.
If messages arrive before the PDF is usable, trigger on PDF Ready (document.processed) instead of PDF Uploaded (document.created).
If you only need Slack and not Zapier, use the Slack connector in okraPDF Connectors. It posts formatted Slack messages directly through an incoming webhook.
Why lifecycle events matter
Upload accepted is not the same thing as PDF ready. document.created means okraPDF received the file. document.processed means the PDF is hosted and ready for downstream work. For Slack notifications, use PDF Ready unless your team explicitly wants an early “we received it” message.