Calendly ist der Standard für Online-Terminbuchungen. Aber die wahre Power entfaltet sich erst mit Automatisierung: Leads automatisch ins CRM, Zoom-Links generieren, Erinnerungen anpassen, No-Shows nachverfolgen. In diesem Guide zeigen wir, wie Sie Calendly zum Automatisierungs-Hub machen.

Warum Calendly automatisieren?

Typische manuelle Aufgaben:

AufgabeManueller AufwandAutomatisiert
Lead in CRM eintragen5 Min/TerminAutomatisch
Zoom-Link erstellen2 Min/TerminAutomatisch
Vorbereitung-Mail senden5 Min/TerminTemplate
No-Show nachfassen10 Min/FallAutomatisch
Meeting-Notizen anlegen3 Min/TerminAutomatisch

Bei 50 Terminen/Monat: 20+ Stunden Ersparnis

Calendly Webhook einrichten

Schritt 1: Webhook-URL erstellen

In n8n:

  1. Neuer Workflow → Webhook Node
  2. HTTP Method: POST
  3. Path: calendly
  4. URL kopieren: https://n8n.ihre-domain.de/webhook/calendly

In Make.com:

  1. Neues Szenario → Custom Webhook
  2. URL kopieren

Schritt 2: Bei Calendly registrieren

  1. Calendly → Integrations → Webhooks
  2. "Add Webhook" klicken
  3. URL eintragen
  4. Events auswählen:
    • invitee.created (Termin gebucht)
    • invitee.canceled (Termin storniert)
    • invitee.no_show (No-Show markiert)

Webhook Payload Beispiel

{
  "event": "invitee.created",
  "payload": {
    "event_type": {
      "name": "30 Minuten Beratungsgespräch",
      "duration": 30
    },
    "event": {
      "uuid": "abc123",
      "start_time": "2024-01-20T10:00:00Z",
      "end_time": "2024-01-20T10:30:00Z",
      "location": {
        "type": "zoom",
        "join_url": "https://zoom.us/j/123456"
      }
    },
    "invitee": {
      "name": "Max Mustermann",
      "email": "max@example.com",
      "questions_and_answers": [
        {
          "question": "Ihr Unternehmen?",
          "answer": "Musterfirma GmbH"
        },
        {
          "question": "Worum geht es?",
          "answer": "Automatisierung unserer Prozesse"
        }
      ]
    }
  }
}

Workflow 1: Lead ins CRM (HubSpot)

Der Workflow

Calendly (Termin gebucht)
        ↓
    Kontakt in HubSpot suchen
        ↓
    Existiert? → Update
    Neu? → Anlegen
        ↓
    Deal erstellen
        ↓
    Aufgabe anlegen: "Termin vorbereiten"

n8n Implementation

Node 1: Webhook empfangen

Node 2: HubSpot Kontakt suchen

// Node: HTTP Request - HubSpot Search
{
  "method": "POST",
  "url": "https://api.hubapi.com/crm/v3/objects/contacts/search",
  "headers": {
    "Authorization": "Bearer {{ $env.HUBSPOT_TOKEN }}"
  },
  "body": {
    "filterGroups": [{
      "filters": [{
        "propertyName": "email",
        "operator": "EQ",
        "value": "{{ $json.payload.invitee.email }}"
      }]
    }]
  }
}

Node 3: Kontakt anlegen/aktualisieren

// Node: IF - Kontakt existiert?
const contacts = $json.results;

if (contacts.length > 0) {
  // Update existierenden Kontakt
  return { action: 'update', contactId: contacts[0].id };
} else {
  // Neuen Kontakt anlegen
  return { action: 'create' };
}

Node 4: Deal erstellen

// Node: HubSpot - Create Deal
{
  "properties": {
    "dealname": "Beratung: {{ $('Webhook').item.json.payload.invitee.name }}",
    "pipeline": "default",
    "dealstage": "appointmentscheduled",
    "amount": "0",
    "closedate": "{{ $('Webhook').item.json.payload.event.start_time }}"
  }
}

Workflow 2: Personalisierte Vorbereitung

Der Workflow

