Export Google Docs to PDF with Make.com, save to Google Drive, and notify Slack with idempotent dedupe logging to prevent duplicates.
Introduction
In most teams the manual version goes like this: someone exports a Google Doc to PDF, renames it, uploads it into the correct Google Drive folder, then posts the link in Slack. It works until you have reruns, permission hiccups, or two people exporting the same template during a busy day. Then Slack starts pointing at the wrong PDF, and you spend time cleaning duplicates instead of shipping work.
This guide shows you a Cross-Platform Automation (XPA) in Make.com that exports a Google Doc to PDF, uploads the PDF to Google Drive, then posts a Slack message with the final Drive link. You will also add a small audit log and an export_key check so repeated runs do not create duplicate PDFs.
By the end, you will know exactly how to wire the trigger, export, upload, Slack notify, and dedupe steps in Make.com.
What You'll Need
- Google Docs: a template Doc (or any Doc you want to convert to PDF)
- Google Drive: a destination folder where PDFs should be uploaded
- Slack: a channel where the PDF link should be posted, and a Make.com connection authorized to post
- Make.com: a scenario with connected Google Drive and Slack accounts
- Google Sheets (recommended): an audit log sheet used for idempotency and troubleshooting
Notes:
- If your workflow expects different templates, start with one Doc or one Doc template. Add routing later once the base export flow is stable.
- If your PDFs contain sensitive data, confirm your Drive sharing and folder permissions are correct before you turn this on.
How It Works (The Logic)
In plain English, the Make.com XPA does this:
(Trigger) provide doc_id, doc_title, and a stable export_key → export the Google Doc to a PDF → upload the PDF to Google Drive with a consistent filename → notify Slack with the Drive file link → write an audit row keyed by export_key.
The key reliability mechanism is the dedupe guard. If Make.com sees the same export_key again, it stops before exporting and uploading again.
Step-by-Step Setup
1) Create the audit sheet for dedupe
Create a Google Sheet named something like Doc PDF Exports Log.
Add these columns:
export_keydoc_iddoc_titledrive_file_idpdf_urlslack_tsexported_atstatus(success or error)
This sheet is your “only act once” ledger.
2) Decide your export_key strategy
For a simple build, choose one stable key format:
- One export per Doc:
export_key = doc_id - Multiple exports allowed:
export_key = doc_id + ':' + YYYYMMDDHH
Rule: whatever you choose must stay identical for reruns that should not create duplicates.
3) Set up the Make.com scenario skeleton
Create a new scenario in Make.com.
For simplicity, use one of these starter triggers:
- Webhook trigger if another workflow tells Make.com which Doc to export
- Scheduled trigger plus a lookup if you export from a list of docs on a schedule
- Drive-based trigger if your process lands Docs into a specific folder that signals readiness
Your scenario should output (or set variables for):
doc_iddoc_titleexport_key- (optional)
versionor a timestamp bucket for naming
4) Add a dedupe check before export
Add a Google Sheets step to search Doc PDF Exports Log for a matching export_key.
Then add a filter/router:
- If a row exists with the same
export_keyandstatus = success, stop. - If no row exists, continue to export.
Gotcha: do not export first and dedupe later. If you dedupe after upload, reruns already created duplicates.
5) Export the Google Doc to PDF
Add the Google Docs / Drive export step that converts the Doc to PDF.
In most Make.com setups, the practical approach is to use the Google Drive export/download as PDF action for the Doc file. The important part is that you get a PDF binary output Make.com can upload to Drive.
Test with one real doc first and open the output PDF. Check layout and fonts.
6) Upload the PDF to Google Drive
Add a Google Drive module to upload the PDF.
Set:
- Destination folder: your approved export folder
- File name: use a deterministic pattern, for example:
{doc_title}_v{version}_{YYYYMMDD_HHMM}.pdf
If you only export once per Doc, you can name it {doc_title}.pdf, but versioning is helpful when the same template updates.
7) Capture the Drive link values
From the upload response, map:
drive_file_idpdf_url(the URL Make.com returns, or a link you build from the file id)
You need the link for Slack.
8) Post the Slack message with the Drive link
Add a Slack module to post a message into your target channel.
Message template:
PDF exported from Google DocsDoc: {doc_title}Drive: {pdf_url}Export key: {export_key}(helps debugging)
Keep the message short. You want the link to be actionable, not an essay.
9) Write the audit row after Slack posts
Only after export + upload + Slack post all succeed, add a row to the audit sheet:
export_keydoc_iddoc_titledrive_file_idpdf_urlslack_tsexported_atstatus = success
Ordering matters. If you mark success before Slack posts, you can end up with “success” in the log but no notification in Slack.
10) Add an error route
In Make.com scenario error handling, add a route that:
- posts a Slack alert to a dedicated channel like
#automation-alerts - includes at least
export_key,doc_id, and the error message
Optional: write status = error into the audit sheet so you can see failed attempts.
Real-World Business Scenario
A finance team used this exact flow for monthly reporting packs.
They had Google Docs templates that filled in client metrics, then needed a PDF sent to stakeholders and archived into Drive. Before automation, exporting and uploading was inconsistent. Stakeholders occasionally received outdated PDFs because someone reran the export later and copied the wrong link into Slack.
After deploying the Make.com XPA with an export_key dedupe guard and an audit log, reruns became safe. Slack always posted the correct Drive link, and the Drive archive stayed clean.
If you also need Slack notifications tied to workflow status changes, this style of “post only when the workflow says it matters” pairs well with how teams notify Slack from ClickUp status changes using Make.com.
Common Variations
1) Route by template or document type
If you handle multiple Doc templates, add a router based on template_id or the Doc name prefix, then select:
- different Drive folders
- different Slack channels
2) Add an approval step before notifying Slack
Export and upload to Drive first, then only post to Slack after an approval signal (for example, a response in Slack or an approval in another tool). This keeps Slack quiet until the PDF is approved.
3) Versioned filenames and overwrite rules
If stakeholders want stable links, you can choose one behavior:
- overwrite a single Drive file each time (stable link, but harder audit)
- create a new file per export (safer audit, but changing link)
Most ops teams prefer new files per version, then link the exact file for traceability.
Keeping it reliable in production
You built a Make.com Cross-Platform Automation (XPA) that:
- exports Google Docs to PDF
- uploads the PDF into Google Drive with deterministic filenames
- posts a Slack message with the final Drive link
- prevents duplicates using a dedupe key plus an audit log
If you want this tailored to your exact document inputs, Drive folder structure, and Slack approval flow, Olmec Dynamics builds these automations for real teams. Start with the XPA overview at Cross-Platform Automation (XPA), then adapt the export/upload/notify steps to your process.