Automatically turn online form submissions into PDF documents

You don’t need paid add-on services or technical expertise to attach dynamic and professional-looking confirmations to follow-up emails.

Do not index
Do not index
Hide CTA
Hide CTA
Hide cover
Hide cover
Portable document format, it’s right there in the name. PDFs are so ubiquitous and convenient that they’ve been recognized by the International Organization for Standardization since 2008. And if you want to generate receipts and reports that are compatible with virtually any device that has a screen, PDFs are the most professional option.
When someone submits a form, they expect some sort of confirmation. Documented proof that their responses were recorded correctly. Email receipts work well enough most of the time, but things get messy as soon as they need to be printed or uploaded as an attachment. So, whether you have a form that collects eCommerce orders or legal consultation requests, it’s worth setting up an automation that creates and sends PDF receipts.
Some form apps have this feature built-in – but sometimes they’re not enough. Most of the time, you can’t customize the attachment's content or style. It’s just a carbon copy of the responses and nothing else. You could overcome that with services like Documint.me and Docupilot.app, but their cheapest plans are $30 per month. Why not build your own automation to do that, plus a bit more?
There are a few ways to roll your own solution here, each with its own pros and cons. We’ll use Fillout forms as an example, but all of the automations below should work with any form app that can sync submissions to Google Sheets.

Zapier + Google Docs: Create custom-designed PDFs from form entries

When you need to grab data from one app and add it to another app, Zapier is typically a go-to option. Here, it gives you an easy way to grab form responses from a spreadsheet and add them to a templated document that includes your company’s branding and messaging.
notion image
The best place to start is by creating a Google Doc with placeholders for form responses inside double curly brackets. So you’d put static content like your company name, address, and logo at the top and something like “Thanks for ordering from our shop, {{clientname}}!” on the next line. Sprinkle other response placeholders throughout the document so it feels personal, and everyone has access to the paper trail. Then, connect your form responses to the template.
notion image
Log into Zapier, create a new Zap, and choose New Spreadsheet Row in Google Sheets as your trigger (or, if your form app has a Zapier integration, like Fillout does, use that). Click the + icon to set Google Docs as the Action and Create Document from Template as the event.
After connecting your Google account, you should be able to select the document you created earlier from the Template Document dropdown. Go ahead and add a name for the PDF output, including a placeholder like {{name}} to add some personalization.
Further down the Action setup window, you should see all of the variables you put in double curly brackets (note that if you have any spaces inside the brackets, Zapier won’t recognize the placeholder). Match your response data to the placeholders, test the Zap, and look for the test output with merged fields in Google Drive. If your form accepts image uploads and you want to insert those into the doc, you’ll need to set up a similar Zap with Google Slides. Check out our eSign compliance guide for more details on that.
At this point, you have two options for the Action in the third and last step: Send an email from a third-party platform like Gmail or Outlook, or with Email by Zapier. They both work equally well. Just make sure to put the email response from your form in Zapier’s To field and the Export Links Application PDF option (from the Google Doc variable list)
somewhere in the body of your email.
notion image
Now, every time someone fills out the form you connected to that Zap, Zapier will replace the double curly brackets with their responses, and fire off an email with a PDF version of the document.
Full disclosure, three-step Zaps require a paid account ($20 per month). And the Zap might stop working if you update one of your account passwords, delete a form question, or change the name of your Google Doc template. That’s why we opt for native integrations whenever possible. Depending on your use case, you might be able to automate PDF receipts without using Zapier or Google Docs at all. Here’s how.

Google Sheets Script: Automatically send a basic PDF receipt of form submissions

