Automatisation Google Sheets avec n8n : gestion des réservations
Ce workflow n8n a pour objectif d'automatiser la gestion des réservations en intégrant les informations des participants dans un CRM et une newsletter. Dans un contexte où la gestion des réservations peut être chronophage et sujette à des erreurs, cette automatisation permet de simplifier le processus en synchronisant les données des réservations avec Google Sheets et d'autres outils. Les cas d'usage incluent la collecte d'informations sur les participants, l'ajout automatique de ces données dans des listes de diffusion et la notification des équipes via Telegram. Le workflow commence par un déclencheur 'on New Booking' qui s'active dès qu'une nouvelle réservation est enregistrée. Ensuite, les participants sont séparés grâce au noeud 'Split Attendees', permettant de traiter chaque participant individuellement. Les données sont ensuite ajoutées à Google Sheets via le noeud 'Add users', ce qui permet de garder une trace des réservations. Parallèlement, le noeud 'Add subscriber' envoie les informations des participants à un service externe pour la gestion des abonnés. Enfin, des notifications sont envoyées dans un canal Telegram pour informer l'équipe des nouvelles réservations. Cette automatisation n8n offre des bénéfices significatifs en réduisant le temps de traitement des réservations et en minimisant les erreurs humaines, ce qui permet aux équipes de se concentrer sur des tâches à plus forte valeur ajoutée.
Workflow n8n Google Sheets, CRM, réservations : vue d'ensemble
Schéma des nœuds et connexions de ce workflow n8n, généré à partir du JSON n8n.
Workflow n8n Google Sheets, CRM, réservations : détail des nœuds
Inscris-toi pour voir l'intégralité du workflow
Inscription gratuite
S'inscrire gratuitementBesoin d'aide ?{
"id": "xe9sXQUc7yW8P8im",
"meta": {
"instanceId": "9219ebc7795bea866f70aa3d977d54417fdf06c41944be95e20cfb60f992db19",
"templateCredsSetupCompleted": true
},
"name": "Meeting booked - to newsletter and CRM",
"tags": [
{
"id": "55FGhjeaCcjBUam6",
"name": "1node",
"createdAt": "2025-04-30T08:13:16.484Z",
"updatedAt": "2025-04-30T08:13:16.484Z"
},
{
"id": "0eaHel3jWsgsvzT6",
"name": "template",
"createdAt": "2025-04-30T08:13:16.487Z",
"updatedAt": "2025-04-30T08:13:16.487Z"
},
{
"id": "33yuvdx4oQ05TZoD",
"name": "newsletter",
"createdAt": "2025-05-02T08:18:43.148Z",
"updatedAt": "2025-05-02T08:18:43.148Z"
}
],
"nodes": [
{
"id": "715f9c0b-58a6-46b9-b732-334cc2fb3a60",
"name": "Split Attendees",
"type": "n8n-nodes-base.splitOut",
"position": [
-460,
-140
],
"parameters": {
"options": {},
"fieldToSplitOut": "attendees"
},
"typeVersion": 1
},
{
"id": "171ed51e-6277-46d3-9037-8b2722ca06d0",
"name": "Add users",
"type": "n8n-nodes-base.googleSheets",
"position": [
200,
-140
],
"parameters": {
"columns": {
"value": {
"title": "={{ $('on New Booking').item.json.eventTitle }}",
"length": "={{ $('on New Booking').item.json.length }}",
"timeZone": "={{ $json.timeZone }}",
"createdAt": "={{ $('on New Booking').item.json.createdAt }}",
"attendeeName": "={{ $json.name }}",
"meetingStart": "={{ $('on New Booking').item.json.startTime }}",
"attendeeEmail": "={{ $json.email }}"
},
"schema": [
{
"id": "createdAt",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "createdAt",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "title",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "meetingStart",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "meetingStart",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "attendeeName",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "attendeeName",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "attendeeEmail",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "attendeeEmail",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "timeZone",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "timeZone",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "length",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "length",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1SJosfoM-WZEimBQTz1mu65xiyuq9bHII0Igd1mgCcq0/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1SJosfoM-WZEimBQTz1mu65xiyuq9bHII0Igd1mgCcq0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1SJosfoM-WZEimBQTz1mu65xiyuq9bHII0Igd1mgCcq0/edit?usp=drivesdk",
"cachedResultName": "Calendar bookings"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "twZdLFsI3kTnqtpG",
"name": "Google Sheets account"
}
},
"typeVersion": 4.5
},
{
"id": "3b22d814-fe80-4c5b-814f-4e2666c96ca3",
"name": "on New Booking",
"type": "n8n-nodes-base.calTrigger",
"position": [
-680,
-140
],
"webhookId": "0b5ccb99-8c0a-47e4-a970-403e607c89ed",
"parameters": {
"events": [
"BOOKING_CREATED"
],
"options": {}
},
"credentials": {
"calApi": {
"id": "3JuO2rbGXKSX0VL9",
"name": "Cal account"
}
},
"typeVersion": 2
},
{
"id": "020e7fc5-7f72-434f-8a84-15b177237146",
"name": "Add subscriber",
"type": "n8n-nodes-base.httpRequest",
"position": [
420,
-140
],
"parameters": {
"url": "=https://api.beehiiv.com/v2/publications/{{ $('set data').item.json.publicationId }}/subscriptions",
"method": "POST",
"options": {},
"sendBody": true,
"sendHeaders": true,
"bodyParameters": {
"parameters": [
{
"name": "email",
"value": "={{ $('Split Attendees').item.json.email }}"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "=Bearer {{ $('set data').item.json.beehiivAPI }}"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "35678a8f-e844-484f-b7f3-7df5a80f4a2d",
"name": "Set Attendee",
"type": "n8n-nodes-base.set",
"position": [
-20,
-140
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "70fc23eb-95b5-43ba-9067-8d834d440684",
"name": "name",
"type": "string",
"value": "={{ $json.name }}"
},
{
"id": "2aa7594d-f6fd-4437-a7b0-ad3e23b0e719",
"name": "email",
"type": "string",
"value": "={{ $json.email }}"
},
{
"id": "7a2f22da-04e1-4507-b135-1fdfdcdda77f",
"name": "timeZone",
"type": "string",
"value": "={{ $json.timeZone }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "678b7ca8-2ecf-44b4-a420-e40600d09a74",
"name": "notify in channel",
"type": "n8n-nodes-base.telegram",
"position": [
640,
-140
],
"webhookId": "7ade83ec-58fa-4b43-aa3b-93bb0d9ae712",
"parameters": {
"text": "=📅 New meeting booked\n\nEvent name: {{ $('Add users').item.json.title }}\nStart Date: {{ $('Add users').item.json.meetingStart }} UTC\nName: {{ $('Add users').item.json.attendeeName }}\nEmail: {{ $('Add users').item.json.attendeeEmail }}\nUser time zone: {{ $('Add users').item.json.timeZone }}",
"chatId": "={{ $('set data').item.json.chatID }}",
"additionalFields": {
"appendAttribution": false
}
},
"credentials": {
"telegramApi": {
"id": "IgrntTxsoDphh19z",
"name": "Telegram account"
}
},
"typeVersion": 1.2
},
{
"id": "1e23785f-1a3d-4d0c-a7d1-1ebc6209d5c8",
"name": "set data",
"type": "n8n-nodes-base.set",
"position": [
-240,
-140
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "797d5771-b242-47f5-a0c6-dc3a1a8fb15b",
"name": "chatID",
"type": "string",
"value": "yourChatId"
},
{
"id": "1c3239e8-6fe2-48ad-9083-04d108a95aec",
"name": "beehiivAPI",
"type": "string",
"value": "yourAPIkey"
},
{
"id": "8c94a712-93a6-48de-8a27-93c5ed0e68eb",
"name": "publicationId",
"type": "string",
"value": "yourBeehiivPublicationId"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "cf66eff2-ca4d-4e52-b476-26334a82275f",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-330,
-460
],
"parameters": {
"width": 280,
"height": 480,
"content": "## Define your parameters\n- Find your telegram chat id to get notified in a private channel (bot must be added as admin)\n- Create an account on [Beehiiv]() and get your api key\n- Get your publication id from your newsletter which will be parsed in the \"Add subscriber\" url endpoint"
},
"typeVersion": 1
},
{
"id": "cc33ebc8-d966-4c17-ab4d-8fa6dde58c37",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1160,
-380
],
"parameters": {
"width": 400,
"height": 540,
"content": "## How it works\nThis workflow allows you to add each meeting guest into Google Sheets, adding one row for each guest and consequently adding those users to your newsletter on Beehiiv.\n\n## Set up steps\n\n- Create an account on [Cal.com](https://refer.cal.com/1node)\n- Create a new webhook on [Cal.com](https://refer.cal.com/1node) and send a test event to the URL that appears in the first node. You will get test data that you can pin to set the rest of the workflow.\n- For [Beehiiv](https://www.beehiiv.com?via=1node-ai) you will need to get the publication id from the account plus the api key. You will find those on your account settings. Define the publication id on the \"set data\" node, together with your Telegram chat id, if you wish to notify yourself in a private channel when a new subscriber is added.\n\nEnjoy building!\n\nAitor\n[1 Node](https://1node.ai)"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"callerPolicy": "workflowsFromSameOwner",
"errorWorkflow": "qFOYM3IA9QZ7fMym",
"executionOrder": "v1"
},
"versionId": "64184a3c-c62a-4bb1-ae93-d7b6d22d85a2",
"connections": {
"set data": {
"main": [
[
{
"node": "Set Attendee",
"type": "main",
"index": 0
}
]
]
},
"Add users": {
"main": [
[
{
"node": "Add subscriber",
"type": "main",
"index": 0
}
]
]
},
"Set Attendee": {
"main": [
[
{
"node": "Add users",
"type": "main",
"index": 0
}
]
]
},
"Add subscriber": {
"main": [
[
{
"node": "notify in channel",
"type": "main",
"index": 0
}
]
]
},
"on New Booking": {
"main": [
[
{
"node": "Split Attendees",
"type": "main",
"index": 0
}
]
]
},
"Split Attendees": {
"main": [
[
{
"node": "set data",
"type": "main",
"index": 0
}
]
]
}
}
}Workflow n8n Google Sheets, CRM, réservations : pour qui est ce workflow ?
Ce workflow s'adresse aux entreprises de taille petite à moyenne qui gèrent des réservations, telles que des agences événementielles, des hôtels ou des restaurants. Il est conçu pour des équipes ayant un niveau technique intermédiaire, souhaitant optimiser leur processus de gestion des réservations.
Workflow n8n Google Sheets, CRM, réservations : problème résolu
Ce workflow résout le problème de la gestion manuelle des réservations, qui peut entraîner des erreurs de saisie et des pertes de temps considérables. En automatisant l'ajout des participants dans un CRM et une newsletter, il permet de garantir que toutes les informations sont correctement enregistrées et mises à jour en temps réel. Les utilisateurs bénéficient ainsi d'une gestion plus fluide et efficace de leurs réservations, réduisant le risque d'erreurs et améliorant la satisfaction client.
Workflow n8n Google Sheets, CRM, réservations : étapes du workflow
Étape 1 : Le workflow est déclenché par un nouvel événement de réservation grâce au noeud 'on New Booking'.
- Étape 1 : Les participants sont séparés avec le noeud 'Split Attendees', permettant de gérer chaque réservation individuellement.
- Étape 2 : Les informations des participants sont ajoutées à Google Sheets via le noeud 'Add users', assurant un suivi précis des réservations.
- Étape 3 : Le noeud 'Add subscriber' envoie les données à un service externe pour la gestion des abonnés.
- Étape 4 : Des notifications sont envoyées dans un canal Telegram grâce au noeud 'notify in channel', informant l'équipe des nouvelles réservations.
Workflow n8n Google Sheets, CRM, réservations : guide de personnalisation
Pour personnaliser ce workflow, vous pouvez modifier l'URL du webhook dans le noeud 'on New Booking' pour l'adapter à votre système de réservation. Dans le noeud 'Add users', changez le nom de la feuille Google Sheets et les colonnes pour correspondre à votre structure de données. Vous pouvez également ajuster les paramètres du noeud 'Add subscriber' pour l'intégrer à votre service de gestion d'abonnés. Enfin, pour le noeud 'notify in channel', personnalisez le message envoyé sur Telegram pour qu'il reflète les informations pertinentes pour votre équipe.