snapshot of https://github.com/twentyhq/twenty.git (main, 2026-09-17; blobs > 131072B omitted)
Some checks failed
App Prod-Parity E2E Dispatch / dispatch (push) Failing after 10s
CD Storybook UI / build (push) Failing after 3m25s
CD Storybook UI / dispatch (push) Has been skipped
CD deploy main / website-changed-files (push) Successful in 18m8s
CI Agent Skills / changed-files-check (push) Successful in 18m9s
CI Create App E2E minimal / changed-files-check (push) Successful in 24s
CI Create App / changed-files-check (push) Successful in 26s
CI Docs / changed-files-check (push) Successful in 26s
CI Emails / changed-files-check (push) Successful in 28s
CI Example App Hello World / changed-files-check (push) Successful in 23s
CI Front / changed-files-check (push) Has been skipped
CI Example App Postcard / changed-files-check (push) Successful in 27s
CI UI / changed-files-check (push) Has been skipped
CI Utils Test / changed-files-check (push) Successful in 45s
CI Twenty Apps / discover (push) Successful in 1m3s
CD deploy main / deploy-main (push) Failing after 3s
CI Agent Skills / agent-skills-validate (push) Has been skipped
CI Create App / create-app-test (lint) (push) Has been skipped
CI Emails / emails-test (push) Has been skipped
CI Front / front-task (lingui:compile) (push) Has been skipped
CI Front / front-task (lint) (push) Has been skipped
CI Example App Postcard / example-app-postcard (push) Has been skipped
CI UI / ui-task (lint) (push) Has been skipped
CI UI / ui-task (pack-size) (push) Has been skipped
CI UI / ui-task (size) (push) Has been skipped
CI UI / ui-task (test) (push) Has been skipped
CI UI / ui-task (typecheck) (push) Has been skipped
CI Utils Test / utils-test (push) Has been skipped
CI Twenty Apps / ${{ matrix.app.name }} (push) Has been skipped
CI Emails / ci-emails-status-check (push) Successful in 2s
CI Example App Hello World / ci-example-app-hello-world-status-check (push) Successful in 2s
CI Example App Postcard / ci-example-app-postcard-status-check (push) Successful in 3s
CI UI / ui-sb-test (push) Has been skipped
CI Utils Test / ci-utils-test-status-check (push) Successful in 2s
CI Twenty Apps / ci-twenty-apps-status-check (push) Successful in 2s
CI UI / ci-ui-status-check (push) Successful in 2s
CI Desktop / desktop (push) Failing after 1m8s
Push docs to Crowdin / Push documentation to Crowdin (push) Failing after 55s
Push translations to Crowdin / Extract and upload translations (push) Failing after 5s
Push website translations to Crowdin / Extract and upload website translations (push) Failing after 5s
CI Create App / create-app-test (test) (push) Has been skipped
CI Create App / create-app-test (typecheck) (push) Has been skipped
CI Docs / docs-lint (push) Has been skipped
CI Example App Hello World / example-app-hello-world (push) Has been skipped
CI Front / front-task (lingui:extract) (push) Has been skipped
CI Front / front-task (test) (push) Has been skipped
CI Front / front-task (typecheck) (push) Has been skipped
CI UI / ui-sb-build (push) Failing after 1m32s
CI Twenty Apps / ${{ matrix.app.name }} (${{ matrix.server-source }}) (push) Has been skipped
CI Agent Skills / agent-skills-publish (push) Has been skipped
CI Create App / ci-create-app-status-check (push) Successful in 2s
CI Agent Skills / agent-skills-remote-source (push) Has been skipped
CI Create App E2E minimal / create-app-e2e-minimal (push) Has been cancelled
CI E2E Main / e2e-test (push) Has been cancelled
CI Front / front-sb-build (push) Has been cancelled
CI Front / front-build (push) Has been cancelled
CI Create App E2E minimal / ci-create-app-e2e-minimal-status-check (push) Has been cancelled
CI E2E Main / ci-e2e-main-status-check (push) Has been cancelled
CI E2E Main / notify-main-ci-failure (push) Has been cancelled
CI E2E Main / qa-scout-comment (push) Has been cancelled
CI Front / front-sb-test (push) Has been cancelled
CI Front / front-sb-screenshots (push) Has been cancelled
CI Front / ci-front-status-check (push) Has been cancelled
DPA Sub-Processor Sync / sync-subprocessors (push) Failing after 3s
AI Catalog Sync / sync-catalog (push) Failing after 2s

This commit is contained in:
upstream-mirror
2026-09-17 23:28:13 +05:00
commit e7da97194a
32688 changed files with 4208681 additions and 0 deletions

View File

