Passer au contenu principal

Comment gérer de bout en bout les demandes de congé des employés et leur approbation dans Formaloo

Créez dans Formaloo un processus de demande de congé avec acheminement vers l’e-mail du responsable, une vérification de couverture signalée par l’IA et des e-mails d’approbation automatiques.

Ce que vous allez créer

À la fin de ce guide, vous disposerez d’un formulaire unique de demande de congé qui s’achemine automatiquement vers le responsable indiqué par l’employé, sans hiérarchie d’approbation fixe. Chaque demande fait l’objet d’une vérification de couverture générée par l’IA qui signale les conflits de planning avant tout examen, et les changements de Status déclenchent automatiquement le bon e-mail à l’employé. L’équipe People Ops travaille depuis un pipeline Kanban interne avec des vues filtrées pour les demandes en attente, approuvées, refusées et non rémunérées.

Quand l’utiliser

  • Votre entreprise gère encore les demandes de congé par e-mail, et les approbations restent enfouies pendant des jours dans une boîte de réception

  • Votre système RH ne comporte pas de hiérarchie fixe : « acheminer vers le responsable de l’employé » doit donc s’appuyer sur l’adresse e-mail fournie par l’employé, et non sur un organigramme prédéfini

  • Les RH souhaitent disposer d’une analyse interne et confidentielle indiquant si une demande chevauche d’autres congés approuvés avant toute validation

  • Vous avez besoin d’un endroit unique pour consulter les congés approuvés par période, sans exporter de tableurs chaque fois que quelqu’un pose la question

Partie 1 — Créer le formulaire de demande de congé

C’est le seul formulaire du processus. Les employés remplissent la section publique lorsqu’ils soumettent une demande ; les champs Status, Assignee et Internal notes sont réservés aux administrateurs et se trouvent dans le même enregistrement, de sorte que l’équipe People Ops examine tout depuis un seul endroit au lieu d’un système distinct.

1. Ouvrez le Form Creation Agent : depuis votre page d’accueil Formaloo, cliquez sur Form Creation Agent. Collez l’instruction ci-dessous, puis cliquez sur Create.

Crée un formulaire de demande de congé d’une seule page destiné aux employés. Champs publics : nom complet (texte court), adresse e-mail professionnelle (champ e-mail), service (liste déroulante : Engineering, Sales, Marketing, Support, Finance, HR, Operations, Other), type de congé (liste déroulante : Vacation, Sick leave, Personal, Bereavement, Parental leave, Unpaid leave), date de début (champ date), date de fin (champ date), motif du congé (texte long, obligatoire), adresse e-mail du responsable chargé de l’examen (champ e-mail). Ajoute également un champ d’énoncé masqué intitulé « Avertissement de date » contenant le texte « Votre date de fin est antérieure à votre date de début. Veuillez vérifier avant de soumettre. » Ajoute ces champs réservés aux administrateurs : Status sous forme de liste déroulante avec les options Submitted, Awaiting manager review, Approved, Rejected ; un champ Assignee intitulé Assignee ; et Internal notes sous forme de champ de texte long.

2. Vérifiez vos champs : votre formulaire devrait maintenant correspondre au tableau ci-dessous. Le Form Creation Agent aura généré automatiquement la majeure partie de cette structure. Ouvrez les paramètres de chaque champ et vérifiez que l’ID du champ correspond exactement, car la logique, les e-mails et le modèle PDF font tous référence à ces ID.

Champ (formulation de la question)

L’ID du champ

Type

Section

Quel est votre nom complet ?

employee_name

Texte court

Public

Quelle est votre adresse e-mail professionnelle ?

employee_email

E-mail

Public

Dans quel service travaillez-vous ?

department

Liste déroulante

Public

Quel type de congé demandez-vous ?

leave_type

Liste déroulante

Public

Quand votre congé commence-t-il ?

start_date

Date

Public

Quand votre congé se termine-t-il ?

end_date

Date

Public

Quel est le motif de votre demande de congé ?

reason

Texte long, obligatoire

Public

Quelle est l’adresse e-mail de votre responsable ?

manager_email

E-mail

Public

Avertissement de date

date_warning

Énoncé, masqué par défaut

Public

Status

status

Liste déroulante : Submitted / Awaiting manager review / Approved / Rejected

Administrateurs uniquement

Assignee

assignee

