Adalo development

How to Generate PDFs from Your Adalo App

Ali Bazzi, Adalo Expert & Founder of WebnuxAli Bazzi, Adalo Expert & Founder of Webnux
8 min read
Short answer

Adalo has no built in way to create a PDF. You add a Custom Action that posts your record data to a PDF endpoint, the endpoint returns a pdf_url, and you save that URL on the record so your user can open, download or email a real PDF file.

If you have ever needed your Adalo app to produce an invoice, a receipt, a quote or a certificate, you have probably discovered the same thing everyone else does: Adalo has no built in way to create a PDF. This guide shows you how to add it. No code, no Zapier subscription, and about ten minutes of setup.

What people usually try first, and why it fails

What you want is one thing: send record data out, get a real PDF file and a link back.

  • Screenshots — poor quality, captures the rest of the screen.
  • Zapier or Make — a paid subscription plus several seconds of delay.
  • HTML in a WebView — renders on screen, no file to save or email.

What you will build

A "Download Invoice" button that posts the record, gets a PDF link back, saves it, and opens it.

  • An Adalo app with a collection holding the document data (Orders, for example)
  • A free Webnux Tools account
  • Ten minutes

Step 1: Design the PDF once

Go to the PDF Generator and design your document. This is the part you do visually, and you only do it once.

Pick whether your document has a list of items in it:

  • No list. One person, one total. Certificates, letters, confirmations.
  • Yes, it has a list. Invoices, receipts and quotes with several product rows.

Save your template and copy its ID

Set your heading, your colours, your logo, and the fields you want printed. When it looks right, click Save template.

Your template appears under "Your saved templates". Click Copy ID on it. That ID is now on your clipboard and you will need it in Step 3. It looks like this:

text
3f1c8a10-5f3b-4a1e-9c77-5d1f0b2a91d4

Step 2: Create the Custom Action in Adalo

In the Adalo editor, select the button that will generate the PDF, then:

  1. 1.Click Actions+ New Custom ActionAPI Request
  2. 2.Action Name: Generate PDF
  3. 3.Method: POST
  4. 4.API Base URL: https://api.webnux.org/pdf/generate
Adalo Custom Action API Request step with API Base URL set to https://api.webnux.org/pdf/generate and Method POST
That exact URL matters. Any other URL returns a web page instead of a PDF, and that is the single most common mistake here.

Step 3: Add the headers

Under Headers & Queries, click + Add Item and choose Header. There are only two headers, and only one of them is required:

Headers & Queries
Content-TypeRequired
application/json

Without this the request fails silently and nothing happens when the button is tapped.

x-api-keyOptional
your API key from the PDF Generator page

Only needed if you want every generated PDF saved in your account history. The PDF still generates without it.

Step 4: Tell it what to put on the document

Find the Body field of the Custom Action and paste this in:

json
{
  "template_id": "PASTE_YOUR_TEMPLATE_ID",
  "customer_name": "",
  "date": "",
  "total": ""
}
Body fields
template_idRequired
the ID you copied in Step 1

Tells the generator which design to use.

customer_name / date / totalOptional
Magic Text from your record

Use the same names as the field labels in your template. Add or remove rows freely.

itemsOptional
a list of rows: name, description, quantity, price

Only for invoices, receipts and quotes with several product lines.

Adalo Custom Action showing the Content-Type header added and the JSON body with template_id, customer_name, date and total
The Content-Type header and the JSON body, side by side in the same step of the Adalo editor.

Map each value to Magic Text

Click into each empty value and pick the Magic Text from your record: customer_nameCurrent Order > Customer Name, dateCurrent Order > Created Date, totalCurrent Order > Total.

Names on the left are the labels printed on your template. Magic Text on the right is where the real value comes from.

Step 5: Test it and save the result

Click Run Test Request. A successful test returns:

  • pdf_url — the direct link to the PDF
  • download_url — same file, prompts a download
  • filename, pages, size_bytes, created_at — extra details you can ignore
Adalo Test Successful screen showing the full PDF generate response with success, id, doc_type, template_id, pdf_url and download_url
Test Successful. Click **ADD ITEM** under Magic Text Output Properties and add `pdf_url`.

Step 6: Show the PDF to your user

Add a second action on the same button: Link, pointed at the PDF Link property.

  • The link opens in the device PDF viewer on iOS and Android.
  • On a web build it downloads instead.
  • To email it, use the same PDF Link property inside an email action or your email tool.

Handling invoices with multiple line items

A document with several products needs its items to arrive as a list, not separate fields.

  • Do not drag an Adalo list or relationship (like Current Order > Products) straight into the body.
  • Adalo does not send relationships in a format the generator can read, this is where most people get stuck.
  • The simple way: build an Items JSON Text property as items are added, then map it to items.
  • The proper way: use an External Collection so the item rows come through as real data.

What else you can generate

The same setup produces receipts, quotes, certificates, reports and letters.

  • Each item row accepts name, description, quantity and price, up to 500 rows.
  • Long documents paginate automatically.
  • Swap the template ID in the body to change document type, everything else stays the same.
  • Set an accent colour, add your logo, footer payment terms, and extra label/value rows.

Common mistakes and how to diagnose them

The PDF is blank or fields are missing.

Likely cause:
Your Magic Text is not mapped, or the field names in the body do not match the ones in your template.
Fix:
Check both the body keys and the template field labels so they match exactly.

The action fires before the record saves.

Likely cause:
If you create a record and generate the PDF in the same tap, the data may not exist yet.
Fix:
Put the generate action on the next screen, or on a separate button.

You get HTML back instead of a PDF.

Likely cause:
Wrong URL.
Fix:
It must be https://api.webnux.org/pdf/generate.

Nothing happens at all.

Likely cause:
Missing the Content-Type: application/json header.
Fix:
Add the header with name Content-Type and value application/json.

It works in the editor but not on mobile.

Likely cause:
The PDF link is only returned by the action, never stored.
Fix:
Check that the PDF Link property is actually being saved to the record, not just returned by the action.

When you need an Adalo expert

Plenty of Adalo issues are straightforward to fix yourself with the steps above. It usually pays to bring in an experienced Adalo developer when the problem sits deeper in the build:

  • Your invoice needs line items pulled from a relationship or cart rather than a single text field.
  • You need the PDF emailed automatically, attached, or archived per customer.
  • The document layout has to match an existing legal or accounting format exactly.

Related guides

Frequently asked questions

Can Adalo create PDFs natively?

No. Adalo has no PDF renderer, so the file has to be generated outside the app and returned as a URL.

Where is the PDF stored?

The generator hosts the file and returns a direct link. If you send your API key, the PDF is also saved in your account history.

Can I include a list of line items?

Yes. Send an items array of rows with name, description, quantity and price, either from a Text property holding JSON or from an External Collection.

Can users download the PDF in the app?

Yes. Save pdf_url to a Text property and add a Link action to it. On mobile it opens in the device PDF viewer, on web it downloads.

Do I need Zapier or Make?

No. A single Adalo Custom Action posts straight to the PDF endpoint, so there is no extra subscription and no multi-second delay.

How long does setup take?

About ten minutes: design the template once, add the Custom Action, map your Magic Text, then save and link the returned URL.

Webnux Tools is an independent product by Webnux Ltd. It is not affiliated with, endorsed by, or sponsored by Adalo, Inc. Adalo is a trademark of Adalo, Inc.

Need this built in your Adalo app?

Work with Ali