@@ -0,0 +1,167 @@
---
title: Invia email dai flussi di lavoro
description: Invia automaticamente email personalizzate utilizzando le azioni dei flussi di lavoro.
---
Invia automaticamente email quando si verificano eventi specifici nel tuo CRM—dai il benvenuto ai nuovi contatti, effettua il follow-up delle opportunità o avvisa i membri del team.
## Prerequisiti
Prima di poter inviare email dai flussi di lavoro:
1. Collega un account email in **Impostazioni → Account**
2. Assicurati che l'account abbia le autorizzazioni di invio abilitate
## Flusso di lavoro email di base
### Esempio: Email di benvenuto per i nuovi contatti
**Obiettivo**: Inviare un'email di benvenuto quando una nuova persona viene aggiunta al CRM.
**Impostazione**:
1. **Crea flusso di lavoro**: Vai su **Impostazioni → Flussi di lavoro** e fai clic su **+ Nuovo flusso di lavoro**
2. **Aggiungi trigger**: Seleziona **Record creato** → **Persone**
3. **Aggiungi l'azione Invia email**:
* Fai clic su **+** per aggiungere un'azione
* Seleziona **Invia email**
* Configura l'email:
| Campo | Valore |
| ----------- | -------------------------------------- |
| **A** | `{{trigger.object.email}}` |
| **Oggetto** | `Benvenuto in {{Your Company Name}}` |
| **Corpo** | `Hi {{trigger.object.firstName}}, ...` |
4. **Testa e attiva**: Esegui un test con un record di esempio, quindi attiva
## Uso delle variabili nelle email
Richiama i dati dai passaggi precedenti usando la sintassi `{{variable}}`:
```text
Hi {{trigger.object.firstName}},
Thank you for connecting with us!
Your company, {{trigger.object.company.name}}, is now in our system.
Best regards,
The Team
```
### Variabili disponibili dai trigger
| Tipo di trigger | Variabili comuni |
| ---------------------------- | -------------------------------------- |
| **Record creato/aggiornato** | `{{trigger.object.fieldName}}` |
| **Manuale** | `{{trigger.selectedRecord.fieldName}}` |
| **Webhook** | `{{trigger.body.fieldName}}` |
## Avanzato: Email condizionali
### Esempio: Email diverse in base all'origine del lead
**Obiettivo**: Inviare email di benvenuto diverse in base alla provenienza del lead.
**Impostazione**:
1. **Trigger**: Record creato (Persone)
2. **Aggiungi l'azione Filtro**:
* Condizione: `{{trigger.object.source}}` uguale a `"Website"`
* Se vero → continua con l'email di benvenuto per il sito web
3. **Diramazione per altre origini**:
* Crea diramazioni parallele per origini diverse
* Ogni diramazione ha la propria azione Invia email
## Inviare email a più destinatari
### Esempio: Notifica al team quando un'opportunità viene chiusa
**Obiettivo**: Inviare un'email al commerciale e al suo responsabile quando un'opportunità viene vinta.
**Impostazione**:
1. **Trigger**: Record aggiornato (Opportunità, Fase = "Chiusa vinta")
2. **Cerca record**: Trova il responsabile del proprietario dell'opportunità
3. **Invia email n. 1**: Al proprietario dell'opportunità
* A: `{{trigger.object.owner.email}}`
* Oggetto: `Congratulazioni per la chiusura di {{trigger.object.name}}!`
4. **Invia email n. 2**: Al responsabile
* A: `{{searchRecords.manager.email}}`
* Oggetto: `Opportunità vinta: {{trigger.object.name}}`
## Email di follow-up programmate
### Esempio: Follow-up 3 giorni dopo la riunione
**Obiettivo**: Inviare un'email di follow-up 3 giorni dopo la registrazione di una riunione.
**Impostazione**:
1. **Trigger**: Record creato (Attività, Tipo = "Riunione")
2. **Azione di ritardo**: Attendi 3 giorni
3. **Invia email**:
* A: Partecipante alla riunione
* Oggetto: Seguito alla nostra conversazione
* Corpo: Richiama i dettagli della riunione dal trigger
## Allegati email
Puoi allegare file alle email inviate dai flussi di lavoro. L'allegato è un file statico che carichi durante la configurazione del flusso di lavoro.
### Come aggiungere un allegato
1. Nell'azione **Invia email**, fai clic sul pulsante **Allegati**
2. Fai clic per caricare un file dal tuo computer
3. Il file verrà allegato a tutte le email inviate da questa azione
### Casi d'Uso Comuni
| Caso d'uso | File di esempio |
| -------------------------- | ---------------------------------- |
| **Email di benvenuto** | Brochure aziendale (PDF) |
| **Sequenze di onboarding** | Guida per iniziare |
| **Follow-up vendite** | Catalogo prodotti o listino prezzi |
| **Conferme degli eventi** | Dettagli dell'evento o programma |
<Note>
Gli allegati sono statici—lo stesso file viene inviato a tutti i destinatari. Per documenti dinamici (come i preventivi personalizzati), genera e allega i file utilizzando una [Funzione serverless](/l/it/user-guide/workflows/how-tos/connect-to-other-tools/generate-pdf-from-twenty).
</Note>
## Migliori Pratiche
### Contenuto dell'email
* Mantieni le righe dell'oggetto concise e pertinenti
* Personalizza con il nome del destinatario
* Includi una chiara chiamata all'azione
* Testa le email prima di attivare
### Recapito
* Non inviare troppe email troppo rapidamente
* Usa firme email professionali
* Evita parole che attivano i filtri antispam
* Assicurati che le email di marketing includano opzioni di disiscrizione
### Risoluzione dei problemi
* Verifica che l'account email sia connesso e attivo
* Controlla che l'indirizzo email del destinatario sia valido
* Esamina le esecuzioni dei flussi di lavoro per eventuali messaggi di errore
* Prova prima con il tuo indirizzo email
## Correlati
* [Trigger dei flussi di lavoro](/l/it/user-guide/workflows/capabilities/workflow-triggers)
* [Azioni dei flussi di lavoro](/l/it/user-guide/workflows/capabilities/workflow-actions)

View File

@@ -0,0 +1,88 @@
---
title: Usare le diramazioni nei flussi di lavoro
description: Comprendi come funzionano le diramazioni e come controllare quale percorso viene eseguito.
---
## Come funzionano le diramazioni
Nell'editor dei flussi di lavoro, puoi creare più percorsi (diramazioni) che partono da un singolo nodo. Questo ti consente di creare automazioni complesse con risultati diversi.
**Importante**: Quando viene eseguito un flusso di lavoro, **tutte le diramazioni vengono eseguite in parallelo per impostazione predefinita**. Non esiste una logica "if/else" integrata per scegliere una diramazione rispetto a un'altra — ogni percorso verrà eseguito simultaneamente.
## Controllare quale diramazione viene eseguita
Per eseguire una sola diramazione in base a condizioni specifiche, **aggiungi un nodo Filtro all'inizio di ogni diramazione**.
### Esempio di configurazione
1. Crea il tuo flusso di lavoro con più diramazioni da un singolo nodo
2. Aggiungi un nodo **Filtro** come primo passaggio in ogni diramazione
3. Imposta le condizioni su ciascun Filtro per determinare quando quella diramazione deve continuare
4. Procederanno solo le diramazioni per cui le condizioni del Filtro sono soddisfatte
### Come funzionano i filtri
* Se la condizione del Filtro è **soddisfatta**: la diramazione continua l'esecuzione
* Se la condizione del Filtro **non è soddisfatta**: la diramazione si ferma al nodo Filtro
Questo crea di fatto una logica condizionale in cui, in base ai tuoi dati, viene eseguita solo la diramazione appropriata.
## Esempio: instradare in base al valore dell'opportunità
**Scenario**: Quando un'opportunità viene chiusa, invia notifiche diverse in base al valore dell'opportunità.
1. **Trigger**: Opportunità aggiornata (Fase = Chiusa vinta)
2. **Diramazione 1**: Filtro per Importo > $10.000 → Invia un messaggio Slack a #big-deals
3. **Diramazione 2**: Filtro per Importo ≤ $10.000 → Invia un'email al responsabile vendite
Entrambe le diramazioni iniziano, ma solo quella che corrisponde all'importo dell'opportunità continuerà oltre il suo Filtro.
## Creare le diramazioni
<Note>
Per creare una nuova diramazione da un passaggio esistente, fai clic sul pulsante **+** nel passaggio e aggiungi la tua azione. Puoi aggiungere più diramazioni facendo clic su **+** più volte.
</Note>
1. Nell'editor dei flussi di lavoro, seleziona il passaggio da cui vuoi creare la diramazione
2. Fai clic su **+** per aggiungere un'azione
3. Questo crea una diramazione
4. Fai di nuovo clic su **+** sullo stesso passaggio per creare diramazioni aggiuntive
5. Ogni diramazione può avere la propria sequenza di azioni
## Riunire le diramazioni
Dopo che le diramazioni parallele hanno completato il loro lavoro, puoi riunirle in un unico percorso:
1. Completa le azioni nelle diramazioni
2. Aggiungi un nuovo passaggio che deve essere eseguito dopo tutte le diramazioni
3. Trascina una connessione dall'ultimo passaggio di ciascuna diramazione verso questo nuovo passaggio
4. Il passaggio riunito attende il completamento di tutte le diramazioni collegate prima di essere eseguito
### Esempio: elabora quindi notifica
```
Trigger
│
├── Branch A: Update Customer Record
│
└── Branch B: Create Support Ticket
↘ ↙
Merged Step: Send Confirmation Email
```
L'email di conferma viene inviata solo dopo che sia l'aggiornamento del cliente che la creazione del ticket sono stati effettuati.
## Migliori Pratiche
* Usa sempre i **nodi Filtro** all'inizio delle diramazioni quando desideri un'esecuzione condizionale
* Mantieni le condizioni delle diramazioni **mutuamente esclusive** per evitare azioni duplicate
* Testa i tuoi flussi di lavoro con dati diversi per assicurarti che vengano eseguite le diramazioni corrette
* **Rinomina i passaggi delle diramazioni** in modo descrittivo, così è chiaro cosa fa ogni percorso
* **Riunisci le diramazioni** quando ti serve un'azione finale dopo l'elaborazione parallela
## Correlati
* [Domande frequenti sui flussi di lavoro](/l/it/user-guide/workflows/how-tos/need-more-help/workflows-faq) — risposte sull'esecuzione parallela
* [Azioni dei flussi di lavoro](/l/it/user-guide/workflows/capabilities/workflow-actions) — azioni disponibili per le diramazioni

