Turn New Sheet Rows into PDFs Without Burning Zapier Tasks
By Josh ·
A row lands in your sheet and a branded PDF should land in someone's inbox. Zapier will do that, and the bill arrives on two lines: the tasks you burn per row, and the subscription for whatever document tool the tasks are calling.
How many Zapier tasks does a PDF merge use? Two per row. To generate a PDF from a new sheet row and email it you need a Google Sheets trigger, one document action, and one email action, and triggers are free, so only the two actions count. Two hundred invoices a month is 400 tasks. The catch is that Zapier's free plan allows one trigger and one action, so a three-step Zap cannot run there at all, and the floor for this workflow is the Professional plan.
That is the number. What follows is everything it leaves out: what Zapier counts as a task, the build itself, four specific ways it breaks once real people start editing the sheet, and the second subscription nobody quotes at you.
What counts as a task, precisely
Zapier publishes this and most people never read it, which is why per-row cost estimates on forums swing by a factor of three.
Counted against your quota:
- Every action step that succeeds.
- Every successful step inside an error handler path.
- Any previously successful step that runs again when you replay a Zap run.
- A search action set to "proceed if nothing found", at one task each.
Not counted:
- Trigger steps. All of them, on every plan.
- Filter steps.
- Action steps that error or halt, and steps that never run because a filter stopped them.
- The utility apps: Formatter, Delay, Looping, Digest, Storage, Zapier Manager.
Paths sit slightly apart from that second list. When a path's rules match, that counts as one task, and then each successful step inside the path counts too. When no path matches, nothing is charged. So a two-branch Zap costs more than the flat step count suggests, while a Zap that filters out 80% of its rows costs almost nothing on the rows it drops.
The useful consequence for document work: a Delay step is free. Every fix you will read about for the attachment problem below costs you nothing in tasks, which removes the main reason people avoid it.
The Zap, start to finish
Four steps, and it works. This is the build I would give someone who asked.
- Trigger: Google Sheets, New Spreadsheet Row. Pick the spreadsheet and the worksheet. Row 1 has to be a single header row with no blanks and no merged cells.
- Action: your document tool, Create Document. CraftMyPDF, PDFMonkey and Documint all ship a Zapier app. Pick the template, then map each template field to a column from step 1. One task.
- Delay: Delay For, one minute. Free, and belt-and-braces: step 4 is the real fix for the race, and this covers the cases where it isn't enough. The next section is why.
- Action: Gmail or Email by Zapier, Send Email. Recipient from the row's email column. In the attachment field, pick the file object the document step returned. It also returns a URL, and that URL will bite you; the next section is mostly about why. One task.
Turn it on. The trigger will pick up rows added from that point forward at the bottom of the sheet.
Two hundred rows a month through that Zap is 400 tasks and two subscriptions. If you add a fifth step, say writing the document link back into the sheet, it becomes 600 tasks and the same two subscriptions.
Four ways it breaks
None of these are hypothetical, and the blame is shared. They fall out of gluing an asynchronous document API to a polling spreadsheet trigger, and both halves contribute.
The empty attachment
The document step returns while the PDF is still being generated. Your email goes out with nothing attached, or with something strange attached. One Zapier Community thread has a Zap that mostly works and occasionally delivers a file called ServiceLogin.htm instead of the invoice, because the export URL resolved to a Google login page. The Solution Partner's answer is a longer Delay After Queue. The original poster reports that it reduced the failures without ending them, and that shrinking the batch from 200 records to 5 didn't help either.
A second thread reaches the better answer: map the file object, not the URL string. The accepted reply walks through using the export field that hands Gmail an actual file, and adds that you can then remove the Delay. A URL in an attachment slot is a bet that the file exists at the moment the email service fetches it, and on a good day you win that bet every time.
The strongest evidence that this is structural rather than a mistake people make: PDFMonkey ships a Document Generated trigger and a Retrieve Document action specifically so the emailing half can live in a second Zap that fires when the document reaches success status. A vendor building a second trigger to work around the first Zap's timing is telling you something. The split costs no extra tasks either, because the second Zap's trigger is free and its email action is the same one task you were paying anyway.
The trigger that quietly stops firing
Zapier's Google Sheets trigger tracks what it has already seen by row number. Zapier's own troubleshooting page lists what breaks that: deleting rows or columns, adding a row anywhere other than the bottom, sorting the worksheet, renaming or rearranging columns, renaming the spreadsheet, and adding frozen or hidden rows. Their advice is to turn the Zap off before you restructure and back on afterwards, which is fine advice and impossible to enforce on a sheet three other people edit.
Two more, both common enough to be folklore. A blank row reads as the end of the sheet, so anything below it is invisible. And a formula that returns an empty string is not blank to Zapier, so a column of ARRAYFORMULA or IFERROR(..., "") pre-filled down to row 1000 makes every row already exist and no row ever new. That second one costs you zero tasks and zero documents, which is the failure mode nobody catches for a week, because there is no error to catch.
Duplicates, or the storm you get instead
New Spreadsheet Row does not fire when someone fixes a typo in a row. That is usually what you want. The moment you need corrections to regenerate the document, you switch to the New or Updated Spreadsheet Row trigger, and you inherit the blank-field storm: hundreds of runs against empty rows, each one a real PDF, a real email to nobody, and two real tasks. A Filter step at the top costs nothing and is the standard defense. Add it at the moment you switch triggers, because the storm arrives on day one.
Replays
An errored step is free. Zapier is explicit about that, and it is more generous than people assume. The replay is not free. Their replay documentation puts it plainly: any successful steps count towards your usage even if they were already counted in a previous run.
Work that through on a three-action Zap that dies on the third action. You burn two tasks, the replay burns three, and one delivered PDF cost you five. Autoreplay is on by default on paid plans, so this happens without anyone deciding it should. And the replay needs quota to run, so the month you run out of tasks is also the month you lose automatic error recovery, at the point in the month when things are busiest.
I built the thing at the bottom of this page partly because of that arithmetic: a row that failed to render costs you one retry there, and no second helping of tasks.
What the stack costs
Prices came off each vendor's own pricing page in August 2026, and both Zapier and Documint show a discounted annual rate first; Zapier's pricing page has the current tiers.
On Zapier's Free plan you get 100 tasks and a two-step limit, which rules this workflow out before price enters the conversation. Professional starts at 750 tasks for $19.99 a month billed annually, or $29.99 month to month. Every Zapier tier follows that pattern: month-to-month is 1.5x the annual rate. Overages run 1.25x your task rate on annual billing and 2.5x on monthly.
A sheet to PDF to email pipeline carries a second bill, and this is it. At the cheapest paid tier each: CraftMyPDF Lite is $29 for 1,200 documents. PDFMonkey Starter is 5 euros for 300, or 4.50 on annual billing, and it is the only tool here priced in euros. Documint offers no free tier at all, and its Silver plan runs $39 monthly on annual billing with an allowance of 2,400 documents measured per year. Divide by twelve and that is 200 a month, exactly the volume in this example. Read that plan's units twice before budgeting against it.
So, at 200 documents a month:
| Stack | Cost at 200 documents/month | Time from row to PDF | Repeat protection |
|---|---|---|---|
| Zapier Professional + CraftMyPDF Lite | $48.99 with Zapier billed annually ($19.99 + $29), $58.99 month to month ($29.99 + $29) | 2-minute poll plus generation time | Row-number dedupe; breaks on a sort or an inserted row |
| Zapier Professional + PDFMonkey Starter | $19.99 plus EUR 4.50, both annual | 2-minute poll plus generation time | Row-number dedupe; a Document Generated trigger removes the attachment race |
| Zapier Professional + Documint Silver | $58.99 with both billed annually ($19.99 + $39) | 2-minute poll plus generation time | Row-number dedupe; 200/month is exactly Documint's 2,400/year cap |
| Make + CraftMyPDF Lite | $29; 200 rows is 600 credits, inside Make's free 1,000 | Your scenario's interval, 15 minutes minimum on Free | The Sheets module keeps its own row cursor |
| Apps Script and a Docs template | $0 | Whatever time trigger you write | None, until you build a status column yourself |
| Autocrat | $0 | The Google time trigger you set on it | A status column it writes back into the sheet |
| SheetRender Starter | $19 | Hourly on Starter, or immediate when something calls the webhook | Key column, recorded once a document succeeds |
Two hundred documents a month is not where this gets expensive. A thousand is. That is 2,000 tasks minimum, which is Zapier's $49 annual tier or $73.50 month to month, plus CraftMyPDF's $29, so $78 or $102.50 depending on which button you clicked at signup. Add a fifth step to the Zap and 3,000 tasks puts you on the 5,000-task tier at $89 or $133.50 for the Zapier half alone. That is where the numbers people quote on Reddit come from, and they are real numbers, just not 200-document numbers.
The bottom row of that table is ours, and it doesn't move between 200 documents and 1,000; what it costs you instead is listed in full further down.
Make, if the glue is the only problem
Building a Make.com PDF from Google Sheets flow costs less per unit than the Zapier version, and the gap is not small. Its Core plan is $12 a month for 10,000 credits with month-to-month billing, against Zapier's 750 tasks for $19.99 annually. The free tier is 1,000 credits, two active scenarios, and a 15-minute floor on how often a scenario may run.
Counting works differently, and the difference cuts against Make. Make renamed operations to credits in August 2025 and converted balances one for one, but the unit is unchanged: one module run. Zapier's trigger is free and Make's is not, so a three-module scenario is three credits a row where the equivalent Zap is two tasks. Modules also run once per bundle, so a module handed five bundles runs five times. Trigger modules are the exception and run once no matter how many bundles come back.
Three credits against two tasks, and 10,000 credits for $12 against 750 tasks for $19.99. That is about 3,300 rows a month on Make's $12 plan against 375 on Zapier's $19.99 one. If your objection to the Zapier stack is purely the price of the glue, this is the move, and you should make it before you consider anything structural.
When the tasks are worth paying
The per-row meter is a fair price for what a routing platform does. If the new row also has to post a message into a Slack channel, move a deal stage in your CRM, write the document link back into the sheet, and open a task for whoever chases payment, then the tasks are buying you four destinations and a retry policy across all of them. No document generator does that. None of them will, because it isn't the product.
Keep the stack when any of these are true. Your workflow branches. The data comes from somewhere that isn't a spreadsheet, like a form tool or a database. Other people at your company already maintain Zaps and this one should live where they can see it. Or the document step is one node in a longer pipeline.
The narrower case is the one worth questioning: a row goes in, a PDF comes out, an inbox receives it, and nothing else happens ever. That workflow pays a per-row meter for a router with exactly one route, and it inherits the row numbering as its idea of what has been done. Our survey of eight ways to convert a spreadsheet to PDF automatically covers the tools that handle that shape without glue, free ones included, and Autocrat is the one to read first if the batch is small and the sheet is Google's.
SheetRender, one subscription for the whole path
SheetRender is our product.
The setup skips the part every option above starts with. Nothing gets tagged and no template gets built. Feed it a copy of the invoice or report you send today, a PDF export or a phone photo of the paper version, and a model reconstructs that layout and wires each field to a spreadsheet column. The template comes back already built, and your job is checking it: the wizard puts your columns next to the fields they landed in, and dense tables and tight spacing are where your review time goes. Point it at a Google Sheet or drop in a CSV or XLSX. One row produces one PDF, which goes to whatever address that row carries, or you pull the batch down as a zip or as a single merged file.
Two mechanisms replace the Zap, and they are not the same thing.
A schedule runs hourly, daily, weekly, or monthly, at an hour you pick, and every 15 minutes on Pro. Each run pulls a fresh snapshot of the connected Google Sheet. Turn on "skip rows that were already processed" and name a key column, and after each run the key values of the documents that succeeded get recorded. The next run excludes them. Only successes are recorded, so a row that failed to render comes back on the next run instead of vanishing, which is the behavior you want at 3am and the opposite of what a row-number cursor does.
A webhook URL sits on every schedule. POST to it and that schedule runs immediately, rate limited to one run a minute. This is the near-instant path, and its limit is specific: the request body is ignored. It fires the schedule you already configured, so it doesn't carry a row with it.
More at /use-cases/invoices for the one-invoice-per-row shape, and the automated PDF reports guide for the recurring report pack version of the same job.
Where it breaks:
- Hourly is the floor on Starter. Fifteen-minute runs need Pro at $49. Zapier's Professional plan polls Google Sheets every two minutes and Team polls every minute, and we lose that comparison at every tier.
- The webhook needs something to call it. If rows arrive because a person typed them into a sheet, nothing calls it unless you write an Apps Script onChange trigger yourself.
- Scheduling is a paid feature. The free plan has zero schedules, so the automated version of this starts at $19 a month.
- Skip-already-processed applies to ungrouped projects. If several rows group into one document per client, every document in the run gets rebuilt each time.
- An uploaded CSV or XLSX never refreshes itself. New rows only mean something when the dataset is a connected Google Sheet.
- Rendering and delivery is the entire product. No Slack step, no CRM field gets touched, and we never write a result back into the source sheet, which is something Autocrat gives away for free. If the row has to reach anywhere besides a PDF, you still want Zapier, and we do not replace it.
- Scheduled runs deliver by email only. Google Drive delivery is there for batches you start by hand.
- There is no public generation API, which matters more here than usual. If you came looking to replace a Zap because your own service already knows when a row lands, an endpoint is what you want; our webhook only fires a preset schedule. CraftMyPDF is that shape, free for 50 documents.
- The spreadsheet leaves Google and lands on our infrastructure. Template generation also ships your header names and a bounded sample of rows to Anthropic, who process it on our behalf and do not train on it.
- Free accounts get 50 documents in a month, and they come out watermarked: a small "Made with SheetRender" footer, present from render number one.
Pricing for the scheduled version: the $19 tier carries a 1,500-document ceiling and exactly one active schedule. At $49 that ceiling becomes 10,000, the schedule count stops being capped, and the 15-minute frequency unlocks.
Questions people ask before building this
How many Zapier tasks does a PDF merge use? Two per row for a Google Sheets trigger plus a document action plus an email action, since triggers never count. Three if you write the link back to the sheet. If you split it into a generate Zap and a separate send-when-ready Zap, still two, because the second Zap's trigger is free as well.
Can I run a sheet to PDF Zap on Zapier's free plan? No. Free is capped at 100 tasks a month and at one trigger plus one action, and this workflow needs at least two actions. Professional is the entry point, from $19.99 a month billed annually for 750 tasks.
Does Zapier charge me when a step fails? Not for the step that errored, and not for the steps after it that never ran. It does charge for every successful step when the run is replayed, including ones you already paid for. Autoreplay is on by default on paid plans, so a step that fails after the document succeeded turns a two-task row into three, and the three-action version costs five tasks for one PDF.
Is Make cheaper than Zapier for generating PDFs from Google Sheets? Per unit, clearly. Core is $12 a month for 10,000 credits against Zapier's 750 tasks for $19.99. Make charges for the trigger module where Zapier doesn't, so budget about three credits a row rather than two tasks, and it is still far more headroom for less money.
Which way to go
- The row needs to reach more than one system: keep Zapier, and buy the tier that fits the tasks.
- Only the glue price bothers you: move to Make Core and keep the same document tool.
- Your own code generates the documents: skip the platform entirely and call CraftMyPDF or a similar API.
- A small batch from a Google Sheet and no budget: Autocrat on a Google time trigger.
- One destination, a document that already exists, and no human free to trigger it: SheetRender. One subscription covers the whole path, and the limits listed above are the real ones.
Zapier is not expensive at 200 rows, and I'd rather nobody left this page believing that. The problem is structural. A metered router is built for work that branches, and this job has one exit. You pay per row for branching you never do. The deduplication model you take on is really just row numbers in a file three people can sort. You find out about both on the morning the invoices don't go out. If the row really does need to reach four systems, that is money well spent and you should stop reading. If it needs to reach one, you are renting an option you will never exercise.