Guides

Make (Integromat) Integration

Convert PDFs to structured data inside Make scenarios using the built-in HTTP module. No custom app or OAuth setup required.

Prerequisites: A PDFPipe account with an API key and a Make account (free or paid).
1

Create a new scenario

Open Make and create a new scenario. Add a trigger module that provides a PDF URL:

  • Google Drive - "Watch Files" (share the file as "anyone with the link" and use its direct download link)
  • Dropbox - "Watch Files" (use a public shared link)
  • Email (IMAP) - "Watch Emails" where the email body contains a public PDF link
  • Webhooks - "Custom Webhook" to receive URLs from external systems
The URL must be reachable without a login. PDFPipe fetches the PDF from its own servers and does not send your cookies or credentials, so private Drive, Dropbox, or mailbox URLs will fail with URL_UNAUTHORIZED, URL_FORBIDDEN, or REDIRECT_TO_LOGIN. Public links, links with an access token in the URL, and links that redirect before serving the file all work. Email attachments themselves are not URLs and cannot be sent to PDFPipe directly.
2

Add an HTTP module

Click the + after your trigger and add HTTP → Make a request. Configure the module:

  • URL: https://api.pdfpipe.dev/v1/convert
  • Method: POST
  • Headers:
    Authorization: Bearer pk_your_key_here
    Content-Type: application/json
  • Body type: Raw
  • Content type: JSON (application/json)
3

Set the request body

In the Request content field, enter:

Request body (JSON)
{
  "url": "{{1.fileUrl}}",
  "format": "json",
  "returnMethod": "inline"
}

Replace {{1.fileUrl}} with the mapped value from your trigger module. Adjust the format to text, markdown, csv, or any other supported format.

4

Parse the response

Check Parse response in the HTTP module settings. Make will automatically parse the JSON response, giving you access to individual fields:

200 - Response
{
  "requestId": "req_a1b2c3...",
  "status": "complete",
  "format": "json",
  "pagesProcessed": 4,
  "creditsUsed": 1,
  "contentType": "application/json",
  "content": "{\"pages\":[{\"pageNumber\":1,\"text\":\"...\"}],\"metadata\":{...},\"totalPages\":4,\"extractedAt\":\"...\"}"
}

With returnMethod: "inline", content is a string. For format: "text" or "markdown" use it directly. For format: "json" add a JSON → Parse JSON module on content to get pages[].text, metadata, and totalPages. For returnMethod: "file" (default), the presigned resultUrl is the download link.

5

Download and use the result

If you used the default file delivery, add another HTTP → Get a file module pointed at resultUrl to download the converted data. Then route it to your destination:

  • Google Sheets - add rows from extracted data
  • Airtable - create records
  • Slack / Email - send a notification with extracted text
  • Data Store - save for later processing
6

Handle async responses (large files)

For PDFs over 10 MB, the API returns 202 with a pollUrl. Use a Repeater module combined with a Sleep module and a Router with a filter:

  1. Set the Repeater to run up to 30 iterations
  2. Add a Sleep module with a 5-second delay
  3. Add an HTTP GET module to poll https://api.pdfpipe.dev/v1/status/:requestId
  4. Add a Router - one path continues when status = complete, the other loops

See the Async Polling guide for the full pattern.

Tips

  • Store your API key in a Make Connection or use the Keys vault for security.
  • Use the JSON → Parse JSON module if you need to process nested JSON output from PDFPipe.
  • Enable Error Handler on the HTTP module to gracefully handle failures.