Assignee

Administrateurs uniquement

Notes internes

internal_notes

Texte long

Administrateurs uniquement

📖 Consultez Que sont les champs réservés aux administrateurs et à quoi servent-ils pour comprendre en quoi Status, Assignee et Internal notes se comportent différemment des champs qui les précèdent.

3. Ajoutez le champ de vérification de couverture : cliquez sur Add field et choisissez Agent Field. Il est réservé aux administrateurs par défaut. Intitulez-le « Vérification de couverture » et attribuez-lui l’ID de champ coverage_check, puis ouvrez sa zone d’instruction et saisissez : « À partir de @department, @leave_type, @start_date et @end_date, vérifie si cette demande chevauche d’autres congés déjà approuvés dans le même service. Signale tout chevauchement ou conflit avec une période d’interdiction en un court paragraphe, ou indique qu’il n’y a aucun conflit. » Utilisez le menu @ pour insérer chaque champ plutôt que de saisir les noms des champs de mémoire.

Remarque : l’Agent Field est disponible avec les forfaits Business et Enterprise. Il s’exécute automatiquement à chaque soumission, sans étape distincte pour le déclencher, et reste toujours réservé aux administrateurs : l’employé ne le voit donc jamais.

💡 Vous voulez une vue complète du fonctionnement de ce champ, y compris la raison pour laquelle son résultat peut arriver légèrement après le reste de la soumission ? Comment générer une analyse IA des soumissions de formulaires sans la montrer aux répondants dans Formaloo explique tout en détail.

4. Publiez le formulaire : cliquez sur Publish dans la barre flottante en haut de l’éditeur.

Partie 2 — Créer vos modèles d’e-mail

Trois modèles se déclenchent automatiquement à mesure que la demande avance dans le processus : une demande d’examen au responsable, un avis d’approbation à l’employé et un avis de refus à l’employé. Créez-les tous les trois dès maintenant afin qu’ils soient prêts à être associés à la logique dans la partie 4.

1. Ouvrez l’éditeur de modèles d’e-mail : cliquez sur l’icône de votre profil → Apps & integrations → Custom email templates → Add new template.

2. Créez chacun des trois modèles : attribuez à chacun un nom et un objet, puis videz le champ du corps, ajoutez un bloc AI Content et collez l’instruction indiquée ci-dessous. Enregistrez chaque modèle avant de passer au suivant.

Manager review request (au responsable chargé de l’examen) Objet : Nouvelle demande de congé de @employee_name à examiner Instruction IA : « Rédige un e-mail clair et efficace informant un responsable qu’un membre de son équipe a soumis une demande de congé qui nécessite son examen. Mentionne le nom de l’employé (@employee_name), le type de congé (@leave_type), la date de début (@start_date), la date de fin (@end_date) et le motif (@reason) s’il a été indiqué. Adopte un ton neutre et professionnel : il s’agit d’une notification interne de routine, pas d’un argumentaire commercial. Indique clairement ce qui est demandé : examiner la demande et communiquer la décision aux RH. 3 à 4 phrases, moins de 80 mots. » Design : fond blanc, colonne unique centrée, largeur maximale de 560px, police Inter/system-ui. Présente les détails du congé sous forme de tableau de données clé-valeur compact plutôt qu’en texte continu. Pied de page discret en #999 avec un espace réservé pour le nom de l’entreprise.

Leave approved (à l’employé) Objet : Votre demande de congé a été approuvée Instruction IA : « Rédige un e-mail de confirmation chaleureux et bref destiné à un employé dont la demande de congé a été approuvée. Mentionne son type de congé (@leave_type), sa date de début (@start_date) et sa date de fin (@end_date). Reste positif mais concis, et ajoute une phrase lui rappelant de transmettre tout travail en cours avant son absence. Ton cordial et professionnel. 3 à 4 phrases, moins de 70 mots. » Design : même mise en page que ci-dessus, avec un petit badge de statut vert « Approuvé » en haut et les dates présentées dans le même tableau de données compact.

