substrat.cat
Integracions

Automatitzar processos amb n8n: la guia que hauria volgut tenir

Què és n8n, quan té sentit, com es pensa un flux que aguanta i on es trenquen tots. El tronc del qual pengen les guies tècniques de gestió d'errors, el node Code i la posada en producció.

·14 min de lectura

n8n és un orquestrador de fluxos: connecta serveis, mou dades entre ells, pren decisions i s’executa per horari o per esdeveniment. És programari lliure, s’autoallotja amb un contenidor i, a diferència de la majoria d’eines «sense codi», no t’abandona el dia que necessites una línia de JavaScript.

Aquesta és la guia de referència. Explica el model mental —què és un flux, un node, un item— i després enllaça les tres guies tècniques on cada tema es tracta a fons: la gestió d’errors, el node Code i la posada en producció. Si ja saps què és n8n, ves directe a la que et calgui.

Què resol, i què no

El cas típic no té API oficial ni pressupost per a un desenvolupament a mida. Cada dilluns algú entra a un portal, filtra per data, descarrega un Excel, en copia tres columnes a un altre sistema i envia un correu. Vint minuts, tres cops per setmana, i el dia que aquella persona és de vacances no ho fa ningú.

n8n automatitza exactament aquesta franja: processos amb passos clars, entre sistemes que ja existeixen, que ara fa una persona a mà. On no és la resposta: càlcul massiu (mig milió de files no van a un flux, van a una consulta SQL), lògica de negoci complexa amb molts estats, o res que hagi de respondre en mil·lisegons a milers d’usuaris.

El model mental: flux, node, item

Tres conceptes i ja pots llegir qualsevol flux.

El flux és el llenç. Comença amb un trigger —el que l’engega— i continua amb nodes connectats per fletxes. El trigger pot ser un horari (Schedule Trigger), una crida entrant (Webhook), o un canvi en un servei (un correu nou, una fila nova).

El node és una passa: llegir d’una API, transformar dades, decidir, escriure a una base de dades. Cada node rep dades del node anterior i en passa al següent.

L’item és la unitat que viaja pel flux, i és el concepte que la gent triga més a entendre. Els nodes no treballen amb «una cosa»: treballen amb una llista d’items. Si un node llegeix 200 files, passa 200 items al següent, i aquest s’executa sobre els 200. Aquesta forma —tot és una llista— és la clau de per què n8n és ràpid quan s’usa bé i lent quan no, i és el nucli de la guia del node Code.

Cada item és un objecte amb una clau json a dins:

[
  { "json": { "nom": "Acme SL", "import": 1990 } },
  { "json": { "nom": "Beta SCP", "import": 240 } }
]

Els nodes que faràs servir el 90 % del temps

No cal conèixer els 400 nodes. Amb aquests set es fa gairebé tot:

Node Per a què
Schedule Trigger Engegar per horari (cada nit, cada hora)
Webhook Engegar quan un altre sistema avisa
HTTP Request Parlar amb qualsevol API
Edit Fields (Set) Donar forma a les dades, afegir o treure camps
IF / Switch Bifurcar segons una condició
Merge Ajuntar dues branques
Code El que no fa cap node: transformar, agrupar, calcular

Fixa’t que HTTP Request hi és i cap connector concret. És deliberat: els connectors prefets (Slack, Google Sheets, Notion…) van bé, però el dia que un no existeix o es queda curt, HTTP Request parla amb qualsevol cosa que tingui API. Val la pena aprendre’l aviat.

Expressions: enganxar dades d’un node a un altre

El que fa que un flux sigui un flux i no cinc passes soltes són les expressions: agafar una dada d’un node anterior i posar-la en un de posterior. S’escriuen entre dobles claus:

{{ $json.email }}
{{ $json.import * 1.21 }}
{{ $('HTTP Request').item.json.id }}
  • $json és l’item actual, tal com arriba del node anterior.
  • $('Nom del node') agafa dades d’un node concret pel seu nom —per això val la pena posar noms als nodes, i no deixar-los com «HTTP Request 3».

Amb expressions omples un cos de correu amb el nom del client, construeixes una URL amb un identificador, o decideixes una branca IF. És el pegament de tot plegat.

