In short: the community node n8n-nodes-tiro adds two building blocks to your editor – a trigger that fires on every finished document, and a node that uploads files and fetches results. No polling, no credits for the delivery, the same field names as in your inbox.
The package is n8n-nodes-tiro and it is open source (source on GitHub, MIT licence). On self-hosted n8n you install it under Settings → Community nodes. Getting onto the verified list that n8n Cloud requires is the next step.
What the n8n node is for
n8n is the automation platform for people who keep their data in their own house: self-hosted, with direct access to databases, file shares and internal APIs. That is exactly where the values from your documents belong – without the detour through someone else's service.
Typical workflows:
- Order confirmations → Postgres: trigger in “One Item per Row” mode, then an insert node. Every line item becomes a row, with order number and supplier on each of them.
- Delivery notes → ERP: trigger “Extract Completed”, then an HTTP Request node against your ERP API. Header fields and line items arrive ready-structured.
- Email attachments → Tiro: IMAP trigger, then Tiro → Document → Upload. The route for everyone who cannot use Tiro's own email intake.
- Failures → Slack or a ticket: trigger “Document Failed”, then a message with the error and the link. Nothing falls silently off the table.
The two nodes
| Building block | What it does |
|---|---|
| Tiro Trigger · Extract Completed | Fires when a document has been extracted. Delivers every header field, the line items as a list, filename, pages, credits and links to the document and its downloads. |
| Tiro Trigger · One Item per Row | Fires with one item per line item; the header fields sit on every item. Made for tables and database inserts. |
| Tiro Trigger · Document Failed | Fires when a document could not be processed after all attempts – with the error message and the link. |
| Tiro · Document → Upload | Puts a binary file from a previous step into an inbox. Returns document ID and status; extraction runs in the background. |
| Tiro · Extract → Get | Fetches the result of a document by its ID – for “Upload → Wait → Get” in a single workflow. If the document is not finished yet you get found: false instead of an error, and an IF node sends the run back into the Wait step. |
The field keys are the ones you named in the inbox: header fields under fields, the line items under rows (in row mode the single row under row).
How it works under the hood
When you activate a workflow with the Tiro Trigger, the node creates a destination of type n8n in Tiro – you see it in the inbox under “Destinations”, next to your webhooks. As soon as a result is finished, Tiro sends a signed call to your workflow's webhook URL, with the same retries on trouble as any webhook: after 1, 5 and 15 minutes, then after 1, 3, 6 and 12 hours. Every attempt shows up in the document's history. Deactivate the workflow and the destination disappears again.
For this to work your n8n instance has to be reachable from the internet: https only, public hostname. Tiro never calls private, loopback or link-local addresses – which protects both sides. To try it out, put a tunnel in front of your local instance – cloudflared tunnel --url http://localhost:5678, say – and start n8n with WEBHOOK_URL set to that public address. (The built-in --tunnel switch is gone as of n8n 2.)
What else is worth knowing
- Review: if the inbox reviews, n8n waits for the release. “Approve all” in the app sets the waiting workflows off at once.
- Reprocessing: reprocess a document and the workflow runs again – with the new values. The new run carries its own ID.
- Credits: every uploaded document costs page credits like in the app; the delivery to n8n costs nothing.
- Downloads: the CSV and Excel links in the item point at the REST API and need your API key as a bearer header – an HTTP Request node with the Tiro credential pulls the file straight into the workflow.
- Alternatives without the node: a Webhook node in n8n plus a destination of type webhook in Tiro – that works on every n8n version, you verify the signature yourself. For code there is the REST API, for your AI assistant the MCP server.