> ## Documentation Index
> Fetch the complete documentation index at: https://docs.arya.so/llms.txt
> Use this file to discover all available pages before exploring further.

# Workflow builder

> Editor visuale drag-and-drop per costruire automazioni complesse.

Il **workflow builder** è l'editor visuale dove costruisci automazioni concatenando trigger, condizioni e azioni.

<Frame>
  <img src="https://mintcdn.com/agevole/BUuJGD62nuns4mJL/images/automazioni/it/builder-canvas.svg?fit=max&auto=format&n=BUuJGD62nuns4mJL&q=85&s=4898305f4e52275f4584a7e387b64135" alt="Canvas builder con trigger, condizione IF, e due rami di azioni" width="1200" height="720" data-path="images/automazioni/it/builder-canvas.svg" />
</Frame>

## Anatomia di un workflow

Ogni workflow è una **grafo diretto**:

```
[Trigger] → [Condizione] → [Azione A1] → [Azione A2]
                        ↓
                        → [Azione B1]
```

## Crea un workflow

<Steps>
  <Step title="Apri Automazioni → Nuovo workflow">
    Scegli da zero o da **template** (oltre 30 template pre-pronti).
  </Step>

  <Step title="Configura il trigger">
    Aggiungi il primo nodo: l'evento che avvia il workflow. Vedi [Trigger](/it/automazioni/trigger).
  </Step>

  <Step title="Aggiungi azioni">
    Click **+** sotto il trigger → scegli tipo azione dalla libreria. Compila i parametri.
  </Step>

  <Step title="Aggiungi condizioni (opzionale)">
    **Condizione IF**: se la condizione è vera, prosegue sul ramo True; altrimenti sul ramo False. Puoi annidare condizioni.
  </Step>

  <Step title="Test">
    Click **Esegui in test** con un record di esempio. Arya simula tutte le azioni senza effetti reali, mostrando input/output.
  </Step>

  <Step title="Attiva">
    Switch **Attivo**. Il workflow inizia a rispondere ai trigger dal vivo.
  </Step>
</Steps>

## Variabili e riferimenti

Dentro i campi delle azioni usi `{{variabili}}` per riferire dati del trigger o di azioni precedenti:

```
{{trigger.deal.name}}              // Nome del deal che ha attivato
{{trigger.deal.company.name}}      // Azienda collegata
{{trigger.deal.primary_contact.email}}  // Email del contatto principale
{{action_1.output.id}}              // ID di un record creato dall'azione 1
{{now}}                             // Data e ora corrente
{{user}}                            // Utente che ha eseguito (per trigger manuali)
```

## Funzioni nei template

Oltre ai riferimenti, puoi usare mini-funzioni nelle variabili:

```
{{upper(trigger.deal.name)}}             // MAIUSCOLO
{{format_currency(trigger.deal.value)}}  // 10,000.00 €
{{format_date(now, "DD/MM/YYYY")}}       // 14/04/2026
{{truncate(trigger.deal.description, 200)}}  // prime 200 char
```

## Condizioni

<Frame>
  <img src="https://mintcdn.com/agevole/BUuJGD62nuns4mJL/images/automazioni/it/condition-editor.svg?fit=max&auto=format&n=BUuJGD62nuns4mJL&q=85&s=187212ae9f1f927766b62bbd7ca37cad" alt="Editor condizione IF con campi e operatori" width="1200" height="720" data-path="images/automazioni/it/condition-editor.svg" />
</Frame>

<AccordionGroup>
  <Accordion title="Singola condizione">
    `valore > 10000` → True/False.
  </Accordion>

  <Accordion title="Multiple con AND/OR">
    `(valore > 10000 AND stage = "Proposal") OR priority = "Urgent"`.
  </Accordion>

  <Accordion title="Condizioni su record collegati">
    `company.industry == "Retail"` — naviga riferimenti.
  </Accordion>
</AccordionGroup>

## Loop

Per iterare su una lista:

<Steps>
  <Step title="Azione 'Per ogni'">
    Aggiungi azione **For each** → specifica la lista (es. `trigger.deal.contacts`).
  </Step>

  <Step title="Azioni dentro il loop">
    Le azioni annidate si eseguono per ogni item. `{{item.x}}` riferisce l'item corrente.
  </Step>

  <Step title="Aggrega">
    Dopo il loop, puoi aggregare output (es. count, sum).
  </Step>
</Steps>

## Error handling

<AccordionGroup>
  <Accordion title="Retry automatico">
    Se un'azione fallisce (es. API Slack offline), Arya ritenta N volte con backoff esponenziale.
  </Accordion>

  <Accordion title="Fallback">
    Per ogni azione, configura cosa fare se fallisce definitivamente: salta, interrompi workflow, esegui azione alternativa.
  </Accordion>

  <Accordion title="Notifica errore">
    Email / Slack al creator del workflow su errore non recuperato.
  </Accordion>
</AccordionGroup>

## Versioning

<Steps>
  <Step title="Salva versione">Ad ogni salvataggio Arya tiene lo storico. Accedi da **⋯ → Cronologia versioni**.</Step>
  <Step title="Confronta">Vedi diff tra versioni (cosa è cambiato).</Step>
  <Step title="Rollback">Ripristina una versione precedente con un click.</Step>
</Steps>

## Domande frequenti

<AccordionGroup>
  <Accordion title="Quanti workflow posso avere?">Nessun limite tecnico. Piani Premium hanno priorità di esecuzione più alta.</Accordion>
  <Accordion title="Workflow complessi rallentano l'app?">No — l'esecuzione è asincrona su infrastruttura dedicata. L'app resta responsiva anche con migliaia di workflow.</Accordion>
  <Accordion title="Posso condividere workflow con altri workspace?">Sì, esporta come JSON → importa in altro workspace. Variabili di integrazione (API key) vanno riconfigurate.</Accordion>
</AccordionGroup>
