Turn each Typeform response into a PDF with n8n
Every Typeform submission becomes a formatted Google Doc and a PDF in Google Drive, built from your own template, with the link emailed to the respondent or your team.
- Source
- Typeform
- Output
- Google DocsPDF (single runs only)
- Delivered to
- Google Drive
n8n workflow
The importable workflow file for this recipe is being tested and will be added here. The steps below show exactly what it does, so you can build it now in a few minutes with the SourceToDocs n8n node.
How the workflow runs
- 01
Typeform Trigger: your form
Starts the workflow on each submission of the form you pick in Form Name or ID. Simplify Answers and Only Answers stay on, the defaults, so the item is a flat list of question titles and answers.
- 02
SourceToDocs: Document, Generate
Rows Come From is set to the Map Columns mode. Name, Email, Company and Request come from the answers; Submitted is the day the workflow runs. One submission is one run, so switching on Also generate PDF delivers a PDF beside the Google Doc.
- 03
Gmail: Message, Send
The node's output carries file_url, file_name and a deliveries list. The email goes to the address typed into the form, or to a fixed team address, with the PDF link taken from the Google Drive delivery.
| Typeform field | Template placeholder |
|---|---|
| Full name | {{ name }} |
{{ email }} | |
| Company | {{ company }} |
| Request | {{ request }} |
| (run date) | {{ submitted }} |
Or have Claude set it up
The Form responses to PDF skill
works through the SourceToDocs connector at https://app.sourcetodocs.com/api/mcp. Install the skill, connect, then paste:
Use the form-to-pdf skill. I exported my Typeform responses as a CSV, attached here: one row per response, with the columns Name, Email, Company, Request and Submitted. Create a Google Docs document in SourceToDocs from it, with a PDF for each response. I will pick the Google Docs template and the Drive folder "Form responses" when you send me the links. Show me the placeholder mapping and tell me how many runs it takes before you run anything, then generate the first response only.
To turn a Typeform response into a PDF with n8n, start the workflow with the Typeform Trigger, pass the answers to the SourceToDocs node to fill your Google Docs template, and email the link the node returns with Gmail. Each submission is its own run, which is what lets SourceToDocs save a PDF next to the Google Doc in your Drive folder. The build is three nodes, described below.
What you need
- A Typeform form with questions titled
Full name,Email,CompanyandRequest. Other titles work; you change the expressions to match. - A template in Google Docs with the placeholders
{{ name }},{{ email }},{{ company }},{{ request }}and{{ submitted }}, laid out the way the finished document should look: your logo, headings, a table, fixed text around the answers. - A SourceToDocs workspace and an API token for it. A workspace owner or admin creates the token on the API Tokens page.
- On the Accounts page, a Google Docs connection for the template and a Google Drive connection for delivery. Every tile is a separate connection: Google Drive does not cover Google Docs.
- n8n, self-hosted or Cloud, with the SourceToDocs node installed. In n8n, open Settings, then Community nodes, and install
@twovmodules/n8n-nodes-sourcetodocs. On n8n Cloud, add it from the nodes panel, where it is listed as a verified node. - A Typeform credential and a Gmail credential in n8n.
Set up the document in SourceToDocs
SourceToDocs has no Typeform connection. The template and its settings live in SourceToDocs, and n8n sends the answers.
- Create a Google Docs document.
- Upload a small CSV with the header row
Name,Email,Company,Request,Submittedand one sample line as the data source; it becomes a data set. The sample is enough, because the workflow sends the real rows in place of reading the source. - Each column gets an alias, a snake-case identifier derived from its name. The template uses the alias: column
Submittedis{{ submitted }}. - On the Document step, pick your Google Doc. Its Variables panel lists the exact placeholders for your data set; click one to copy it.
- Add a Google Drive distribution and choose the folder.
- Switch on Also generate PDF in the Output card.
- Leave split off. A split document produces no PDFs.
Build it in n8n
Add the nodes in this order and connect them in a line. A submission arrives as one item, so no loop is needed.
| Node | Operation | Key settings |
|---|---|---|
| Typeform Trigger | Starts on a form submission | Form Name or ID: your form. Simplify Answers and Only Answers stay on, which is the default. |
| SourceToDocs | Resource: Document. Operation: Generate | Document: your form response document. Rows Come From: This Workflow — Map Columns. Data Set: the one with the five columns. Columns: see below. Wait for Completion stays on, which is the default. |
| Gmail | Resource: Message. Operation: Send | To, Subject and Message: see below. |
The five column values in the SourceToDocs node:
| Column | Value |
|---|---|
| Name | {{ $json['Full name'] }} |
{{ $json['Email'] }} | |
| Company | {{ $json['Company'] }} |
| Request | {{ $json['Request'] }} |
| Submitted | {{ $now.toFormat('d LLLL yyyy') }} |
The Gmail fields:
| Field | Value |
|---|---|
| To | {{ $('Typeform Trigger').first().json['Email'] }} |
| Subject | Your request: a copy for your records |
| Message | Here is a copy of what you sent us: {{ $json.deliveries[0].result.pdf_url }} |
With Simplify Answers on, the trigger’s item uses your question titles as field names. Run the trigger once with a test submission, look at its output, and change the bracketed names to the titles you see. The Column names are the data set’s column names, case included, not the template placeholders, which use the aliases.
To send the document to your team instead of the respondent, type a fixed address into To.
Which link to send
The SourceToDocs node returns file_url and file_name at the top level of its output. With Also generate PDF on and a Google Drive destination, the deliveries list holds one entry per destination, and a Drive entry’s result carries drive_url for the Google Doc and pdf_url for the PDF. The Message above uses the first entry, which is correct when the document has one destination.
The file sits in your Drive folder, so a respondent outside your organisation can open the link only if that folder’s sharing allows it. Share the folder so that anyone with the link can view it, or attach the PDF instead (see the FAQ). A team address that already has access to the folder needs neither.
The same build for Jotform and Tally
Only the first node changes.
- Jotform: n8n has a Jotform Trigger node. Pick the form in Form Name or ID and leave Resolve Data and Only Answers on, so the item carries the question names.
- Tally: n8n has no built-in Tally trigger. Add a webhook to the form in Tally’s integrations and point it at an n8n Webhook node, or install the community Tally Trigger node if your n8n allows community nodes.
Each tool shapes its answers differently, so run the trigger once, read the output and adjust the five expressions in the SourceToDocs node. The rest of the workflow stays as it is.
The Claude route
With the SourceToDocs connector added to Claude and the form-to-pdf skill installed, Claude can do the setup above for you: create the document, attach your data, read the template’s placeholders, show you the mapping, set the Drive delivery with a PDF and start the runs, one run per response, because a PDF comes with a single run only. You pick the template and the Drive folder through links Claude sends you, and you edit the template itself in Google Docs. The MCP page explains how to connect it.
The limit: Claude cannot read Typeform through SourceToDocs, and a new submission does not start it. Export the responses from Typeform as a CSV, or keep them in a Google Sheet or an Airtable base, and hand that to Claude. That suits one response or a handful you already have. For a long backlog Claude can set the document to split instead, which gives one Google Doc per response in a single run and no PDFs. To react to each new submission as it arrives, use the n8n workflow on this page.
Where this fits
A form answer, a template and a destination: the same pattern sits behind most generated documents. The document automation guide covers it beyond form responses, and the automations library has the other recipes.
Related
- document automation: the full guide this recipe belongs to.
- The SourceToDocs n8n node: every action and setting.
- The SourceToDocs MCP server: what Claude can do through the connector.