Leave rejected (à l’employé) Objet : Mise à jour concernant votre demande de congé Instruction IA : « Rédige un e-mail calme et respectueux informant un employé que sa demande de congé n’a pas été approuvée. Mentionne son type de congé (@leave_type) et les dates demandées (@start_date, @end_date) sans t’y attarder. Évite tout langage dur ou bureaucratique, et invite l’employé à contacter son responsable ou les RH pour discuter des dates ou d’alternatives. Ton : empathique, sans être sur la défensive, et jamais excessivement désolé au point de paraître hésitant. 3 à 4 phrases, moins de 70 mots. » Design : même mise en page, avec un badge de statut ambre discret (et non rouge) « Non approuvé », afin que les deux e-mails de décision forment un ensemble cohérent.

📖 Consultez comment créer et envoyer des modèles d’e-mail personnalisés pour une présentation complète de l’éditeur de modèles, y compris la génération du design HTML par l’IA à partir d’une instruction.

Partie 3 — Créer votre modèle PDF

Un modèle PDF unique consigne le résultat une fois la décision prise : informations sur l’employé et le responsable, dates et motif du congé, vérification de couverture générée par l’IA et statut final. La logique le génère automatiquement dans la partie 4. Ici, vous vous contentez de le créer.

1. Ouvrez l’éditeur de modèles PDF : cliquez sur l’icône de votre profil → Apps & integrations → Custom PDF templates → Add new template.

2. Passez en vue HTML et collez le modèle ci-dessous : il utilise l’insertion des réponses pour intégrer les valeurs des champs, notamment @rowid pour le numéro de référence et @created_at pour la date de soumission. Il est organisé en trois sections : Employé, Détails du congé et Examen interne, cette dernière regroupant le badge de Status, la personne chargée de l’examen, la vérification de couverture et les notes internes, c’est-à-dire tout ce que la version de ces données destinée à l’employé ne doit jamais contenir.

