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.

May 5, 2026 3 min read okraPDF

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.

StepZapier roleAppEvent
1TriggerokraPDFPDF Ready
2ActionSlackSend 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:

  1. Waits for okraPDF document.processed.
  2. Receives the filename, job ID, file ID, hosted URL, and PDF URL.
  3. 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:

  1. Open webhook settings.
  2. Pick Zapier.
  3. Paste the Catch Hook URL.
  4. Select PDF ready and PDF failed.
  5. 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.