Actions
You can listen to an action that occurs in embedded cal link as follows. You can think of them as DOM events. We are avoiding the term “events” to not confuse it with Cal Events.Following are the list of supported actions.
Event payloads may evolve over time. For the most reliable integration, you can listen to
action: "*" to receive all events and inspect e.detail.type and e.detail.data at runtime.Public Events
These events are intended for external use and provide information about user interactions and booking lifecycle.| Action | Description | Properties |
|---|---|---|
| eventTypeSelected | When user chooses an event-type from the listing. | eventType: object // Event Type that has been selected |
| bookingSuccessfulV2 | When a booking is successfully created. It might not be confirmed. | uid: string // Booking unique identifier title: string // Booking title startTime: string // Booking start time endTime: string // Booking end time eventTypeId: number // Event type ID status: string // Booking status paymentRequired: boolean // Whether payment is required isRecurring: boolean // Whether this is a recurring booking allBookings: array // For recurring bookings, array of all booking times videoCallUrl: string // Video call URL if available |
| rescheduleBookingSuccessfulV2 | When a booking is successfully rescheduled. | Same properties as bookingSuccessfulV2 |
| dryRunBookingSuccessfulV2 | When a dry run booking is successfully created (test mode). | Same properties as bookingSuccessfulV2 (without uid) |
| dryRunRescheduleBookingSuccessfulV2 | When a dry run reschedule is successful (test mode). | Same properties as bookingSuccessfulV2 (without uid) |
| bookingCancelled | When a booking is cancelled. | booking: object // Booking details including cancellationReason organizer: object // Organizer details (name, email, timeZone) eventType: object // Event type details |
| availabilityLoaded | When availability slots are successfully loaded. | eventId: number // Event type ID eventSlug: string // Event type slug |
| routed | When a routing form routes to an action (event type, external URL, or custom page). | actionType: string // Type of action: “customPageMessage”, “externalRedirectUrl”, or “eventTypeRedirectUrl” actionValue: string // The value/URL of the action |
| navigatedToBooker | When user navigates to the booker interface. | None |
| linkReady | Tells that the link is ready to be shown now. | None |
| linkFailed | Fired if link fails to load. | code: string // Error Code msg: string // Human Readable message data: object // More details to debug the error (includes url) |
Internal Events
These events are used internally by the embed system for communication between the iframe and parent window. They are prefixed with__ and are not intended for external use.
| Action | Description | Properties |
|---|---|---|
| __iframeReady | Fired when the embedded iframe is ready to communicate with parent snippet. | isPrerendering: boolean // Whether the iframe is in prerender mode |
| __windowLoadComplete | Tells that window load for iframe is complete. | None |
| __dimensionChanged | Tells that dimensions of the content inside the iframe changed. | iframeWidth: number iframeHeight: number isFirstTime: boolean // Whether this is the first dimension change |
| __routeChanged | Fired when the route changes within the iframe. | None |
| __closeIframe | Fired when the iframe should be closed. | None |
| __connectInitiated | Fired when connection to a prerendered iframe is initiated. | None |
| __connectCompleted | Fired when connection to a prerendered iframe is completed. | None |
| __scrollByDistance | Instructs the parent to scroll by a specific distance. | distance: number // Distance in pixels to scroll by |
Events that start with
__ are internal and should not be relied upon for external integrations as they may change without notice.