View File

@@ -0,0 +1,183 @@
---
title: Usare Iterator
description: Cicla attraverso array di record per eseguire azioni su ciascun elemento.
---
Iterator consente di scorrere un array di record ed eseguire azioni su ciascuno. È essenziale per i flussi di lavoro che devono elaborare più record restituiti da Search Records o ricevuti tramite webhook.
## Quando utilizzare Iterator
| Scenario | Esempio |
| --------------------------------------- | -------------------------------------------- |
| **Elaborare i risultati della ricerca** | Invia un'email a ciascuna persona trovata |
| **Gestire array di webhook** | Crea record per ciascun elemento nell'ordine |
| **Aggiornamenti massivi** | Aggiorna più record con valori calcolati |
| **Notifiche** | Avvisa più persone riguardo a un evento |
## Comprendere Iterator
Iterator si aspetta un **array** come input. Quindi:
1. Prende il primo elemento dall'array
2. Esegue tutte le azioni all'interno dell'Iteratore con quell'oggetto
3. Passa all'elemento successivo
4. Ripete finché tutti gli elementi non sono stati elaborati
### Selezionare l'array su cui iterare
La maggior parte delle origini di array (Search Records, un campo array di un webhook, un trigger manuale Bulk) può essere selezionata direttamente nel selettore di variabili.
Quando uno step **Code** o **Logic Function** restituisce un *array di primo livello*, il relativo output viene visualizzato nel selettore di variabili come voci indicizzate (`0`, `1`, `2`, …). Per iterare sull'intero array, seleziona l'opzione **Whole list** per quello step — l'Iterator deduce quindi automaticamente la struttura di ciascun elemento dall'elenco.
## Configurazione di base
### Esempio: inviare un'email a tutti nei risultati della ricerca
**Obiettivo**: Trovare tutti i contatti in un'azienda specifica e inviare a ciascuno un'email personalizzata.
### Passaggio 1: Cerca i record
1. Aggiungi un'azione **Search Records**
2. Oggetto: **Persone**
3. Filtro: Azienda uguale a "Acme Inc"
4. Questo restituisce un array di persone
### Passaggio 2: Verifica che i risultati esistano
1. Aggiungi l'azione **Filter**
2. Condizione: `{{searchRecords.length}}` è maggiore di 0
3. Questo evita errori di Iterator su risultati vuoti
### Passaggio 3: Aggiungi un Iterator
1. Aggiungi un'azione **Iterator**
2. Input dell'array: Seleziona `{{searchRecords}}`
3. Questo crea un ciclo
### Passaggio 4: Aggiungi azioni all'interno di Iterator
Le azioni posizionate sotto Iterator vengono eseguite per ciascun elemento:
1. Aggiungi azione **Invia email** (dentro Iterator)
2. A: `{{iterator.currentItem.email}}`
3. Oggetto: Ciao `{{iterator.currentItem.firstName}}`!
4. Corpo: Messaggio personalizzato utilizzando i campi dell'elemento corrente
### Risultato
Se Search Records restituisce 5 persone, Iterator:
* Invia un'email alla persona 1
* Invia un'email alla persona 2
* ... continua per tutte e cinque
## Accedere ai dati dell'elemento corrente
All'interno di Iterator, usa `{{iterator.currentItem}}` per accedere al record corrente:
| Variabile | Descrizione |
| --------------------------------------- | ----------------------------------------------------- |
| `{{iterator.currentItem}}` | L'intero oggetto del record corrente |
| `{{iterator.currentItem.id}}` | ID del record |
| `{{iterator.currentItem.email}}` | Campo email |
| `{{iterator.currentItem.company.name}}` | Nome dell'azienda correlata |
| `{{iterator.index}}` | Posizione corrente nell'array (indice a partire da 0) |
Nel selettore di variabili, puoi esplorare un campo specifico dell'elemento corrente oppure scegliere **Use the whole item** per fare riferimento all'intero elemento corrente (`{{iterator.currentItem}}`). Selezionare l'intero elemento è utile quando vuoi passare un record completo direttamente a uno step a valle invece di ricostruirlo campo per campo.
## Modelli comuni
### Aggiornare più record
**Obiettivo**: Contrassegnare tutte le attività in ritardo come "Late"
```
1. Search Records (Tasks, Due Date < Today, Status ≠ Completed)
2. Filter (length > 0)
3. Iterator (searchRecords)
└── Update Record
- Object: Tasks
- Record: {{iterator.currentItem.id}}
- Status: Late
```
### Creare record da un array
**Obiettivo**: Il webhook riceve un ordine con più elementi e crea un record per ciascuno
```
1. Webhook Trigger (receives items array)
2. Filter (items.length > 0)
3. Iterator (trigger.body.items)
└── Create Record
- Object: Order Items
- Name: {{iterator.currentItem.name}}
- Quantity: {{iterator.currentItem.qty}}
- Related Order: {{trigger.body.orderId}}
```
### Elaborazione condizionale all'interno del ciclo
**Obiettivo**: Inviare email solo ai contatti con indirizzi email validi
```
1. Search Records (People)
2. Iterator (searchRecords)
└── Filter (currentItem.email is not empty)
└── Send Email
- To: {{iterator.currentItem.email}}
```
## Risoluzione dei problemi
### "Iterator expects an array"
**Causa**: Hai passato un singolo record invece di un array.
**Soluzione**: Assicurati di passare il risultato di Search Records o un campo di tipo array, non un singolo record.
```
✅ Correct: {{searchRecords}}
❌ Wrong: {{searchRecords[0]}}
```
### Iterator non viene eseguito
**Causa**: L'array è vuoto.
**Soluzione**: Aggiungi un'azione **Filter** prima di Iterator per verificare la lunghezza dell'array:
```
Filter: {{searchRecords.length}} > 0
```
### Le azioni vengono eseguite troppe volte
**Causa**: Search Records ha restituito più record del previsto.
**Soluzione**:
* Aggiungi filtri più specifici a Search Records
* Imposta un limite su Search Records (massimo 200)
* Aggiungi **Filter** all'interno di Iterator per condizioni aggiuntive
## Considerazioni sulle prestazioni
* **Utilizzo dei crediti**: ogni iterazione consuma crediti per le sue azioni
* **Tempo**: gli array di grandi dimensioni richiedono più tempo per essere elaborati
* **Limiti**: prendi in considerazione l'esecuzione in batch di operazioni molto grandi
* **Limiti di frequenza**: le chiamate API esterne potrebbero raggiungere i limiti di frequenza con molte iterazioni
## Migliori Pratiche
1. **Controlla sempre la lunghezza dell'array** prima di Iterator per evitare errori
2. **Aggiungi filtri all'interno dei cicli** quando non è necessario elaborare tutti gli elementi
3. **Rinomina il passaggio di Iterator** per descrivere ciò su cui sta scorrendo
4. **Esegui test con array piccoli** prima di elaborare set di dati di grandi dimensioni
5. **Monitora le esecuzioni dei flussi di lavoro** per assicurarti che le iterazioni si completino come previsto
## Correlati
* [Azioni dei flussi di lavoro](/l/it/user-guide/workflows/capabilities/workflow-actions)
* [Come utilizzare le diramazioni](/l/it/user-guide/workflows/capabilities/use-branches-in-workflows)
* [Domande frequenti sui flussi di lavoro](/l/it/user-guide/workflows/how-tos/need-more-help/workflows-faq)

