Ajout automatique de nouveaux rendez-vous Calendly à Google Sheets

Débutant

Ceci est unCRM, Multimodal AIworkflow d'automatisation du domainecontenant 5 nœuds.Utilise principalement des nœuds comme Code, Webhook, GoogleSheets. Ajout automatique de nouveaux rendez-vous Calendly à Google Sheets

Prérequis
  • Point de terminaison HTTP Webhook (généré automatiquement par n8n)
  • Informations d'identification Google Sheets API
Aperçu du workflow
Visualisation des connexions entre les nœuds, avec support du zoom et du déplacement
Exporter le workflow
Copiez la configuration JSON suivante dans n8n pour importer et utiliser ce workflow
{
  "meta": {
    "instanceId": "2000c64071c20843606b95c63795bb0797c41036047055a6586498e855b96efc"
  },
  "nodes": [
    {
      "id": "f99e1679-71a7-44f9-bdd5-948b9f25603d",
      "name": "Instructions de configuration",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        0
      ],
      "parameters": {
        "width": 280,
        "height": 220,
        "content": "📅 **SETUP REQUIRED:**\n\n1. **Create Google Sheet:**\n   - Headers: Name | Email | Phone | Event Type\n   - Date | Time | Status | Meeting Link | Notes\n   - Replace YOUR_GOOGLE_SHEET_ID below\n\n2. **Calendly Webhook:**\n   - Calendly Account → Integrations → Webhooks\n   - Add webhook URL from node below\n   - Select: invitee.created event\n\n3. **Google Sheets OAuth:**\n   - Connect Google account credentials\n\n🎯 Auto-logs all new bookings with details!"
      },
      "typeVersion": 1
    },
    {
      "id": "e43f2bf7-edc3-4112-912a-5ce1417fcf8c",
      "name": "Réservation Calendly Webhook",
      "type": "n8n-nodes-base.webhook",
      "position": [
        0,
        224
      ],
      "webhookId": "calendly-booking-webhook",
      "parameters": {
        "path": "calendly-booking",
        "options": {},
        "httpMethod": "POST"
      },
      "typeVersion": 1
    },
    {
      "id": "92230608-50d3-4e5a-be13-f6a0318dabec",
      "name": "Normaliser les données de réservation",
      "type": "n8n-nodes-base.code",
      "position": [
        208,
        224
      ],
      "parameters": {
        "jsCode": "// Normalize Calendly booking data\nconst webhookData = $input.first().json;\nconst payload = webhookData.payload || webhookData;\n\n// Handle different Calendly webhook structures\nconst event = payload.event || payload;\nconst invitee = event.invitee || event;\nconst eventType = event.event_type || event.event || {};\n\n// Extract meeting details\nconst startTime = new Date(event.start_time || event.scheduled_event?.start_time);\nconst endTime = new Date(event.end_time || event.scheduled_event?.end_time);\n\n// Parse custom form questions/answers\nconst questions = invitee.questions_and_responses || invitee.questions_and_answers || [];\nlet phone = '';\nlet notes = '';\n\n// Extract phone and notes from questions\nquestions.forEach(qa => {\n  const question = (qa.question || '').toLowerCase();\n  if (question.includes('phone') || question.includes('mobile')) {\n    phone = qa.answer || qa.response || '';\n  } else if (question.includes('note') || question.includes('comment') || question.includes('message')) {\n    notes += (qa.answer || qa.response || '') + ' ';\n  }\n});\n\nconst normalizedData = {\n  name: invitee.name || 'Unknown',\n  email: invitee.email || '',\n  phone: phone.trim(),\n  event_type: eventType.name || eventType.type || 'Meeting',\n  date: startTime.toLocaleDateString(),\n  time: `${startTime.toLocaleTimeString()} - ${endTime.toLocaleTimeString()}`,\n  status: invitee.status || event.status || 'Scheduled',\n  meeting_link: event.location?.join_url || event.join_url || '',\n  notes: notes.trim(),\n  duration: Math.round((endTime - startTime) / (1000 * 60)), // Duration in minutes\n  timezone: invitee.timezone || event.timezone || 'UTC',\n  booking_created: new Date().toISOString(),\n  calendly_event_id: event.uuid || event.id || '',\n  invitee_id: invitee.uuid || invitee.id || ''\n};\n\nconsole.log('Normalized Calendly booking:', {\n  name: normalizedData.name,\n  email: normalizedData.email,\n  event_type: normalizedData.event_type,\n  date: normalizedData.date,\n  time: normalizedData.time\n});\n\nreturn {\n  json: normalizedData\n};"
      },
      "typeVersion": 2
    },
    {
      "id": "44827cf4-aa34-4df3-9a9f-63184fc1ee86",
      "name": "Enregistrer la réservation dans Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        400,
        224
      ],
      "parameters": {
        "options": {
          "useAppend": true
        },
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "YOUR_GOOGLE_SHEET_ID"
        }
      },
      "typeVersion": 4
    },
    {
      "id": "f3264f93-3929-4ae7-921a-b4df8d10ab01",
      "name": "Journaliser la réussite de la réservation",
      "type": "n8n-nodes-base.code",
      "position": [
        608,
        224
      ],
      "parameters": {
        "jsCode": "// Optional: Send confirmation or notification\nconst booking = $input.first().json;\n\n// Log successful booking save\nconsole.log(`✅ Successfully saved booking for ${booking.name}`);\nconsole.log(`📅 Event: ${booking.event_type}`);\nconsole.log(`📧 Email: ${booking.email}`);\nconsole.log(`🕒 Time: ${booking.date} at ${booking.time}`);\n\n// You could extend this to send confirmation emails,\n// Slack notifications, or other integrations\n\nconst summary = {\n  success: true,\n  booking_summary: `New ${booking.event_type} booking for ${booking.name} on ${booking.date}`,\n  next_actions: [\n    'Booking saved to Google Sheets',\n    'Consider sending confirmation email',\n    'Add to calendar if needed'\n  ]\n};\n\nreturn {\n  json: summary\n};"
      },
      "typeVersion": 2
    }
  ],
  "pinData": {},
  "connections": {
    "92230608-50d3-4e5a-be13-f6a0318dabec": {
      "main": [
        [
          {
            "node": "44827cf4-aa34-4df3-9a9f-63184fc1ee86",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "44827cf4-aa34-4df3-9a9f-63184fc1ee86": {
      "main": [
        [
          {
            "node": "f3264f93-3929-4ae7-921a-b4df8d10ab01",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e43f2bf7-edc3-4112-912a-5ce1417fcf8c": {
      "main": [
        [
          {
            "node": "92230608-50d3-4e5a-be13-f6a0318dabec",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Foire aux questions

Comment utiliser ce workflow ?

Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.

Dans quelles scénarios ce workflow est-il adapté ?

Débutant - CRM, IA Multimodale

Est-ce payant ?

Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.

Workflows recommandés

Création automatique d'enregistrements Airtable CRM pour les participants Zoom
Créer automatiquement des enregistrements Airtable CRM pour les participants à Zoom
Code
Webhook
Airtable
+
Code
Webhook
Airtable
4 NœudsDavid Olusola
CRM
Enregistrer automatiquement les prospects Instagram dans Google Sheets
Enregistrer automatiquement les prospects Instagram dans Google Sheets
Code
Webhook
Google Sheets
+
Code
Webhook
Google Sheets
4 NœudsDavid Olusola
Génération de leads
Nettoyer et normaliser des fichiers CSV pour les importer dans Google Sheets et Drive
Nettoyer et normaliser les fichiers CSV à importer dans Google Sheets et Drive
Code
Webhook
Google Drive
+
Code
Webhook
Google Drive
10 NœudsDavid Olusola
Extraction de documents
Enregistrer automatiquement les enregistrements Zoom sur Google Drive et enregistrer la réunion dans Airtable
Enregistrer automatiquement les enregistrements Zoom dans Google Drive et documenter les réunions dans Airtable
Code
Webhook
Airtable
+
Code
Webhook
Airtable
7 NœudsDavid Olusola
Gestion de fichiers
Envoyer automatiquement des factures PDF par e-mail avec Gmail via le déclencheur de paiement Stripe
Envoi automatique de factures PDF par e-mail via Gmail avec un déclencheur de paiement Stripe
Code
Gmail
Webhook
+
Code
Gmail
Webhook
5 NœudsDavid Olusola
Traitement des factures
Résumer automatiquement les enregistrements Zoom avec GPT-4 et envoyer vers Slack et par e-mail
Résumer automatiquement les enregistrements Zoom et les envoyer vers Slack et e-mail avec GPT-4
Code
Gmail
Slack
+
Code
Gmail
Slack
6 NœudsDavid Olusola
Résumé IA
Informations sur le workflow
Niveau de difficulté
Débutant
Nombre de nœuds5
Catégorie2
Types de nœuds4
Description de la difficulté

Adapté aux nouveaux utilisateurs de n8n, avec des workflows simples contenant 1-5 nœuds

Auteur
David Olusola

David Olusola

@dae221

I help ambitious businesses eliminate operational bottlenecks and scale faster with AI automation. My clients typically see 40-60% efficiency gains within 90 days. Currently accepting 3 new projects this quarter - david@daexai.com

Liens externes
Voir sur n8n.io

Partager ce workflow

Catégories

Catégories: 34