[Go to site: main page, start]

Skip to content

Make.com Integration

Make (formerly Integromat) is a visual workflow builder. You can call TemplateFox via Make’s HTTP module today, and a native TemplateFox app is rolling out so the modules below appear directly in the module picker. Make’s strengths are iteration (one trigger → many PDFs), routers for conditional logic, and powerful data transformation.

Go to your Dashboard and copy your API key.

On make.com, create a new scenario and pick your trigger (Google Sheets, Typeform, Shopify, HubSpot, Airtable, schedule, webhook, etc.).

Add HTTP > Make a request after your trigger and configure it:

FieldValue
URLhttps://api.templatefox.com/v1/pdf/create
MethodPOST
Headersx-api-key → your API key, Content-Typeapplication/json
Body typeRaw
Content typeJSON (application/json)
Request contentSee below
{
"template_id": "YOUR_TEMPLATE_ID",
"data": {
"customer_name": "{{1.name}}",
"invoice_number": "{{1.invoice}}",
"total": "{{1.amount}}"
}
}

Use Make’s mapping panel ({{1.field}}) to pull values from the trigger module. You can find your template_id in the template editor URL or from GET /v1/templates.

Enable Parse response in the HTTP module so Make exposes the returned JSON fields to downstream modules:

  • url — signed URL to download the PDF
  • filename — the PDF filename
  • credits_remaining — credits left in your plan
  • expires_in — seconds until the URL expires

Make’s killer feature is the Iterator. Use it when your trigger returns an array (e.g. rows from a sheet, items from a webhook payload) and you want one PDF per element:

  1. Add Flow Control > Iterator after your trigger
  2. Point it at the array field (e.g. {{1.orders}})
  3. Put the HTTP module after the iterator — it runs once per element
  4. Each iteration passes its current item ({{2.item}}) to the request body

This scales naturally: 10 items → 10 PDFs. 500 items → 500 PDFs (subject to your plan’s credits and rate limits).

After the HTTP module runs, chain any Make module to the url field:

Email — Add Gmail / Outlook / SMTP and attach the PDF URL or the file itself.

Storage — Save to Google Drive, Dropbox, OneDrive, or back into Airtable as an attachment.

Chat — Send the download link via Slack, Discord, or Microsoft Teams.

Back to source — Write the URL into the original row (Google Sheets, Airtable, Notion) so users can click through.

Routers — Use a router to pick a different template based on data (invoice vs. credit note, domestic vs. international, language). Each route sends to a different HTTP module with its own template_id.

Error handlers — Attach an error handler to the HTTP module. If TemplateFox returns 4xx/5xx, roll back to a safe path (e.g. notify the user, retry with exponential backoff, skip the row).

Aggregator — After iteration, aggregate the generated URLs into a single email or report listing every PDF link.

Async for heavy jobs — For large documents or batches, call /v1/pdf/create-async instead. Make can receive the completion webhook via a Webhooks > Custom webhook trigger in a second scenario.

When the native TemplateFox app is enabled in your Make workspace you’ll see these modules in the picker. Each one wraps a public REST endpoint, so the HTTP recipe above stays a valid fallback.

ModuleEndpointDescription
Generate PDFPOST /v1/pdf/createSync generation. Supports the PDF/A archival variant.
Generate PDF (Async)POST /v1/pdf/create-asyncQueue a job, receive a job_id immediately. Best for batches and long renders.
ModuleEndpointDescription
Merge PDFsPOST /v1/pdf-tools/mergeConcatenate 2+ PDFs into one document.
Extract PDF PagesPOST /v1/pdf-tools/extract-pagesExtract or reorder pages using a 1-3, 5, 7-9 syntax.
Rotate PDFPOST /v1/pdf-tools/rotateRotate every page by a single angle, or apply a per-page map.
ModuleEndpointDescription
Get PDF JobGET /v1/pdf/jobs/{job_id}Look up an async job by ID.
List PDF JobsGET /v1/pdf/jobsList recent jobs, optionally filtered by status.
Get AccountGET /v1/accountReturns remaining credits and account email.
Make an API CallanyUniversal module for any other endpoint, with auth pre-attached.

401 Unauthorized — Check the x-api-key header spelling and that the key is still active in your Dashboard.

400 Bad Request — The data payload doesn’t match the template’s expected variables. Open the template and verify every variable name matches a key in your JSON.

Iterator processing all items at once — Make sure the HTTP module is placed after the Iterator, not in parallel with it. The connection line should go Trigger → Iterator → HTTP.

Nested JSON from trigger breaks mapping — Wrap arrays in {{ifempty(1.items; emptyarray)}} or use JSON > Parse JSON to coerce string payloads into objects before mapping.