FormaTeX

\usepackage{make}

Make.com LaTeX PDF Automation

Build a Make scenario that compiles LaTeX documents into professional PDFs — no server required. Use the HTTP module to call FormaTeX, then route the output to Google Drive, email, or any connected app.

\section{What is Make}

What is Make?

Make (formerly Integromat) is a visual automation platform that lets you connect apps and design complex workflows called scenarios. Unlike linear Zaps, Make scenarios support branching, looping, error handling, and data transformation — making it ideal for sophisticated PDF pipelines that need conditional logic or batch processing.

HTTP module for any API

Make's built-in HTTP module sends requests to any REST endpoint — including the FormaTeX compile API.

Visual scenario builder

Drag-and-drop nodes to design your entire PDF pipeline, with error paths and conditional routing.

1,500+ app connectors

Route compiled PDFs to Google Drive, Dropbox, OneDrive, email, Slack, or any other connected service.

\section{Scenario Setup}

Building the scenario

01

Add a trigger module

Open Make and create a new scenario. Add a trigger module — Google Sheets (Watch Rows), Airtable (Watch Records), or a Webhook trigger if you want to push data from your own app. This provides the data you will inject into your LaTeX template.

02

Add an HTTP → Make a Request module

Add an HTTP module and choose "Make a Request". Set the URL to https://api.formatex.io/v1/compile/sync, method to POST, and body type to Raw. Set the content type header to application/json. In the Request content field, paste your JSON payload.

03

Configure the Authorization header

In the HTTP module headers section, add Authorization with the value Bearer YOUR_FORMATEX_KEY. Use Make's built-in Connections or Environment Variables to store the key securely rather than pasting it directly into the field.

04

Route the PDF to Google Drive or email

The HTTP module response body is the raw PDF binary. Add a Google Drive → Upload a File module and map the response body as the file data. Set the file name dynamically using fields from your trigger — e.g. report-{{formatDate(1.date; 'YYYY-MM')}}.pdf.

\section{JSON Payload}

HTTP module request body

Paste this into the HTTP module Request content field. {{1.title}} and similar expressions reference fields from module 1 (your trigger). Make will substitute the live values before sending the request to FormaTeX.

make-http-body.json
{
  "source": "\\documentclass{article}\n\\usepackage[T1]{fontenc}\n\\begin{document}\n\\title{{{1.title}}}\n\\author{{{1.author}}}\n\\date{\\today}\n\\maketitle\n\n{{1.body_text}}\n\n\\end{document}",
  "engine": "pdflatex",
  "filename": "{{1.document_name}}.pdf"
}

\section{Templates}

Variable substitution in LaTeX templates

Make evaluates all {{n.field}} expressions inside the JSON body before sending the HTTP request. This means you can inject any dynamic value — names, dates, numbers, table rows — directly into your LaTeX source string.

Escape LaTeX special characters

Make does not escape LaTeX characters automatically. If a field value might contain &, %, $, or #, add a text transformer to replace them before injecting into the LaTeX source.

Multiline content

Use Make's replaceAll() function to convert newlines in text fields to \\\\ (LaTeX line break) before injecting long text blocks into the document body.

Conditional sections

Use Make's if() expression to include or omit entire LaTeX sections based on trigger data — e.g. include a signature block only if the field is non-empty.

Loop over arrays

Use an Iterator module to process array fields (e.g. invoice line items) and build a LaTeX tabular row string, then aggregate them with the Array Aggregator before injecting.

\end{make}

Automate PDF generation with Make

Get a FormaTeX API key, add an HTTP module to your scenario, and ship professional LaTeX PDFs from any Make trigger in minutes.

One quick thing

We track anonymous usage — page views, feature usage, compilation events — to understand what works and what doesn't. No ads, no personal data, no third-party sharing.

Cookie policy