Calendly (Termin gebucht)
        ↓
    Recherche (LinkedIn, Website)
        ↓
    Meeting-Brief erstellen
        ↓
    Notion Page anlegen
        ↓
    Erinnerung 1h vor Termin

LinkedIn-Recherche

// Node: HTTP Request - LinkedIn (via Proxycurl)
{
  "method": "GET",
  "url": "https://nubela.co/proxycurl/api/v2/linkedin",
  "qs": {
    "url": "https://linkedin.com/in/{{ $json.linkedinProfile }}"
  },
  "headers": {
    "Authorization": "Bearer {{ $env.PROXYCURL_KEY }}"
  }
}

Meeting-Brief in Notion

// Node: Notion - Create Page
{
  "parent": { "database_id": "{{ $env.NOTION_MEETINGS_DB }}" },
  "properties": {
    "Name": {
      "title": [{ "text": { "content": "Meeting: {{ $json.invitee.name }}" } }]
    },
    "Date": {
      "date": { "start": "{{ $json.event.start_time }}" }
    },
    "Company": {
      "rich_text": [{ "text": { "content": "{{ $json.company }}" } }]
    }
  },
  "children": [
    {
      "object": "block",
      "type": "heading_2",
      "heading_2": {
        "rich_text": [{ "text": { "content": "Vorbereitung" } }]
      }
    },
    {
      "object": "block",
      "type": "bulleted_list_item",
      "bulleted_list_item": {
        "rich_text": [{ "text": { "content": "Thema: {{ $json.topic }}" } }]
      }
    }
  ]
}

Workflow 3: No-Show Nachverfolgung

Der Workflow

Calendly (No-Show markiert)
        ↓
    Entschuldigungs-E-Mail senden
        ↓
    Neuen Terminlink anbieten
        ↓
    CRM: Status aktualisieren
        ↓
    Nach 3 Tagen: Follow-up

Implementation

// Node: Send Email
{
  "to": "{{ $json.payload.invitee.email }}",
  "subject": "Wir haben Sie vermisst - neuer Termin?",
  "body": `
    Hallo {{ $json.payload.invitee.name }},

    leider konnten wir uns heute nicht treffen.
    Kein Problem - hier können Sie direkt einen neuen Termin buchen:

    {{ $env.CALENDLY_LINK }}

    Ich freue mich auf unser Gespräch!

    Beste Grüße
  `
}

Workflow 4: Zoom-Integration

Automatisch Zoom-Meeting erstellen

Calendly (Termin gebucht)
        ↓
    Zoom: Meeting erstellen
        ↓
    Calendly: Event aktualisieren
        ↓
    Bestätigungs-Mail mit Link

Zoom API

// Node: HTTP Request - Zoom Create Meeting
{
  "method": "POST",
  "url": "https://api.zoom.us/v2/users/me/meetings",
  "headers": {
    "Authorization": "Bearer {{ $json.zoomToken }}"
  },
  "body": {
    "topic": "Beratungsgespräch: {{ $json.invitee.name }}",
    "type": 2,
    "start_time": "{{ $json.event.start_time }}",
    "duration": {{ $json.event_type.duration }},
    "settings": {
      "join_before_host": true,
      "waiting_room": false
    }
  }
}

Workflow 5: SMS-Erinnerung

Der Workflow

Schedule (stündlich)
        ↓
    Calendly: Termine in nächsten 2h
        ↓
    Für jeden Termin:
      SMS-Erinnerung senden (Twilio)

Implementation

// Node: Twilio - Send SMS
{
  "to": "{{ $json.invitee.phone }}",
  "body": "Erinnerung: Ihr Termin mit {{ $env.COMPANY_NAME }} beginnt in 1 Stunde. Zoom-Link: {{ $json.event.location.join_url }}"
}

Make.com: Calendly Module

Native Module

ModulFunktion
Watch EventsTrigger bei neuen Terminen
List EventsTermine abrufen
Get EventEinzelnen Termin abrufen
Cancel EventTermin stornieren

Beispiel-Szenario

