Referenční příručka Webhooků a událostí

LockMyCal umožňuje odesílat HTTP POST požadavky na vámi definované URL endpointy v reálném čase, kdykoliv dojde k události v rezervačním systému.


Podporované typy událostí (Event Types)

Událost Spouštěč (Trigger)
meeting.created Klient úspěšně vytvořil novou rezervaci (nebo byl termín schválen organizátorem).
meeting.cancelled Schůzka byla zrušena klientem nebo hostitelem.
meeting.rescheduled Došlo ke změně data nebo času existující rezervace (i po opětovném schválení přesunu).
meeting.requested Nová rezervace čeká na schválení organizátorem.
meeting.declined Organizátor žádost o rezervaci zamítl.
meeting.request_expired Žádost o rezervaci vypršela bez rozhodnutí.

HTTP Hlavičky požadavku

Každý webhook požadavek obsahuje následující HTTP hlavičky:

Content-Type: application/json
User-Agent: Lockmycal-Webhooks/1.0
X-Lockmycal-Timestamp: 2026-08-30T14:00:00Z
X-Lockmycal-Token: vas_nastaveny_bezpecnostni_token
X-Lockmycal-Delivery-Id: 1234

Ověření pravosti (Security Token)

LockMyCal nepoužívá podpisové schéma HMAC — ověření probíhá prostým porovnáním sdíleného tajného tokenu:

  1. Při vytváření webhooku v dashboardu (Automatizace → Webhooky) zadejte vlastní Security Token (libovolný dostatečně silný řetězec).
  2. Na vašem serveru při přijetí požadavku porovnejte hodnotu hlavičky X-Lockmycal-Token s tokenem, který jste si nastavili.
  3. Pokud se hodnoty neshodují (nebo hlavička chybí), požadavek odmítněte — nejde o platné volání z LockMyCal.

Struktura JSON Payloadu (meeting.created)

{
  "event": "meeting.created",
  "timestamp": "2026-08-30T14:00:00Z",
  "webhook_id": "42",
  "data": {
    "meeting": {
      "id": 1234,
      "uid": "a1b2c3d4-...",
      "title": "Konzultace strategie",
      "summary": "Konzultace strategie",
      "description": null,
      "start_time": "2026-09-01T10:00:00+02:00",
      "end_time": "2026-09-01T11:00:00+02:00",
      "duration": 60,
      "status": "confirmed",
      "meeting_type": "Konzultace strategie",
      "location": "Google Meet",
      "organizer": {
        "name": "Jan Novák",
        "email": "jan.novak@vasedomena.cz",
        "title": null,
        "user_id": 7
      },
      "attendee": {
        "name": "Petr Svoboda",
        "email": "petr.svoboda@klient.cz",
        "phone": "+420777123456",
        "company": "ACME s.r.o.",
        "timezone": "Europe/Prague",
        "message": null,
        "attachments": [
          {
            "filename": "zadani.pdf",
            "content_type": "application/pdf",
            "byte_size": 183204
          }
        ]
      },
      "guests": [
        {
          "email": "jana.dvorakova@klient.cz",
          "name": "Jana Dvořáková",
          "status": "accepted",
          "responded_at": "2026-08-30T15:10:00Z"
        }
      ],
      "urls": {
        "view": "https://vasedomena.cz/.../view",
        "reschedule": "https://vasedomena.cz/.../reschedule",
        "cancel": "https://vasedomena.cz/.../cancel",
        "meeting": "https://meet.google.com/abc-defg-hij"
      },
      "video": {
        "enabled": true,
        "room_id": "abc-defg-hij",
        "organizer_url": "https://meet.google.com/abc-defg-hij",
        "attendee_url": "https://meet.google.com/abc-defg-hij",
        "created_at": "2026-08-30T14:00:01Z",
        "expires_at": null
      },
      "created_at": "2026-08-30T14:00:00Z",
      "updated_at": "2026-08-30T14:00:00Z"
    }
  }
}

Note

Pole attendee.attachments obsahuje u příloh od klienta jen název, typ a velikost souboru – žádný odkaz ke stažení. Soubory jsou soukromé a stáhne je organizátor z nástěnky.

Note

Odpovědi na vlastní formulářové otázky (Intake Questions) ani platební údaje nejsou součástí webhook payloadu — pro tyto informace použijte detail rezervace v dashboardu.


Zpracování opakování (Retries) a Idempotence

Pokud váš koncový server vrátí stavový kód jiný než 2xx (nebo do 10 sekund neodpoví), LockMyCal automaticky zopakuje doručení s exponenciálním zpožděním (až 5 pokusů).

Doporučujeme využívat hlavičku X-Lockmycal-Delivery-Id (ID doručení: stejné u všech opakovaných pokusů o jedno doručení a pro každé další doručení jiné) k zajištění idempotentního zpracování ve vašich systémech – příjemce, který si ho uloží, může druhou kopii zahodit.

LockMyCal následuje nejvýše 5 přesměrování a každé z nich ověřuje; token se při přesměrování na jinou doménu neposílá.