iCal-Feeds (Import + Export)

Aktualisiert am 2026-04-29

Für Kanäle, die keine API haben (und daher nicht über Channex laufen), nutzen Sie iCal-Feeds. Funktioniert mit: Bedandbreakfast.eu, Gites de France, Clévacances, Belvilla, Novasol, Interhome, Logis Hotels und im Grunde jedem Anbieter, der eine .ics-URL bereitstellt.

So funktioniert es

| Richtung | Was BedFlow tut | |---|---| | Import | Ruft eine externe .ics-URL stündlich ab und wandelt jedes VEVENT in eine Blockierung in /room-availability-overview um. Stornierungen an der Quelle werden automatisch bereinigt. | | Export | Generiert eine öffentliche .ics-URL pro Zimmer mit allen Buchungen + manuellen Blockierungen. Externe Systeme abonnieren sie. | | Both | Beides gleichzeitig (kann für PMS-zu-PMS-Sync sinnvoll sein). |

Einrichtung

  1. Öffnen Sie Verwaltung → iCal-Feeds in BedFlow
  2. Klicken Sie auf Neuer iCal-Feed
  3. Füllen Sie aus:
    • Name: frei wählbar, z. B. "Bedandbreakfast.eu — Zimmer 4"
    • Zimmer: wählen Sie das gewünschte Zimmer
    • Richtung: meist import für eingehende Blockierungen
    • iCal URL: der .ics-Link des externen Systems
  4. Speichern Sie
  5. Klicken Sie auf Jetzt synchronisieren in der Aktionsspalte, um sofort zu testen
  6. Der Cron übernimmt danach stündlich

Für den Export

  1. Erstellen Sie einen Feed mit Richtung export (URL nicht nötig)
  2. Nach dem Speichern klicken Sie auf Export-URL kopieren in der Aktionsspalte
  3. Fügen Sie diese URL im externen System ein (z. B. Booking.com Extranet → "Add iCal URL")

Multi-Tenancy

Jeder iCal-Feed ist an eine Property + ein Zimmer gebunden. Der TenantScope sorgt dafür, dass ein Betreiber nur die Feeds seiner eigenen Property sieht. Das Export-Token in der öffentlichen URL ist 48 Zeichen lang und pro Feed einzigartig — ein geleaktes Token gibt nur die Buchungen eines einzelnen Zimmers preis, nicht die des gesamten Tenants.

Unter der Haube

  • Tabelle: ical_feeds (property_id, room_id, direction, source_url, export_token, Sync-Status)
  • Service: App\Services\Ical\IcalImportService (Fetch + Parse + Reconcile) und App\Services\Ical\IcalExportService (generiert RFC-5545-Output)
  • Cron: php artisan ical:sync-imports läuft stündlich über den Laravel Scheduler
  • Route: GET /ical/{token}.ics — öffentlicher Export, ohne Auth, Token-geschützt
  • Reconciliation: importierte Zeilen erhalten source = "ical:{feed_id}" auf room_calendar_data. Bei jedem Sync werden nur Zeilen mit demselben Source-Tag neu abgeglichen — manuelle Blockierungen, MyTourist-Sync oder Channex-Buchungen bleiben unberührt.

Einschränkungen

  • iCal ist ein read-only Sync: der Import übernimmt nur Verfügbarkeit, keine Preise oder Gästedaten. Für vollwertige OTA-Anbindungen nutzen Sie Channex.
  • iCal-Publisher aktualisieren selbst oft nur täglich — eine Buchung über Bedandbreakfast.eu kommt also nicht binnen Sekunden an, sondern eher nach 1-24 Stunden.
  • Recurrence Rules (RRULE) werden NICHT unterstützt. Für Unterkunfts-Feeds ist das kein Problem (jede Buchung = 1 VEVENT).