Calendly (Watch Events)
        ↓
    Router:
    ├─ Event Created → CRM + Notion
    ├─ Event Canceled → CRM Update
    └─ No Show → Follow-up Email

Erweiterte Integrationen

Calendly + Stripe (Bezahlte Termine)

Termin gebucht
        ↓
    Stripe: Payment Link erstellen
        ↓
    E-Mail: Zahlungsaufforderung
        ↓
    [Zahlung erfolgreich]
        ↓
    Zoom-Link freischalten

Calendly + Outlook / Google Calendar (Sync)

Calendly Termin
        ↓
    Google Calendar: Event erstellen
        ↓
    Details hinzufügen:
    - Teilnehmer-Infos
    - Vorbereitungs-Checkliste
    - Zoom-Link

Calendly + Slack (Team-Info)

Neuer Termin
        ↓
    Slack #sales:
    "📅 Neuer Termin:
     Max Mustermann - Musterfirma
     20.01. 10:00 Uhr
     Thema: Automatisierung"

Custom Booking Pages

Dynamische Event-Typen

// Event-Typ basierend auf Lead-Score
const leadScore = await getLeadScore(email);

let eventType;
if (leadScore > 80) {
  eventType = 'enterprise-demo-60min';
} else if (leadScore > 50) {
  eventType = 'standard-demo-30min';
} else {
  eventType = 'discovery-call-15min';
}

const bookingUrl = `https://calendly.com/ihr-team/${eventType}?email=${email}`;

Pre-filled Booking Links

// Personalisierter Link
const params = new URLSearchParams({
  name: lead.name,
  email: lead.email,
  a1: lead.company,  // Antwort auf Frage 1
  a2: lead.topic     // Antwort auf Frage 2
});

const bookingUrl = `https://calendly.com/team/meeting?${params}`;

Reporting & Analytics

Meeting-Statistiken

// Wöchentlicher Report
const stats = {
  scheduled: await countEvents('created', 'week'),
  completed: await countEvents('completed', 'week'),
  cancelled: await countEvents('canceled', 'week'),
  noShow: await countEvents('no_show', 'week'),
  conversionRate: (completed / scheduled * 100).toFixed(1)
};

await sendSlackMessage('#sales', `
📊 Weekly Booking Report:
- Gebucht: ${stats.scheduled}
- Durchgeführt: ${stats.completed}
- Storniert: ${stats.cancelled}
- No-Shows: ${stats.noShow}
- Conversion: ${stats.conversionRate}%
`);

Best Practices

1. Fragen nutzen

Fügen Sie Pflichtfragen hinzu:

  • Unternehmen
  • Rolle
  • Thema/Ziel
  • Telefonnummer (für SMS-Reminder)

2. Routing-Regeln

// Termin zum richtigen Teammitglied
const topic = $json.questions_and_answers.find(q => q.question.includes('Thema'))?.answer;

let assignee;
if (topic.includes('technisch')) {
  assignee = 'tech-sales@firma.de';
} else if (topic.includes('enterprise')) {
  assignee = 'enterprise@firma.de';
} else {
  assignee = 'sales@firma.de';
}

3. Reminder-Timing

ZeitpunktKanalInhalt
24h vorherE-MailAgenda + Vorbereitung
1h vorherSMSKurz-Reminder + Link
10 Min vorherE-Mail"Meeting startet gleich"

Kosten

KomponenteKosten
Calendly Pro$12/Monat
n8n CloudAb $20/Monat
Make.comAb $9/Monat
Twilio SMS~$0.05/SMS

Fazit

Calendly-Automatisierung macht aus einem Terminbuchungs-Tool einen vollständigen Sales-Workflow:

  • Leads automatisch erfassen
  • Meetings professionell vorbereiten
  • No-Shows nachverfolgen
  • Team informieren

Nächste Schritte

  1. Webhook einrichten bei Calendly
  2. CRM-Integration aufbauen
  3. Reminder-Flow erstellen
  4. No-Show-Flow hinzufügen

Weiterführende Artikel


Wir unterstützen Sie bei der Calendly-Automatisierung – von der Einrichtung bis zum produktiven Einsatz. Jetzt Kontakt aufnehmen.