View File

@@ -0,0 +1,332 @@
---
title: Azioni del workflow
description: Scopri le azioni disponibili nei workflow di Twenty.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
## Informazioni sulle azioni
Le azioni definiscono cosa accade dopo l'attivazione di un trigger. Puoi concatenare più azioni per creare automazioni complesse.
<Tip>
* Usa il selettore di variabili (fai clic sull'icona `(x+)`) per sfogliare i dati disponibili dai passaggi precedenti
* Passa il mouse su qualsiasi campo di input per vedere da quale passaggio proviene una variabile — utile quando lo stesso campo (ad es., ID) esiste in più passaggi precedenti
* Assegna a ogni azione un nome descrittivo per una manutenzione più semplice
</Tip>
## Azioni sui record
<img src="/images/user-guide/workflows/workflow_actions.png" style={{width:'100%'}} />
### Crea Record
Aggiunge un nuovo record a un oggetto selezionato.
**Configurazione:**
* Seleziona l'oggetto di destinazione
* Compila i campi richiesti e opzionali
* Usa i dati dai passaggi precedenti oppure inserisci i valori manualmente per popolare i campi
**Output**: I dati del nuovo record creato sono disponibili per l'uso in passaggi successivi.
### Aggiorna Record
Modifica un record esistente in un oggetto selezionato.
<img src="/images/user-guide/workflows/update_record.png" style={{width:'100%'}} />
**Configurazione:**
* Seleziona l'oggetto di destinazione
* Scegli il record specifico da aggiornare.
* Puoi scegliere un record fisso, utilizzando il menu a discesa che mostra tutti i record disponibili.
* Oppure puoi selezionare dinamicamente il record, indicando un record trovato in un passaggio precedente, usando `(x+)`. In questa fase non è possibile cercare il record in base a criteri diversi. Se non hai ancora identificato il record, aggiungi un passaggio `Search Record` prima di questo passaggio `Update Record`.
* Seleziona i campi da modificare e inserisci nuovi valori
**Output**: I dati del record aggiornato sono disponibili per l'uso in passaggi successivi.
### Elimina Record
Rimuove un record da un oggetto selezionato.
**Configurazione**:
* Seleziona l'oggetto di destinazione
* Scegli il record specifico da eliminare
**Output**: I dati del record eliminato rimangono disponibili per l'uso in passaggi successivi.
### Cerca Record
Trova i record all'interno di un oggetto selezionato utilizzando condizioni di filtro.
**Configurazione**:
* Seleziona l'oggetto da cercare
* Imposta criteri di filtro per restringere i risultati
* Configura l'ordinamento e i limiti
**Output**: Restituisce i record corrispondenti utilizzabili in passaggi successivi.
<Note>
**Limite**: Search Records restituisce un massimo di **200 record**. Se devi elaborarne di più, aggiungi filtri specifici per ridurre i risultati oppure usa workflow pianificati per elaborare a lotti.
</Note>
**Migliore Pratica**: Usa [rami](/l/it/user-guide/workflows/capabilities/workflow-branches) dopo Search Records per gestire scenari "trovato" vs "non trovato".
### Inserisci o aggiorna Record
Crea un nuovo record o aggiorna uno esistente in base ai criteri di corrispondenza. È utile quando non sei sicuro che un record esista già.
<img src="/images/user-guide/workflows/upsert_double_identifier.png" style={{width:'100%'}} />
**Configurazione**:
* Seleziona l'oggetto di destinazione
* Tieni presente quali campi possono essere utilizzati per la corrispondenza: email per Persone, dominio per Aziende, ID per qualsiasi oggetto o qualsiasi campo contrassegnato come Univoco. Dovrai compilare almeno uno di questi qui sotto.
* Compila i valori dei campi. Non dimenticare di valorizzare almeno uno degli identificatori univoci.
<Note>
**La corrispondenza di solito funziona ancora meglio aggiungendo un solo identificatore univoco.** Ad esempio, lo screenshot qui sotto abbinerà le aziende in base al loro dominio. L'ID non è necessariamente richiesto.
</Note>
<img src="/images/user-guide/workflows/upsert_simple_identifier.png" style={{width:'100%'}} />
* Usa dati dai passaggi precedenti per popolare i campi
**Come funziona**:
1. Cerca un record che corrisponde ai tuoi criteri
2. Se trovato → aggiorna il record esistente
3. Se non trovato → crea un nuovo record
**Output**: I dati del record creato o aggiornato sono disponibili per l'uso nei passaggi successivi.
## Azioni del flusso
### Iteratore
**Esegue un ciclo su un array di record** restituito da un passaggio precedente, consentendo di eseguire azioni su ciascun record individualmente.
**Configurazione**:
* Selezionare l'array di record da un passo precedente (ad esempio, risultati da record di ricerca, da un trigger manuale con disponibilità di massa, da un nodo Codice). Quando un passaggio di tipo Code o Logic Function restituisce un array di primo livello, seleziona l'opzione **Whole list** per eseguire il loop su tutto l'output.
* Definisci le azioni da eseguire su ciascun record nel ciclo.
<Note>
- È possibile aggiungere diverse azioni all'interno di un Iterator.
- Quando si utilizzano rami all'interno di un Iterator, assicurarsi che l'ultimo passo di ogni ramo si connetta all'Iteratore per chiudere il ciclo.
</Note>
* Accedi ai campi di `Current Item`: per utilizzare i campi del record attualmente in elaborazione, fai clic sul passaggio **Iterator**, quindi seleziona **Current item**. Verrà visualizzato l'elenco dei campi disponibili di quel record e potrai selezionarli per l'uso nelle azioni successive. Puoi anche selezionare **Use the whole item** per passare l'intero elemento corrente a un passaggio a valle.
<VimeoEmbed videoId="1146577247" title="Dimostrazione video" />
### Filtro
Filtra i record in base a condizioni specificate, consentendo il passaggio solo ai record che soddisfano i criteri.
**Configurazione**:
* Seleziona il record da filtrare
* Definisci le condizioni e i criteri di filtro
* Configura quali record devono passare ai passaggi successivi
<Note>
1. **Output**: I nodi filtro non restituiscono dati — agiscono come porte di accesso. Se le condizioni sono soddisfatte, il flusso di lavoro continua. In caso contrario, il flusso di lavoro si interrompe in quel ramo.
2. L'operatore `IS` può essere utilizzato con i campi numerici. Funziona come `EQUAL`.
</Note>
### Ritardo
Mette in pausa l'esecuzione del flusso di lavoro per una durata specificata o fino a una data/ora specifica.
**Tipi di ritardo**:
| Tipo | Descrizione |
| -------------------- | -------------------------------------------------------------------------- |
| **Durata** | Attendi per una quantità di tempo specifica (giorni, ore, minuti, secondi) |
| **Data programmata** | Attendi fino a una data e un'ora specifiche |
**Configurazione della durata**:
* Imposta giorni, ore, minuti e/o secondi
* Combina più unità (ad es., 2 giorni e 4 ore)
**Configurazione della data programmata**:
* Seleziona una data e un'ora
* Può fare riferimento a un campo data di un passaggio precedente (ad es., follow-up 3 giorni dopo una riunione)
**Casi di utilizzo**:
* Attendi 24 ore prima di inviare un'email di follow-up
* Metti in pausa fino alla data di chiusura di un'opportunità
* Pianifica azioni per l'orario lavorativo
<Note>
La data programmata non può essere nel passato. Se viene utilizzato un campo data di un passaggio precedente e la data è già passata, il flusso di lavoro non riuscirà.
</Note>
**Limiti e crediti**:
* **Nessun limite massimo di durata** — puoi impostare ritardi di minuti, giorni, settimane o oltre
* **1 credito consumato** quando il nodo Ritardo viene eseguito, indipendentemente dalla durata
* **Nessun credito consumato** durante l'attesa — un ritardo di 5 minuti costa come un ritardo di 5 giorni
## Azioni di comunicazione
### Invia email
Invia un'email dal tuo flusso di lavoro. Ottimo per email di gruppo basate su modelli. Le email avranno l'aspetto di quelle inviate dalla tua casella di posta.
Non è adatto per le newsletter (che richiedono una formattazione più ricca) o le sequenze automatiche di posta elettronica.
**Prerequisiti**: Aggiungi un account email in Impostazioni → Account
**Configurazione**:
* Seleziona l'account email del mittente
<Note>
Puoi inviare email solo dalle caselle di posta sincronizzate con il tuo account Twenty. L'invio dalle caselle di posta di altri membri del team (ad es., l'email del proprietario dell'account) è nella roadmap.
</Note>
Per tutti i passaggi seguenti, puoi fare riferimento a variabili dei passaggi precedenti per la personalizzazione.
* Inserisci l'indirizzo email del destinatario.
<Note>
Al momento è possibile un solo destinatario.
</Note>
* Imposta l'oggetto della email.
* Componi il corpo del messaggio. È possibile formattare i collegamenti, creare liste numerate, elenchi punti puntati e aggiungere allegati.
<Note>
Al momento non è possibile aggiungere firme HTML.
</Note>
### Modulo
Visualizza un modulo durante l'esecuzione del flusso di lavoro per raccogliere l'input dell'utente. Le risposte possono quindi essere utilizzate nei passaggi successivi per creare record, inviare email o eseguire qualsiasi altra azione basata sull'input.
<Warning>
**I moduli sono progettati solo per i trigger manuali**. Per i flussi di lavoro con altri trigger (Record Creato, Aggiornato, ecc.), i moduli sono accessibili solo tramite l'interfaccia di esecuzione del flusso di lavoro, il che non è l'esperienza utente prevista. Un centro di notifica sarà rilasciato nel 2026 per supportare adeguatamente i moduli nei flussi di lavoro automatizzati.
</Warning>
**Configurazione**:
* Configura i campi che verranno chiesti agli utenti di compilare. Per ogni campo, scegli
* un tipo tra testo, numero, data, un determinato record, un campo di selezione. I campi di tutti gli oggetti sono disponibili per la selezione.
* un'etichetta
* un valore predefinito sotto `Placeholder` (opzionale)
* Modifica il titolo del modulo
**Output**: Le risposte ai moduli sono disponibili per l'uso in passaggi successivi.
**Esempio**: Il flusso di lavoro "Quick Lead" è disponibile per impostazione predefinita in tutti gli spazi di lavoro, disponibile ovunque nel menu dei comandi `Cmd+K`.
**Come compilare il modulo**:
* Attiva il tuo flusso di lavoro manuale dal menu dei comandi `Cmd+K`
* Compila il modulo visualizzato nel pannello laterale e fai clic su `Submit`.
<Note>
I campi non possono essere resi obbligatori.
</Note>
<VimeoEmbed videoId="1147277989" title="Dimostrazione video" />
## Azioni di integrazione
### Codice
Esegue JavaScript personalizzato all'interno del tuo workflow.
In background, ogni azione Code è supportata dalla propria **logic function**, una funzione TypeScript lato server che viene eseguita sulla piattaforma Twenty. Quando aggiungi un'azione Code, Twenty crea una logic function dedicata per quel passaggio e ne espone l'editor inline, in modo che il codice che scrivi rimanga all'interno del flusso di lavoro.
**Configurazione**:
* Accedi alle variabili dai passaggi precedenti. È possibile modificare i nomi delle variabili dinamicamente.
<VimeoEmbed videoId="1147281795" title="Dimostrazione video" />
* Scrivi il codice JavaScript nell'editor
* Restituisci variabili per l'uso in passaggi successivi
* Verifica il codice direttamente nel passaggio
<Note>
Se devi utilizzare chiavi API esterne nel tuo codice, devi inserirle direttamente nel corpo della funzione. Non puoi configurare le chiavi API altrove e farvi riferimento nella funzione logica.
</Note>
<Tip>
**Lavori con gli array?** Gli array provenienti da sistemi esterni o da passaggi precedenti possono arrivare come stringhe. Vedi [Come gestire gli array nelle azioni Code](/l/it/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions) per la soluzione.
</Tip>
<Tip>
Fai clic sull'icona quadrata in alto a destra dell'editor di codice per visualizzarlo a schermo intero — utile poiché la larghezza predefinita dell'editor è limitata.
</Tip>
#### Riutilizzare una logic function tra i flussi di lavoro
L'azione Code inline è ideale per la logica "usa e getta", ma il codice che contiene appartiene a quel singolo passaggio. Quando vuoi condividere la stessa logica tra vari flussi di lavoro o mantenerla come sorgente versionata in un'app, definisci una **reusable logic function** al posto di copiare e incollare il codice in ogni azione Code.
Una logic function è definita una volta in un'app (usando l'SDK `defineLogicFunction`) ed esposta al generatore di flussi di lavoro aggiungendo `workflowActionTriggerSettings`. Una volta installata l'app, quella funzione compare come azione autonoma nel generatore di flussi di lavoro, insieme alle azioni integrate. Selezionandola, vengono mostrati i campi di input che hai dichiarato (con i selettori di variabili, proprio come per le altre azioni) e viene eseguito il tuo codice condiviso, senza bisogno di JavaScript inline.
| | Code action | Reusable logic function |
| -------------------------- | ----------------------------------------------------------------- | -------------------------------------------------------------------------------- |
| **Dove risiede il codice** | Editor inline, legato a un singolo passaggio del flusso di lavoro | Definita in un'app, sottoposta a versionamento nel controllo del codice sorgente |
| **Riutilizzo** | Copiata e incollata per ogni passaggio | Aggiunta come azione in qualsiasi flusso di lavoro |
| **Input** | Variabili collegate nell'editor | Campi generati dallo schema di input dichiarato |
| **Ideale per** | Logica rapida e specifica del flusso di lavoro | Logica condivisa usata in più flussi di lavoro |
Entrambe vengono eseguite sullo stesso runtime di logic function, quindi un'azione Code che hai prototipato inline può in seguito essere trasformata in una reusable logic function con modifiche minime.
<Tip>
Per le informazioni di riferimento destinate agli sviluppatori sulla definizione delle logic function e sulla loro esposizione al generatore di workflow, vedi [Logic Functions](/l/it/developers/extend/apps/logic/logic-functions), in particolare la sezione **Exposing a function as an AI tool or workflow action** e `workflowActionTriggerSettings`.
</Tip>
### Richiesta HTTP
Invia una richiesta a un API esterno come parte del tuo workflow.
<img src="/images/user-guide/workflows/http_action.png" style={{width:'100%'}} />
**Configurazione**:
* Inserisci l'URL del punto finale dell'API. È possibile utilizzare parametri dai passaggi precedenti.
* Seleziona metodo HTTP (GET, POST, PUT, PATCH, DELETE)
* Aggiungi intestazioni e valori richiesti
* Fornisci una risposta di esempio per l'anteprima della struttura
## Azioni AI
### Agente AI - In arrivo
Esegue un agente AI all'interno del tuo flusso di lavoro per svolgere attività intelligenti.
**Configurazione**:
* **Agente**: Seleziona un agente AI esistente o usa l'agente predefinito
* **Prompt**: Scrivi l'istruzione per l'agente AI
* Fai riferimento a variabili dei passaggi precedenti nel prompt
**Cosa possono fare gli agenti AI**:
* Analizzare e riassumere dati
* Classificare o categorizzare i record
* Generare contenuti testuali
* Prendere decisioni basate sui dati
* Interagire con i dati del tuo CRM utilizzando strumenti
**Output**: La risposta dell'agente AI è disponibile per l'uso nei passaggi successivi. Se l'agente ha uno schema di output strutturato, la risposta seguirà tale formato.
<Note>
Le azioni dell'agente AI consumano crediti del flusso di lavoro in base al modello AI utilizzato. Vedi [Crediti del flusso di lavoro](/l/it/user-guide/workflows/capabilities/workflow-credits) per i dettagli.
</Note>
<Note>
Gli agenti AI rispettano le autorizzazioni basate sui ruoli. Puoi assegnare ruoli specifici agli agenti in **Impostazioni → Membri → Ruoli** per controllare a quali dati possono accedere. Vedi [Autorizzazioni](/l/it/user-guide/permissions-access/capabilities/permissions) per i dettagli.
</Note>