Maybe you’re a property manager with a form that collects work order requests. You don’t need any static text or design elements in the PDF attachment. A vanilla copy of the order details is enough. Fair warning, this solution is going to look complicated, but anyone can tackle it. Promise.
notion image
You’ll want each column in the first row of your spreadsheet to include a question or field from your form. And then every time someone submits a form, a new row should be added with responses to each question in the corresponding column. Fillout does this automatically if you connect your form to Google Sheets, for example.
This setup is important because with a spreadsheet in this format, Google lets you create small-scale apps that perform certain actions when certain conditions are met, like any time a new row is added.
We’re going to set up your spreadsheet to add each cell from a new row into a PDF and then send that PDF as an attachment to an email address from the new row. The code is already written. You just need to copy and paste it.
notion image
Open this Google Doc in a new tab, highlight all of the text, and copy it. Then, back in your synced spreadsheet containing form responses, open the Extensions menu (next to Help), and click Apps Script. You should see a sidebar on the left and a few numbered lines in the middle of the screen. Highlight all of the numbered lines and paste the code you copied from the Google Doc.
There are two teeny tiny changes you’ll have to make in the code, plus an optional update. First, find `recipientName =` near the bottom of the code. This is grabbing the name of the person who will receive the email, from your spreadsheet. Where the code says `rowData[2]`, you need to update the number to point to your spreadsheet’s Name column. Column A is 0, B is 1, C is 2, and so on. Update that number and then do the same thing for the `recipientEmail =` variable below that, where the rowData number should point to a column with an email address.
notion image
And, if you’d like, you can update the text in quotations that comes after subject: and body: to customize the email that will go out after any new form submission. When everything is ready, hit the save icon and then click the Run button to its right.
In the window that pops up, select Review permissions, and choose the same account that you used to create this spreadsheet. You’ll get a warning that “the developer” (that’s you!) hasn’t verified the app with Google and that you should be careful. As long as your spreadsheet doesn’t contain extremely sensitive information – which shouldn’t be stored in a Google Sheets spreadsheet, anyways – click Advanced, followed by Go to [your script’s name], and then Allow.
notion image
Before entering a test submission, keep in mind that the script you just added checks for new rows every five minutes. So wait at least that long before troubleshooting problems.
And you’re all set! As long as your script is pointing to the email address column, anyone who submits a form and includes their address will get a PDF receipt.

Google Sheets + Looker Studio: Schedule weekly PDF reports of form submission data

What about when the PDF should go to you and your team, with multiple responses summarized in a single document? You need a way to organize and consolidate the data, plus a way to limit how often the report is created – you don’t want to get an updated report ten times a day. This arrangement is perfect for HR teams processing leave requests, marketing teams monitoring eBook downloads, and product teams tracking projects and issues. Whatever the specific use case is, all it requires is a spreadsheet or database that’s collecting form responses and a free Google Looker Studio account.
notion image
From the Looker Studio dashboard, create a new Report, and pick your data source. We’re using Google Sheets for this example. It’s easy to get overwhelmed by all of the visualization options and configurations, so start small. Pick three or four data points everyone on your team would benefit from, and turn them into live-updating charts.
When the report is ready, click the dropdown arrow attached to the Share button and select Schedule delivery. Add your team members, customize the message, and set report frequency. The email that goes out includes both the first page of the report in the body of the message and a PDF attachment of the whole report.
notion image
Who knows, you may even have a use case where you want to create a report to share with people outside of your team. If you’re a B2B company that receives several requests per week from a single client, for example, you could give their team a form that spits out a weekly summary of the submissions. Everyone loves to see their data looking pretty in a PDF.
Best of all, you can mix and match these solutions to create a system that works for you. Maybe you have multiple forms, one that works just fine with a vanilla receipt and another that needs a more customized output, with both feeding data into weekly PDF reports of submission data.
Or, you might want to take advantage of other, more powerful form integrations to build a workflow that’s entirely your own. It’s never been this easy to DIY software automations, and this is a perfect example of that.
Ryan Farley

Written by

Ryan Farley

Ryan Farley is a writer and co-founder of Pith and Pip. He lives in Bangkok, Thailand where he previously managed the editorial team of a web marketing agency.