Tutte le guide
HRIntermedio

Gestione ferie e permessi automatizzata con n8n

Costruisci un workflow per le richieste di ferie con approvazione via Slack, aggiornamento automatico del calendario e notifiche HR

30 marzo 20266 min readIntermedio

Panoramica

La gestione delle ferie e dei permessi è uno dei processi HR più frequenti e più soggetti a inefficienze. Email perse, approvazioni dimenticate, calendari non aggiornati: sono problemi comuni che rallentano tutti. Con n8n puoi creare un sistema in cui il dipendente invia la richiesta da un form, il manager approva o rifiuta direttamente da Slack, il calendario del team si aggiorna automaticamente e HR riceve tutte le notifiche necessarie.

Prerequisiti

  • Istanza n8n funzionante con URL pubblico (necessario per i webhook Slack)
  • Workspace Slack con app configurata (permessi: chat:write, chat:update, users:read)
  • Google Calendar condiviso per il team
  • Google Sheets per il tracciamento delle richieste e dei saldi ferie
  • Form di richiesta (Google Form o form custom)

Step 1: Form di richiesta ferie

Crea un Google Form con i seguenti campi:

  • Email dipendente (validazione formato email)
  • Tipo di richiesta (ferie, permesso, malattia, lavoro da remoto)
  • Data inizio (formato data)
  • Data fine (formato data)
  • Note (campo testo opzionale per motivazioni o dettagli)

Configura il form per salvare le risposte in un Google Sheets dedicato. Aggiungi manualmente queste colonne al foglio: Stato (in attesa, approvata, rifiutata), Manager, Data risposta, Note manager.

In n8n, usa un nodo Google Sheets Trigger impostato per controllare nuove righe ogni minuto. In alternativa, se preferisci una risposta istantanea, configura un nodo Webhook e crea un form web custom che invia i dati direttamente a n8n.

Step 2: Validazione e calcolo giorni

Dopo aver ricevuto la richiesta, esegui le validazioni necessarie:

Aggiungi un nodo Code che:

  1. Calcola i giorni richiesti: conta i giorni lavorativi tra la data di inizio e la data di fine, escludendo sabati, domeniche e festività italiane. Crea un array con le date delle festività nazionali e controlla ogni giorno del periodo.

  2. Verifica il saldo ferie: leggi il foglio Google Sheets dei saldi ferie per trovare il dipendente e verificare che abbia giorni disponibili sufficienti. Se il saldo è insufficiente, il workflow si ferma e notifica il dipendente.

  3. Controlla sovrapposizioni: verifica che non ci siano già troppe persone dello stesso team in ferie nello stesso periodo. Leggi le richieste approvate dal foglio e conta quante persone del team sono assenti nelle date richieste. Se la percentuale supera il 30% del team, segnala il conflitto al manager nella notifica.

  4. Identifica il manager: in base al reparto o alla struttura gerarchica (salvata in un foglio di riferimento), recupera lo Slack ID del manager che deve approvare la richiesta.

Step 3: Notifica al manager con bottoni Slack

Questo è il passaggio chiave: il manager riceve una notifica Slack interattiva con tutte le informazioni e i pulsanti per approvare o rifiutare.

Usa il nodo Slack per inviare un messaggio con Block Kit che include:

  • Nome del dipendente e reparto
  • Tipo di richiesta (ferie, permesso, ecc.)
  • Date richieste e numero di giorni
  • Saldo ferie residuo del dipendente
  • Eventuali conflitti con altre assenze del team
  • Due pulsanti: "Approva" e "Rifiuta"

I pulsanti Slack sono implementati come interactive components che inviano una richiesta POST a un webhook n8n quando vengono cliccati. Configura un secondo nodo Webhook nel workflow (o un workflow separato) che riceve la risposta del manager.

Il payload del bottone Slack contiene un action_id personalizzato e un value che include l'ID della richiesta. Quando il webhook riceve la risposta, puoi identificare quale richiesta è stata approvata o rifiutata.

Step 4: Processare la risposta del manager

Quando il manager clicca un bottone, il webhook riceve i dati della sua decisione. Aggiungi un nodo Switch che instrada il flusso in base all'azione:

Se approvata:

  1. Aggiorna il foglio Google Sheets: imposta lo stato su "approvata", inserisci la data di risposta e il nome del manager
  2. Aggiorna il saldo ferie del dipendente sottraendo i giorni approvati
  3. Crea un evento su Google Calendar condiviso del team con il nome del dipendente e il tipo di assenza
  4. Aggiorna il messaggio Slack originale per mostrare "Approvata da [Manager]" al posto dei bottoni
  5. Notifica il dipendente su Slack con un messaggio diretto che conferma l'approvazione

Se rifiutata:

  1. Aggiorna il foglio Google Sheets con stato "rifiutata"
  2. Aggiorna il messaggio Slack originale per mostrare "Rifiutata da [Manager]"
  3. Notifica il dipendente su Slack con un messaggio che include le eventuali note del manager. Per le note, puoi aggiungere un modal Slack che si apre quando il manager clicca "Rifiuta", chiedendo una motivazione.

Step 5: Notifiche HR e reportistica

HR deve avere visibilità completa su tutte le richieste:

Notifica in tempo reale: ogni volta che una richiesta viene approvata o rifiutata, invia un riepilogo al canale Slack #hr con i dettagli completi.

Report settimanale: crea un workflow separato con un Schedule Trigger che esegue ogni lunedi alle 9:00. Il workflow:

  1. Legge tutte le richieste della settimana precedente dal foglio Google Sheets
  2. Aggrega i dati: richieste totali, approvate, rifiutate, in attesa
  3. Calcola i giorni di ferie consumati per reparto
  4. Genera un messaggio formattato e lo invia al canale #hr

Report mensile: un workflow analogo che esegue il primo giorno di ogni mese con statistiche aggregate: media giorni ferie per dipendente, reparti con più assenze, trend rispetto al mese precedente.

Step 6: Gestione delle cancellazioni

Aggiungi un meccanismo per cancellare o modificare richieste già approvate:

Crea un form separato (o aggiungi una sezione al form originale) dove il dipendente può indicare l'ID della richiesta da cancellare. Un nodo Google Sheets cerca la richiesta e verifica che sia dello stesso dipendente.

Se la richiesta è in futuro e ancora in stato "approvata":

  1. Cambia lo stato in "cancellata" sul foglio
  2. Ripristina i giorni nel saldo ferie del dipendente
  3. Elimina l'evento dal Google Calendar
  4. Notifica il manager e HR della cancellazione

Se la data di inizio è già passata, la cancellazione non è possibile automaticamente: il workflow notifica HR per una gestione manuale.

Consigli per il setup iniziale

  • Foglio saldi ferie: prepara un Google Sheets con nome, email, reparto, giorni totali annuali, giorni usati, giorni residui. Aggiornalo all'inizio dell'anno.
  • Festività: mantieni una lista aggiornata delle festività italiane nel nodo Code o in un foglio dedicato. Le festività fisse sono: 1 e 6 gennaio, 25 aprile, 1 maggio, 2 giugno, 15 agosto, 1 novembre, 8, 25 e 26 dicembre. Pasqua e Pasquetta cambiano ogni anno.
  • Permessi vs ferie: usa il campo "tipo" per distinguere e gestire saldi separati se necessario.

Con questo sistema attivo, il processo di gestione ferie diventa trasparente, tracciabile e quasi completamente automatico.

Altre guide HR