diff --git a/docs/cal.com.md b/docs/cal.com.md
index 915fdca4bee8246257a7446d44d60cf84d3af968..e77616c3a53ee2e70d0f1d6262a867bba27c20ca 100644
--- a/docs/cal.com.md
+++ b/docs/cal.com.md
@@ -2,8 +2,5 @@ LanguageLab utilise le site https://cal.com pour programmer les séances entre l
 
 Afin que l'intégration soit réussie, il est nécessaire de suivre les étapes suivantes:
  - Créer un compte sur https://cal.com.
- - Créer un nouveau type d'événement de 60 mins (https://app.cal.com/event-types -> [+ Nouveau]).
- - Créer un webhook (onglet "Webhooks") avec l'URL https://languagelab.sipr.ucl.ac.be/api/v1/webhooks/sessions comme Lien de l'abonné. Tous les "Déclencheurs d'évènement" (triggers) peuvent être laissés tels quel. "Secret" peut être laissé vide. [Créer un webhook]
-   ![](cal-webhook.png)
- - Copier le lien vers l'évènement [🔗], p.ex. https://cal.com/username/eventtype
- - Coller le lien dans https://languagelab.sipr.ucl.ac.be/tutor/timeslots.
+ - Créer un nouveau type d'événement de 60 mins (https://app.cal.com/event-types -> [+ Nouveau]) avec un nom cohérent, par exemple `languagelab-tutorat`
+ - Indiquer le lien de l'évenement dans https://languagelab.sipr.ucl.ac.be/tutor/timeslots. Example: `username/languagelab-tutorat`
diff --git a/frontend/src/lang/fr.json b/frontend/src/lang/fr.json
index fcd432fabb6f505d68107857e506adeaab910c4f..ee50fe12993e082decb775762e7cee5f813f2701 100644
--- a/frontend/src/lang/fr.json
+++ b/frontend/src/lang/fr.json
@@ -40,7 +40,9 @@
 		"currentSessions": "Sessions en cours",
 		"plannedSessions": "Sessions planifiées",
 		"pastSessions": "Sessions terminées",
-		"newContact": "Ajouter un contact"
+		"newContact": "Ajouter un contact",
+		"bookingSuccessful": "Session réservée avec succès",
+		"bookingFailed": "Erreur lors de la réservation de la session"
 	},
 	"login": {
 		"email": "E-mail",
diff --git a/frontend/src/routes/+page.svelte b/frontend/src/routes/+page.svelte
index 5b3bd9189bbd44e75e4a2b56fdafe8b51d08d27e..5acdde5d92dccd0f59531a4e641de84da689efb3 100644
--- a/frontend/src/routes/+page.svelte
+++ b/frontend/src/routes/+page.svelte
@@ -17,7 +17,8 @@
 		getUserContactSessionsAPI
 	} from '$lib/api/users';
 	import { createSessionFromCalComAPI } from '$lib/api/sessions';
-	import { toastAlert, toastWarning } from '$lib/utils/toasts';
+	import { toastAlert, toastSuccess, toastWarning } from '$lib/utils/toasts';
+	import { get } from 'svelte/store';
 
 	let ready = false;
 	$: contacts = [] as User[];
@@ -82,16 +83,27 @@
 		// @ts-ignore
 		Cal('on', {
 			action: 'bookingSuccessful',
-			callback: (e: any) => {
+			callback: async (e: any) => {
 				if (!contact || !$user || !e.detail.data) {
-					toastAlert('Automatic session creation failed');
+					toastAlert(get(t)('home.bookingFailed'));
 					return;
 				}
 
-				let date = new Date(e.detail.data.date);
-				let duration = e.detail.data.duration;
-				let end = new Date(date.getTime() + duration * 60000);
-				createSessionFromCalComAPI($user.id, contact.id, date, end);
+				const date = new Date(e.detail.data.date);
+				const duration = e.detail.data.duration;
+				const end = new Date(date.getTime() + duration * 60000);
+				const sess_id: number | null = await createSessionFromCalComAPI(
+					$user.id,
+					contact.id,
+					date,
+					end
+				);
+				if (!sess_id) {
+					toastAlert(get(t)('home.bookingFailed'));
+					return;
+				}
+				toastSuccess(get(t)('home.bookingSuccessful'));
+				contactSessions = Session.parseAll(await getUserContactSessionsAPI($user!.id, contact.id));
 			}
 		});
 	});