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",
"returnMethod": "inline"
}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,
"returnMethod": "inline",
"contentType": "application/json",
"content": { "pages": [ ... ] }
}With returnMethod: "inline", map content in later steps. Otherwise use resultUrl and status.
Download the result (optional)
If you omit inline delivery and use the default file response, add Webhooks by Zapier → GET on resultUrl to fetch the converted body.
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.