View File

@@ -0,0 +1,66 @@
---
title: Rami Di Workflow
description: Crea percorsi paralleli e logica condizionale nei tuoi flussi di lavoro.
---
I rami ti consentono di suddividere il tuo workflow in più percorsi che possono essere eseguiti simultaneamente o in modo condizionale in base ai tuoi dati.
<img src="/images/user-guide/workflows/branches.png" style={{width:'100%'}} />
## Come funzionano i rami
Quando crei più connessioni da un singolo nodo, ogni percorso diventa un ramo. Per impostazione predefinita, **tutti i rami vengono eseguiti in parallelo**—non si attendono a vicenda.
## Creazione dei rami
### Aggiungi un nuovo ramo
1. **Fai clic con il tasto destro sull'area di lavoro principale** del workflow (non su un nodo esistente)
2. Clicca su **Aggiungi nodo**
3. Scegli il tipo di nodo per il tuo nuovo ramo
4. Trascina una freccia dalla parte inferiore del passaggio precedente alla parte superiore di questa nuova azione
5. Ripeti per aggiungere altri rami dallo stesso nodo
<Note>
Ogni ramo è indipendente. L'aggiunta di un ramo non influisce sugli altri percorsi esistenti da quel nodo.
</Note>
### Layout visivo
I rami appaiono come percorsi paralleli nell'editor del workflow. Puoi trascinare i nodi per riorganizzare il layout visivo senza influire sull'esecuzione.
## Rami condizionali
Poiché tutti i rami vengono eseguiti per impostazione predefinita, usa nodi **Filtro** per controllare quali percorsi vengono effettivamente eseguiti:
| Ramo | Condizione del filtro | Azione |
| ---- | --------------------- | --------------------------------- |
| A | Fase = "Vinta" | Invia un'email di congratulazioni |
| B | Fase = "Persa" | Crea un'attività di follow-up |
| C | Fase = "Negoziazione" | Notifica il responsabile |
1. Crea rami dal tuo trigger o dall'azione
2. Aggiungi un nodo **Filtro** come primo passaggio di ciascun ramo
3. Configura ciascun filtro con condizioni reciprocamente esclusive
4. Aggiungi le azioni dopo ciascun filtro
Solo i rami in cui la condizione del filtro è soddisfatta continueranno l'esecuzione.
## Unione dei rami
**I rami non si uniscono automaticamente.** Ogni ramo viene eseguito in modo indipendente fino a quando non termina. Hai la massima flessibilità su come gestirlo:
* **Opzione 1: Mantieni i rami separati**
Ogni ramo gestisce indipendentemente le proprie azioni di follow-up. Questo è l'approccio più semplice quando i rami non devono convergere.
* **Opzione 2: Unisci i rami manualmente**
Quando crei il tuo workflow, puoi collegare manualmente più rami alla stessa azione a valle. Trascina semplicemente le frecce dalla fine di ciascun ramo a un nodo comune.
<Note>
Sebbene tu possa usare un nodo [Delay](/l/it/user-guide/workflows/capabilities/workflow-actions#delay) per mettere in pausa l'esecuzione, al momento non è configurabile per attendere "fino a quando termina un altro ramo".
</Note>
## Correlati
* [Come usare i rami nei workflow](/l/it/user-guide/workflows/capabilities/use-branches-in-workflows) - Guida passo passo
* [Azioni del workflow](/l/it/user-guide/workflows/capabilities/workflow-actions) - Azioni disponibili, incluso Filtro

View File

@@ -0,0 +1,75 @@
---
title: Crediti del flusso di lavoro
description: Comprendere il consumo e la gestione dei crediti dei flussi di lavoro.
---
I crediti del flusso di lavoro alimentano le tue automazioni in Twenty. Capire come funzionano ti aiuta a ottimizzare i costi e a gestire efficacemente il tuo budget di automazione.
## Allocazione dei crediti
I crediti dei flussi di lavoro sono assegnati in base al ciclo di fatturazione, non al livello del piano:
| Ciclo di fatturazione | Crediti |
| ----------------------- | ------------------- |
| **Abbonamento mensile** | 5 crediti al mese |
| **Abbonamento annuale** | 50 crediti all'anno |
<Note>
5 crediti mensili sono generosi per le automazioni standard. La maggior parte dei team non supererà questo limite con un utilizzo tipico dei flussi di lavoro. I crediti aggiuntivi sono necessari principalmente per le azioni Code avanzate e i flussi di lavoro basati sull'AI.
</Note>
## Come Funziona il Consumo dei Crediti
I crediti vengono consumati quando i flussi di lavoro vengono eseguiti, non quando li crei. Ogni azione del flusso di lavoro consuma crediti in base alla sua complessità:
### Consumo di Crediti per Tipo di Azione
* **Operazioni interne di base**: Consumo di crediti molto basso
* Cerca Record
* Crea Record
* Aggiorna Record
* Elimina Record
* Azioni del modulo
* **Operazioni complesse**: Consumo di crediti più alto
* Azioni di codice (esecuzione JavaScript)
* Richieste HTTP a servizi esterni
* **Funzionalità AI**: Consumo di crediti più elevato
* Le azioni dell'agente AI consumano crediti in base al modello AI utilizzato
* Prompt più complessi e output più lunghi utilizzano più crediti
* **Azioni Delay**: Consumo di crediti minimo
* Il nodo Delay consuma **1 credito** quando viene eseguito
* **Nessun credito viene consumato** durante il periodo di attesa
* Un ritardo di 5 minuti costa quanto un ritardo di 5 giorni
### Deduzione in Tempo Reale
I crediti vengono detratti in tempo reale quando i flussi di lavoro vengono eseguiti. Ciò significa:
* I flussi di lavoro di bozza non consumano crediti
* Solo i flussi di lavoro attivi e in esecuzione utilizzano la tua allocazione di crediti
* I flussi di lavoro falliti consumano comunque crediti per i passaggi completati
## Gestione dei Crediti
### Verifica l'Uso dei Crediti
1. Vai a **Impostazioni → Fatturazione**
2. Visualizza il tuo attuale consumo di crediti e il saldo rimanente
3. Monitora i modelli di utilizzo per ottimizzare i tuoi flussi di lavoro
### Acquisto di Crediti Aggiuntivi
Se hai bisogno di più crediti oltre alla tua assegnazione del piano:
1. Vai a **Impostazioni → Fatturazione**
2. Clicca sull'opzione per acquistare crediti aggiuntivi. Sono disponibili pacchetti di diverse dimensioni.
3. I crediti vengono aggiunti al tuo saldo attuale
## Migliori Pratiche
* **Elaborazione batch**: Utilizza in modo efficiente le operazioni di massa e le azioni di Iteratore per ridurre le singole chiamate di azione
* **Ottimizzazione del trigger manuale**: Per i trigger manuali, scegli la disponibilità `Bulk` per elaborare più record in una singola esecuzione del flusso di lavoro
* Ottimizza le azioni di codice per l'efficienza

View File

@@ -0,0 +1,93 @@
---
title: Esecuzioni del workflow
description: Monitora e gestisci le esecuzioni dei flussi di lavoro.
---
## Informazioni sulle esecuzioni
Un'**Esecuzione** è una registrazione dell'esecuzione di un flusso di lavoro. Ogni volta che un flusso di lavoro viene attivato — che sia da un evento di record, una pianificazione, un'azione manuale o un webhook — viene creata una nuova esecuzione.
## Visualizzazione delle esecuzioni
### Dall'editor del flusso di lavoro
1. Apri il flusso di lavoro che desideri monitorare
2. Fai clic sul pannello **Esecuzioni** a destra
3. Visualizza un elenco delle esecuzioni recenti con il relativo stato
### Dalla vista Esecuzioni dei flussi di lavoro
1. Vai a **Esecuzioni dei flussi di lavoro** nella barra laterale
2. Visualizza le esecuzioni in tutti i flussi di lavoro
3. Filtra per stato, flusso di lavoro o data
## Stati delle esecuzioni
| Stato | Descrizione |
| ----------------- | ------------------------------------------------------------------------------------------------- |
| **In esecuzione** | Il flusso di lavoro è in esecuzione |
| **Completato** | Il flusso di lavoro è terminato correttamente |
| **Non riuscito** | Il flusso di lavoro ha riscontrato un errore ed è stato interrotto |
| **In attesa** | Il flusso di lavoro è in pausa (ad es., in attesa di un'azione Ritardo o dell'invio di un modulo) |
## Dettagli dell'esecuzione
Fai clic su una qualsiasi esecuzione per visualizzare:
* **Stato**: stato attuale dell'esecuzione
* **Ora di avvio**: quando è iniziata l'esecuzione
* **Durata**: quanto è durata l'esecuzione
* **Dati del trigger**: l'input che ha avviato il flusso di lavoro
* **Output dei passaggi**: dati restituiti da ciascun passaggio
* **Messaggi di errore**: se l'esecuzione non è riuscita, cosa è andato storto
## Esecuzione passo dopo passo
Ogni esecuzione mostra l'avanzamento nel flusso di lavoro:
1. Vedi quali passaggi sono stati completati correttamente
2. Identifica dove si sono verificati errori
3. Visualizza i dati scambiati tra i passaggi
4. Esegui il debug dei problemi esaminando gli input e gli output dei passaggi
## Gestione degli errori
Quando un'esecuzione non riesce:
1. Apri l'esecuzione non riuscita
2. Trova il passaggio che ha causato l'errore
3. Controlla il messaggio di errore per i dettagli
Problemi comuni:
* Campi obbligatori mancanti
* Formato dati non valido
* Errori dell'API esterna
* Problemi di autorizzazione
## Riesecuzione dei flussi di lavoro
Se un'esecuzione non riesce, puoi:
* Correggere il problema di base e attendere il trigger successivo
* Per i flussi di lavoro manuali, attiva nuovamente il flusso con gli stessi dati o con dati aggiornati
* Rivedere la logica del flusso di lavoro per evitare errori futuri
## Consigli Per Prestazioni
### Gestire La Cronologia Esegui
* Le corse sono mantenute per riferimento storico
* Le corse molto vecchie possono essere archiviate automaticamente
* Esporta i dati di esecuzione se hai bisogno di mantenere i record
### Monitoraggio Delle Migliori Pratiche
* Controlla viene eseguito regolarmente dopo aver attivato nuovi flussi di lavoro
* Revisione non riuscita per identificare i modelli
## Correlati
* [Trigger dei flussi di lavoro](/l/it/user-guide/workflows/capabilities/workflow-triggers)
* [Azioni dei flussi di lavoro](/l/it/user-guide/workflows/capabilities/workflow-actions)
* [Workflow Troubleshooting](/l/it/user-guide/workflows/how-tos/need-more-help/workflow-troubleshooting)

View File

@@ -0,0 +1,137 @@
---
title: Attivatori dei flussi di lavoro
description: Scopri i diversi attivatori che avviano i tuoi flussi di lavoro.
---
## Informazioni sugli attivatori
I flussi di lavoro iniziano sempre con un singolo attivatore che definisce quando deve essere eseguita l'automazione.
<img src="/images/user-guide/workflows/workflow_triggers.png" style={{width:'100%'}} />
<Tip>
**Gli oggetti avanzati sono supportati!** Oltre agli oggetti CRM standard (Persone, Aziende, Opportunità), puoi anche avviare flussi di lavoro ed eseguire azioni su:
* Membri dello spazio di lavoro
* Eventi del calendario
* Messaggi (email)
* Attività, note e molti altri oggetti di sistema
Questo consente potenti automazioni, come notificare i membri del team quando vengono creati eventi del calendario oppure elaborare automaticamente le email in arrivo.
</Tip>
## Record Creato
Avvia il flusso di lavoro quando viene creato un nuovo record in un oggetto selezionato (Persone, Aziende, Opportunità o un qualsiasi oggetto personalizzato).
**Configurazione**: Seleziona il tipo di oggetto da monitorare per i nuovi record.
<Note>
* Questo trigger è ottimo per i record creati da CSV, mailbox e sincronizzazione del calendario, o API.
* **Non è consigliato per i record creati manualmente**: con questo attivatore, i flussi di lavoro iniziano non appena il record viene creato. Dal momento che Twenty UI offre il salvataggio automatico sul volo (non c'è alcuna modalità di modifica e quindi una convalida per salvare i record), il flusso di lavoro verrà attivato prima che l'utente inserisca tutti i campi.
Per attivare questo flusso di lavoro sui record creati manualmente, si consiglia invece di usare l'attivatore `Record is created or updated`.
</Note>
## Record Aggiornato
Avvia il flusso di lavoro quando vengono apportate modifiche a un record esistente.
**Configurazione**:
* Seleziona il tipo di oggetto
* Specifica opzionalmente quali campi monitorare per le modifiche
## Record Aggiornato o Creato
Avvia il flusso di lavoro quando un record viene creato o aggiornato in un oggetto selezionato.
**Perché è Importante:** Questo trigger è particolarmente utile perché i record creati tramite diversi metodi si comportano diversamente:
* **Importazioni API/CSV:** I record vengono creati con tutti i campi popolati immediatamente
* **Creazione manuale:** Prima vengono creati i record, poi i campi vengono aggiunti con aggiornamenti successivi
**Configurazione**:
* Seleziona il tipo di oggetto da monitorare
* Specifica opzionalmente quali campi monitorare per le modifiche
* Il flusso di lavoro verrà attivato sia alla creazione iniziale sia a qualsiasi aggiornamento successivo
## Record Eliminato
Avvia il flusso di lavoro quando un record viene rimosso da un oggetto.
**Configurazione**: Seleziona il tipo di oggetto da monitorare per le eliminazioni.
## Attivatore manuale
Avvia il flusso di lavoro quando viene attivato da un'azione dell'utente. È possibile accedere a questo attivatore tramite il menu `Cmd+K` o tramite un pulsante personalizzato che verrà visualizzato nella barra di navigazione superiore dopo aver selezionato uno o più record.
<img src="/images/user-guide/workflows/add_to_newsletter_button.png" style={{width:'100%'}} />
**Configurazione di Disponibilità:**
Scegli come il flusso di lavoro dovrebbe gestire la selezione dei record:
* **Globale:** Non è richiesto alcun record per attivare questo flusso di lavoro. Il flusso di lavoro viene attivato dal menu di comando `Cmd+K` ovunque (da qualsiasi oggetto) e non usa i record come input.
Per la disponibilità **Single** e **Bulk**, i record selezionati saranno passati al tuo flusso di lavoro. Questo è configurato per un dato oggetto, e diversi record possono essere selezionati prima di attivare il flusso di lavoro.
* **Singolo**: Il flusso di lavoro verrà eseguito dall'inizio alla fine quante volte ci sono record selezionati.
<Note>
**Limite soft: 100 esecuzioni/minuto**. Oltre questa soglia, i flussi di lavoro rimangono nello stato "Not Started" e vengono elaborati gradualmente—o da un processo in background oppure quando un altro flusso di lavoro entra in coda. Questo significa che puoi selezionare più di 100 record con un attivatore Singolo; l'esecuzione sarà semplicemente più lenta.
</Note>
* **Bulk**: Il flusso di lavoro verrà eseguito una volta, fornendo l'intero elenco di record come input. Questo significa che il flusso di lavoro deve contenere un'[azione Iteratore](/l/it/user-guide/workflows/capabilities/workflow-actions#iterator).
<Note>
È più avanzato ed è ideale per chi vuole ottimizzare il numero di esecuzioni del flusso di lavoro.
</Note>
<img src="/images/user-guide/workflows/manual_trigger.png" style={{width:'100%'}} />
**Configurazione Aggiuntiva**:
* Seleziona l'oggetto di destinazione (per disponibilità Singola e Bulk)
* Scegli un'icona di comando per attivare il flusso di lavoro.
* Configura la posizione nella barra di navigazione (Fissa o Non Fissa)
**Metodi di Accesso**:
* Menu `Cmd+K` per trovare e avviare flussi di lavoro manuali
* Pulsante personalizzato nella barra di navigazione in alto (se configurato)
## Attivatore basato sul tempo: Su pianificazione
Avvia il flusso di lavoro con una ricorrenza da te definita.
**Configurazione**:
* Seleziona l'unità di tempo (minuti, ore, giorni)
* Inserisci un valore o usa espressioni cron personalizzate per pianificazioni avanzate
<Note>
**Fuso orario**: I flussi di lavoro pianificati vengono eseguiti in **UTC**. Quando imposti gli orari per le pianificazioni giornaliere, converti la tua ora locale in UTC.
</Note>
## Attivatore esterno: Webhook
Avvia il flusso di lavoro quando viene ricevuta una richiesta GET o POST da un servizio esterno.
<img src="/images/user-guide/workflows/webhook_trigger.png" style={{width:'100%'}} />
**Configurazione**:
* Il flusso di lavoro fornisce un URL webhook univoco: copialo e aggiungilo al tuo sistema esterno come endpoint da chiamare.
* Per le richieste POST, definisci la struttura del body prevista in modo che Twenty sappia quali dati aspettarsi. Aggiungi qui i campi che riceverai e che saranno necessari più avanti nel tuo flusso di lavoro.
* Configura l'autenticazione (presto disponibile).
## Scegliere l'attivatore giusto
| Caso d'uso | Attivatore consigliato |
| ------------------------------------- | --------------------------- |
| Nuovi lead da elaborare | Record Creato |
| Modifiche ai dati da sincronizzare | Record Aggiornato |
| Gestione dati da importazione/manuale | Record Aggiornato o Creato |
| Pulizia dopo l'eliminazione | Record Eliminato |
| Azione avviata dall'utente | Avvia Manualmente |
| Report ricorrenti | Su pianificazione |
| Integrazione esterna | Webhook o Su pianificazione |

View File

@@ -0,0 +1,84 @@
---
title: Versioni del workflow
description: Gestisci le versioni e le bozze dei workflow.
---
## Informazioni sulle versioni
Ogni volta che attivi un workflow, viene creata una nuova versione. Questo ti permette di tenere traccia delle modifiche nel tempo e ripristinare le configurazioni precedenti se necessario.
## Stati delle versioni
| Stato | Descrizione |
| --------------- | --------------------------------------------- |
| **Bozza** | In fase di modifica, non ancora pubblicata |
| **Attivo** | Versione live che risponde ai trigger |
| **Disattivato** | In precedenza attivo ma fermato manualmente |
| **Archiviato** | Versioni passate conservate per la cronologia |
## Lavorare con le bozze
Quando modifichi un workflow attivo, le modifiche vengono salvate come **bozza**. La versione attiva continua a essere eseguita mentre lavori agli aggiornamenti.
Una volta terminata la modifica, puoi:
* **Attiva**: Pubblica la bozza come nuova versione attiva (la versione precedente viene archiviata)
* **Scarta**: Elimina la bozza e mantieni l'attuale versione attiva
## Cronologia Versioni
### Visualizzare le versioni precedenti
1. Apri il workflow
2. Fai clic sulla scheda **Versioni**
3. Visualizza tutte le versioni precedenti con timestamp
### Ripristinare una versione
1. Trova la versione che desideri ripristinare
2. Fai clic su **Usa come bozza**
3. La versione viene copiata in una nuova bozza
4. Apporta gli aggiornamenti necessari
5. Attiva quando sei pronto
## Migliori Pratiche
### Gestione delle versioni
* Attiva solo quando pronta per la produzione
* Mantieni modifiche significative tra le versioni
* Documenta le modifiche importanti nei nomi o nelle descrizioni dei workflow
* Testa in modalità bozza prima di attivare i workflow
### Ripristino delle modifiche
* Se una nuova versione causa problemi, ripristina la versione precedente
* Usa la cronologia delle versioni per tenere traccia delle modifiche
* Testa sempre le versioni ripristinate prima di attivare
## Workflow comuni
### Modifica rapida
1. Apporta piccole modifiche a un workflow attivo
2. Testa in modalità bozza
3. Attiva la nuova versione
### Revisione importante
1. Usa la versione precedente come punto di partenza
2. Apporta modifiche significative in bozza
3. Testa approfonditamente tutti gli scenari
4. Attiva quando sei sicuro
### Ripristino
1. Identifica il problema con la versione corrente
2. Trova nella cronologia l'ultima versione funzionante
3. Fai clic su **Usa come bozza**
4. Attiva per ripristinare il comportamento precedente
## Correlati
* [Guida introduttiva ai workflow](/l/it/user-guide/workflows/overview)
* [Esecuzioni dei workflow](/l/it/user-guide/workflows/capabilities/workflow-runs)