Leave request decision record

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Leave Request Decision Record</title> <style>   * { box-sizing: border-box; }   body {     margin: 0;     padding: 0;     background: #ffffff;     font-family: 'Inter', system-ui, -apple-system, sans-serif;     color: #1a1a1a;   }   .page {     max-width: 760px;     margin: 0 auto;     padding: 60px 72px;   }    /* Header */   .header {     margin-bottom: 40px;   }   .header h1 {     font-size: 22px;     font-weight: 600;     margin: 0 0 12px 0;     color: #1a1a1a;   }   .header-meta {     display: flex;     gap: 32px;     font-size: 12px;     color: #999999;   }   .header-meta span strong {     color: #555555;     font-weight: 500;   }    /* Status badge */   .status-badge {     display: inline-block;     font-size: 11px;     font-weight: 600;     letter-spacing: 0.04em;     text-transform: uppercase;     padding: 4px 11px;     border-radius: 20px;     background: #f2f2f2;     color: #666666;   }    /* Sections */   .section {     margin-bottom: 32px;   }   .section-title {     font-size: 10px;     font-weight: 600;     text-transform: uppercase;     letter-spacing: 0.08em;     color: #aaaaaa;     margin-bottom: 14px;   }    /* Field grid */   .field-grid {     display: grid;     grid-template-columns: 1fr 1fr;     gap: 0 32px;   }   .field-full {     grid-column: 1 / -1;   }   .field {     padding: 10px 0;     border-bottom: 1px solid #ececec;   }   .field-label {     font-size: 11px;     color: #999999;     margin-bottom: 4px;   }   .field-value {     font-size: 14px;     color: #1a1a1a;     line-height: 1.5;   }    /* Internal note inset */   .internal-block {     background: #f9f9f9;     border-left: 3px solid #dcdcdc;     padding: 14px 18px;     font-size: 13px;     color: #555555;     line-height: 1.6;     border-radius: 0 4px 4px 0;   }    /* Footer */   .footer {     margin-top: 56px;     padding-top: 20px;     border-top: 1px solid #ececec;     display: flex;     justify-content: space-between;     font-size: 11px;     color: #999999;   } </style> </head> <body>   <div class="page">      <div class="header">       <h1>Leave Request Decision Record</h1>       <div class="header-meta">         <span><strong>Reference:</strong> LR-@rowid</span>         <span><strong>Submitted:</strong> @created_at</span>       </div>     </div>      <div class="section">       <div class="section-title">Employee</div>       <div class="field-grid">         <div class="field">           <div class="field-label">Full name</div>           <div class="field-value">@employee_name</div>         </div>         <div class="field">           <div class="field-label">Work email</div>           <div class="field-value">@employee_email</div>         </div>         <div class="field">           <div class="field-label">Department</div>           <div class="field-value">@department</div>         </div>         <div class="field">           <div class="field-label">Reviewing manager</div>           <div class="field-value">@manager_email</div>         </div>       </div>     </div>      <div class="section">       <div class="section-title">Leave details</div>       <div class="field-grid">         <div class="field">           <div class="field-label">Leave type</div>           <div class="field-value">@leave_type</div>         </div>         <div class="field">           <div class="field-label">Duration</div>           <div class="field-value">@start_date &nbsp;&rarr;&nbsp; @end_date</div>         </div>         <div class="field field-full">           <div class="field-label">Reason</div>           <div class="field-value">@reason</div>         </div>       </div>     </div>      <div class="section">       <div class="section-title">Internal review</div>       <div class="field-grid">         <div class="field">           <div class="field-label">Status</div>           <div class="field-value"><span class="status-badge">@status</span></div>         </div>         <div class="field">           <div class="field-label">Reviewed by</div>           <div class="field-value">@assignee</div>         </div>         <div class="field field-full">           <div class="field-label">Coverage check (AI-generated, internal use only)</div>           <div class="internal-block">@coverage_check</div>         </div>         <div class="field field-full" style="border-bottom: none; margin-top: 14px;">           <div class="field-label">Internal notes</div>           <div class="field-value">@internal_notes</div>         </div>       </div>     </div>      <div class="footer">       <span>Confidential — internal HR record, not for external distribution</span>       <span>@form_title</span>     </div>    </div> </body> </html>

Conservé comme dossier d’audit RH pour chaque décision : informations sur l’employé et le responsable, type et dates du congé, motif, vérification de couverture et statut final, le tout dans un seul document.

📖 Consultez comment créer des modèles PDF pour transformer les réponses en documents pour une présentation complète de l’éditeur.

Partie 4 — Automatiser l’acheminement et les approbations avec la logique avancée

C’est ici que le processus prend forme. Un ensemble de règles attribue chaque nouvelle demande à l’équipe People Ops, envoie un e-mail au responsable chargé de l’examen, avertit l’employé en cas d’incohérence des dates et, une fois la décision prise, envoie un e-mail à l’employé et génère le PDF de décision. Le Logic Agent peut tout créer à partir d’une seule instruction.

1. Ouvrez le Logic Agent : dans l’éditeur de formulaire, ouvrez Advanced logic depuis le panneau des paramètres du formulaire, à droite, puis accédez à l’onglet Logic. Cliquez sur Logic Agent dans le coin supérieur droit.

💡 Vous souhaitez une règle qui se déclenche dès la première soumission d’une demande, plutôt qu’une règle qui réagit chaque fois que l’enregistrement est modifié par la suite ? Qu’est-ce que la logique On Submit et comment fonctionne-t-elle et Qu’est-ce que la logique On Update et comment fonctionne-t-elle expliquent la différence.

2. Décrivez l’ensemble du processus en une seule instruction : collez l’instruction ci-dessous et cliquez sur Generate rules.

Lorsque le formulaire est soumis : attribue l’enregistrement à l’équipe People Ops, définis le statut sur « Awaiting manager review » et envoie l’e-mail « Manager review request » à l’adresse du champ e-mail du responsable. Lorsque la date de fin est antérieure à la date de début, affiche le champ « Avertissement de date », masqué par défaut. Lorsque le statut passe à « Approved » : envoie l’e-mail « Leave approved » à l’adresse du champ e-mail de l’employé et génère le PDF de décision de la demande de congé. Lorsque le statut passe à « Rejected » : envoie l’e-mail « Leave rejected » à l’adresse du champ e-mail de l’employé et génère le PDF de décision de la demande de congé.

3. Vérifiez et approuvez chaque règle : l’IA présente un aperçu de chaque règle créée. Approuvez, refaites ou annulez chacune individuellement, puis vérifiez que le bon modèle d’e-mail est sélectionné pour chaque action « Send email » et le bon modèle PDF pour chaque action « Generate PDF ».

4. Enregistrez votre logique : cliquez sur Save dans le coin supérieur droit.

Remarque : le champ de vérification de couverture est généré après la création de la ligne de réponse : si vous souhaitez également l’insérer dans un e-mail On Submit, la valeur peut donc arriver vide. C’est pourquoi le PDF de décision, qui y fait référence, est généré On Update, une fois que l’équipe People Ops a eu le temps d’examiner la demande.

Partie 5 — Configurer les pages People Ops

Aucun portail client n’est nécessaire ici. Les employés soumettent leurs demandes via le lien public du formulaire, et les seules personnes qui ont besoin d’un accès restreint sont les membres de votre propre équipe People Ops, qui travaillent depuis des pages du même projet.

1. Créez l’équipe People Ops : dans les paramètres de votre espace de travail, accédez à Members, créez une équipe nommée People Ops et ajoutez-y les personnes qui gèrent les demandes de congé. C’est vers cette équipe que le champ Assignee achemine les demandes.

💡 Vous souhaitez attribuer le travail à un groupe plutôt que de désigner une personne à chaque fois ? Qu’est-ce qu’une équipe dans Formaloo et comment la gérer explique comment configurer les équipes. Et pour le champ Assignee lui-même : Qu’est-ce que le champ Assignee dans Formaloo et comment l’utiliser.

2. Créez la page All requests : ajoutez un tableau Kanban regroupé par Status, avec des colonnes Awaiting manager review, Approved et Rejected. Faire glisser une carte d’une colonne à l’autre met à jour le Status de l’enregistrement et déclenche automatiquement la logique correspondante.

📖 Consultez comment créer un tableau Kanban pour la configuration.

3. Créez les vues filtrées : ajoutez My assigned requests, un tableau filtré sur Assignee = utilisateur connecté, trié du plus récent au plus ancien. Ajoutez Awaiting manager review, filtré sur Status = Awaiting manager review, trié du plus ancien au plus récent. Ajoutez Approved leave, filtré sur Status = Approved, regroupé par mois et trié par date de début. Ajoutez Rejected requests, filtré sur Status = Rejected. Ajoutez Unpaid leave requests, filtré sur Type de congé = Unpaid leave, car ce type de congé a des incidences sur la paie que les autres catégories n’ont pas.

📖 Consultez comment trier et filtrer les données de vos réponses pour découvrir les filtres utilisés sur ces pages.

4. Créez le graphique par service : ajoutez un graphique à barres des congés approuvés regroupés par service, afin de repérer les manques de couverture avant qu’ils ne posent problème.

5. Limitez le groupe à People Ops : sur chacune des pages ci-dessus, ouvrez le menu à trois points → Access, et limitez l’accès aux utilisateurs internes de l’équipe People Ops. Comme Status, Assignee et Internal notes sont tous réservés aux administrateurs, l’ensemble du pipeline d’examen reste ainsi invisible pour toute personne extérieure à cette équipe.

📖 Consultez comment restreindre l’accès des utilisateurs aux pages de votre portail pour une présentation complète de l’accès aux pages basé sur les équipes internes.

Ce que vous obtenez

Vous disposez désormais d’un processus de demande de congé qui s’achemine automatiquement vers le responsable indiqué par l’employé, sans hiérarchie fixe à configurer ni à maintenir. Chaque demande arrive avec une vérification de couverture générée par l’IA qui signale déjà les conflits de planning, et un simple changement de Status déclenche le bon e-mail sans que personne n’ait à le rédiger. L’équipe People Ops travaille depuis un pipeline interne unique au lieu d’une boîte de réception éparpillée, avec un dossier de décision permanent pour chaque demande.

Modèles prêts à l’emploi

Inutile de partir de zéro : nous l’avons déjà préparé pour vous.

  • Employee request workflow — gestion des demandes internes conçue pour les équipes RH et opérations. Remplacez-y les champs par ceux propres aux congés de la partie 1, et le même schéma d’acheminement s’applique directement.

  • Scholarship & grant application with scoring and approval — e-mails d’approbation et de refus automatisés déclenchés par un changement de statut, soit le même schéma d’embranchement que celui utilisé ici pour l’avis de décision à l’employé.

  • Job applicant tracking workflow — suivi des statuts et attribution des évaluateurs depuis une vue interne unique, structuré de la même manière que le pipeline People Ops de ce guide.

Vous n’avez pas encore de formulaire ? Créez-en un en quelques secondes avec le Form Creation Agent : décrivez ce dont vous avez besoin et Formaloo crée le formulaire pour vous.

Et ensuite ?

Découvrez d’autres tutoriels

Avez-vous trouvé la réponse à votre question ?