Com es pensa un flux que aguanta

Un flux que funciona el primer dia és fàcil. Un que segueix funcionant al cap de sis mesos té quatre coses que el primer no tenia.

1. Idempotència: que executar-lo dues vegades no faci mal

Un flux es tornarà a executar. Per un reintent, per una represa, perquè algú clica dues vegades. Si processar el mateix element dos cops crea dues comandes, tens un problema que no es veu fins que passa.

La solució és una clau que identifiqui cada element i una comprovació abans de crear: si ja existeix, no el tornis a crear. Quan l’altra banda ho permet, s’usa una clau d’idempotència; quan no, es porta un registre propi. És el patró que expliquem a fons a integracions que aguanten, i val igual dins d’n8n.

2. Reintents amb cap: no tot es reintenta igual

Una API que respon amb un error temporal (un 503, un límit de ritme) s’ha de reintentar esperant. Una que respon 400 no: la petició és dolenta i ho serà les tres vegades. n8n té reintents per node, però fer-los bé —quins codis, quanta espera, què fer quan s’esgoten— és la meitat de la guia de gestió d’errors.

3. Un lloc on van a parar els errors

Un flux que peta de matinada i no avisa ningú és pitjor que un procés manual, perquè la gent hi confia. n8n permet que quan un flux falla, se n’executi un altre que apunti l’error i t’avisi. Sense això, els fluxos fallen en silenci fins que algú pregunta per l’informe que no ha arribat.

4. Treballar per lots, no element a element

El parany de rendiment més comú: fer una crida a una API per cada item dins d’un bucle. 500 items, 500 crides, i uns quants minuts. Gairebé sempre es pot fer en blocs, i on n8n s’accelera de veritat és processant la llista sencera d’un cop dins d’un sol node. El perquè és tècnic i el desglossem a la guia del node Code.

L’error que costa més car: n8n com a base de dades

n8n mou dades; no les guarda. La temptació de deixar-hi l’estat —«ja ho recordarà el flux»— acaba malament, perquè un flux no té memòria entre execucions.

L’estat viu a fora: una base de dades, un full, una taula. n8n la llegeix al principi i l’escriu al final. Si el que necessites és una font de veritat editable per persones, Baserow encaixa; si és estat transaccional amb API, Supabase. El flux orquestra; les dades tenen casa pròpia.

El clúster: on continua cada tema

Aquesta guia és el tronc. Cada branca tècnica té la seva:

  • Gestió d’errors a n8n — el node Error Trigger, els reintents per node amb cap, el patró de la cua de morts i com fer que un flux que peta t’avisi en comptes de callar.
  • El node Code d’n8n — «Run Once for All Items» contra «Run Once for Each Item», $input.all() i $json, el format de retorn, i per què el mode que triïs canvia la velocitat per un factor de trenta.
  • n8n autoallotjat en producció — Docker, el mode cua amb Redis i workers, la clau d’encriptació que ha de ser idèntica, les còpies de seguretat i el que peta quan poses volum de veritat.

Quan n8n no és la peça

Per honestedat, perquè recomanar-lo per a tot és la manera de cremar-lo:

  • Un sol pas trivial (un webhook que reenvia a un altre): una funció de deu línies és més simple i no cal mantenir n8n.
  • Càlcul o transformació massiva: la feina pesada es fa a la base de dades i n8n només l’orquestra.
  • Lògica de negoci amb molts estats i regles: quan el flux té vint branques, ja no és un flux, és una aplicació disfressada, i costa més mantenir-la a n8n que en codi.

El lloc d’n8n és el mig: processos clars, entre sistemes que ja existeixen, que avui fa una persona a mà. Que és, resulta, on viu la major part de la feina repetitiva d’una empresa.


Si vols començar, no comencis pel flux: comença pel procés escrit en un paper, ordenat abans de tocar cap eina. El flux és l’última passa, no la primera.

El següent pas

Tens un procés
que odies fer?

Explica-m'ho i et diré si es pot automatitzar — i si no es pot, també t'ho diré. La primera conversa no es cobra — però el cafè el poses tu.

hola@substrat.cat