Zapier Integration
Automatically convert PDFs in your Zapier workflows using PDFPipe. This guide uses the Webhooks by Zapier action to call the PDFPipe API directly — no custom app needed.
Create a new Zap and choose a trigger
Start a new Zap and pick a trigger that provides a PDF URL. Common examples:
- Gmail — "New Attachment" (use the attachment URL)
- Google Drive — "New File in Folder"
- Dropbox — "New File in Folder"
- Webhook (Catch Hook) — receive a PDF URL from an external system
Add a Webhooks by Zapier action
Add an action step and select Webhooks by Zapier → Custom Request. Configure:
- Method: POST
- URL:
https://api.pdfpipe.dev/v1/convert - Headers:
Authorization|Bearer pk_live_your_key_hereContent-Type|application/json
Set the request body
In the Data field, switch to Raw mode and enter:
{
"url": "{{pdf_url_from_trigger}}",
"format": "json"
}Replace {{pdf_url_from_trigger}} with the dynamic value from your trigger step. Change "format" to any supported format (text, markdown, csv, etc.).
Test and parse the response
Click Test step. For small PDFs you'll get a synchronous response:
{
"requestId": "req_01J9X7K2M...",
"status": "complete",
"format": "json",
"pagesProcessed": 2,
"creditsUsed": 1,
"resultUrl": "https://pdfpipe-results.s3..."
}The key fields to use downstream are resultUrl (the presigned download link) and status.
Download the result (optional)
If you need the actual converted content in the Zap, add another Webhooks by Zapier → GET step pointing to the resultUrl from the previous step. The response body will contain the converted data.
Route to a destination
Add a final action to send the result wherever you need it:
- Google Sheets — insert extracted data as rows
- Slack — post a summary message
- Airtable — create a record with the extracted fields
- Email — forward the converted text
Handling large files
For PDFs over 10 MB, the API returns a 202 response with a pollUrl instead of an immediate result. In Zapier, you can handle this with a Looping by Zapier action or by setting "async": false and staying within the 10 MB sync limit. See the Async Polling guide for details.