Automate DocSend Deck Downloads with n8n: A No-Code Workflow
Step-by-step n8n workflow that watches for inbound DocSend or Papermark links, converts them to PDF with the DeckExtract API, and files them in Drive, Notion, or your CRM.
n8n has quietly become the automation tool of choice for investors and operators who want Zapier-style workflows without per-task pricing — self-hosted or cloud, with real control over the data. If your team receives pitch decks as DocSend or Papermark links, this post shows how to build an n8n workflow that converts every inbound link to a PDF and files it where your team works — automatically.
What You're Building
Trigger (Gmail / Webhook / Schedule)
→ Extract the DocSend/Papermark URL
→ HTTP Request → DeckExtract API (returns the PDF)
→ Upload (Google Drive / Notion / CRM)
→ Notify (Slack)
Total build time: about twenty minutes. No code beyond one regular expression.
Step 1: The Trigger
Three options, depending on where deck links enter your world:
- Gmail Trigger — watch a shared inbox (
deals@yourfund.com) for new messages. This is the most common setup for funds. - Webhook node — if decks arrive via a form on your site or another system, post the link to the webhook.
- Schedule Trigger — poll a source (a Notion database with a "Deck URL" column, a spreadsheet of links) on an interval.
Step 2: Extract the Link
Add a Code node (or an Edit Fields/Set node with an expression) that pulls the first DocSend or Papermark URL out of the message body:
const text = $json.text || $json.body || '';
const match = text.match(/https:\/\/(?:docsend\.com\/view|www\.papermark\.com\/view|[\w.-]+\/view)\/[\w-]+/);
return [{ json: { deckUrl: match ? match[0] : null } }];
Add an IF node after it: continue only when deckUrl is not empty.
Step 3: Convert with the DeckExtract API
Add an HTTP Request node configured like this:
- Method: POST
- URL:
https://deckextract.com/api - Body Content Type: JSON
- Body:
{
"url": "{{ $json.deckUrl }}",
"email": "deals@yourfund.com",
"format": "pdf"
}
- Response → Response Format: File (this is the important one — the API returns the PDF binary directly, and n8n needs to treat it as a file, not text)
That's the entire integration. The DeckExtract API handles email-gated and password-protected links (add a "password" field if a deck needs one) and works identically for DocSend and Papermark URLs. Want editable slides instead? Set "format": "pptx" — see DocSend to PowerPoint.
One operational note: the public API allows 5 requests per IP per 30 minutes. For inbound deal flow that's rarely a constraint; if you're batch-processing a backlog, add a Wait node to pace the loop, or get in touch via the API page about higher volume.
Step 4: File the PDF
The HTTP Request node outputs binary data, which feeds straight into:
- Google Drive node — upload to a "Decks" folder; use an expression to name the file from the sender or company (
{{ $json.from }} – {{ $now.format('yyyy-MM-dd') }}.pdf) - Notion node — attach to the company's page in your pipeline database
- CRM — Attio, Affinity, or HubSpot via their nodes or an HTTP Request; we covered the CRM-side patterns in Build a deck archive in your CRM and the Attio workflow
Step 5: Close the Loop
Add a Slack node that posts to your deal-flow channel: "📥 New deck archived: AcmeCo — link to Drive file." The deck arrived, got converted, got filed, and the team knows — with zero human steps.
Why Automate This at All?
DocSend links expire, get disabled, and get swapped mid-raise. The deck you're evaluating today may be unreachable next quarter — which is why VCs archive decks the day they arrive. Automation just removes the part where someone has to remember. And because DeckExtract completes the same access steps a browser would, the founder's DocSend analytics record the visit normally — nothing is bypassed; you're keeping a copy of what you were sent, with the usual confidentiality obligations.
Prefer Conversational over Pipelines?
If a fully automated pipeline is more than you need, the DeckExtract MCP server gives you the same conversion inside Claude or ChatGPT — paste a link, get the PDF, ask for a summary. Some teams run both: n8n for the inbox, MCP for everything ad hoc.
Related reading: the DocSend API complete guide, CRM archive patterns, and DocSend download troubleshooting.