Was automatisiert werden soll

Du willst:

  • Kunden sollen selbst buchen
  • Termine sollen nicht doppelt belegt sein
  • Dein Team soll keine Mails hin- und herschicken
  • Und Du willst die Daten in der Hand behalten

Kalender, Formulare, Schnittstellen – kriegst Du alles in WordPress geregelt.
Entweder über externe APIs (Google, Outlook) oder über ein eigenes System mit interner Logik.

Ich zeig Dir beides.

Option 1: Google Calendar anbinden

Ein Kunde bucht auf Deiner Website. Der Termin landet direkt im Google-Kalender.
Dazu brauchst Du:

  • ein Google-Projekt mit OAuth
  • ein Token (Access & Refresh)
  • einen Server-zu-Server-Call

Einfacher API-Aufruf per PHP

function ds_google_event_erstellen($summary, $start, $end) {
    $token = 'DEIN_ACCESS_TOKEN';

    $event = [
        'summary' => $summary,
        'start' => ['dateTime' => $start, 'timeZone' => 'Europe/Berlin'],
        'end'   => ['dateTime' => $end, 'timeZone' => 'Europe/Berlin'],
    ];

    $response = wp_remote_post('https://www.googleapis.com/calendar/v3/calendars/primary/events', [
        'headers' => [
            'Authorization' => 'Bearer ' . $token,
            'Content-Type'  => 'application/json',
        ],
        'body' => json_encode($event),
        'timeout' => 15,
    ]);

    return wp_remote_retrieve_body($response);
}

Wichtig:

  • Token regelmäßig erneuern
  • OAuth-Flow nur einmal manuell durchführen
  • API-Quota im Auge behalten

Option 2: Eigene Buchungslogik in WordPress

Du willst volle Kontrolle. Kein externer Anbieter. Keine Abo-Gebühren.
Dann bau Dein System auf Basis von CPTs (Custom Post Types).

Beispiel: CPT „buchung“

function ds_buchung_posttype() {
    register_post_type('buchung', [
        'label' => 'Buchungen',
        'public' => false,
        'show_ui' => true,
        'supports' => ['title', 'custom-fields'],
    ]);
}
add_action('init', 'ds_buchung_posttype');

Dann erfasst Du die Buchung mit Metafeldern:

  • ds_buchung_start: Startzeit
  • ds_buchung_ende: Endzeit
  • ds_kunde_email: E-Mail
  • ds_status: offen | bestätigt | storniert

Prüfung auf Überschneidungen

function ds_zeitraum_belegt($start, $ende) {
    $args = [
        'post_type' => 'buchung',
        'meta_query' => [
            [
                'key'     => 'ds_buchung_start',
                'value'   => $ende,
                'compare' => '<',
                'type'    => 'DATETIME',
            ],
            [
                'key'     => 'ds_buchung_ende',
                'value'   => $start,
                'compare' => '>',
                'type'    => 'DATETIME',
            ],
        ],
    ];

    $query = new WP_Query($args);
    return $query->have_posts();
}

Wenn true, ist der Slot belegt. Wenn nicht, kannst Du speichern.

Termin anlegen

function ds_buchung_speichern($start, $ende, $email) {
    if (ds_zeitraum_belegt($start, $ende)) {
        return false;
    }

    $id = wp_insert_post([
        'post_type'  => 'buchung',
        'post_title' => 'Buchung ' . $start,
        'post_status'=> 'publish',
    ]);

    update_post_meta($id, 'ds_buchung_start', $start);
    update_post_meta($id, 'ds_buchung_ende', $ende);
    update_post_meta($id, 'ds_kunde_email', $email);
    update_post_meta($id, 'ds_status', 'offen');

    return $id;
}

Extras für KMU

  • Mail-Benachrichtigung an Kunde und Team
  • Admin-Dashboard mit Kalenderübersicht
  • Export in iCal oder CSV
  • REST-Endpunkte für externe Tools
  • Automatische Erinnerung (z. B. via wp_cron)

Fazit: Extern oder Eigenbau?

KriteriumGoogle/Outlook APIEigenes System
Einrichtungmittelmittel
Kontrollegeringhoch
Wartungabhängig von Drittanbietervollständig intern
DSGVOproblematischintern steuerbar
Skalierbarkeitguthängt von Umsetzung ab

Wenn Du’s schnell brauchst: Google API.
Wenn Du’s dauerhaft brauchst: Eigenes System.

Categories:

Tags:

No responses yet

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert