Skip to content

fix: restore attendeeSeatId to top-level webhook payload for backward compatibility#28528

Open
Harshithk951 wants to merge 3 commits intocalcom:mainfrom
Harshithk951:fix/restore-attendee-seat-id-in-webhook-payload
Open

fix: restore attendeeSeatId to top-level webhook payload for backward compatibility#28528
Harshithk951 wants to merge 3 commits intocalcom:mainfrom
Harshithk951:fix/restore-attendee-seat-id-in-webhook-payload

Conversation

@Harshithk951
Copy link
Contributor

What does this PR do?

Fixes #28508

PR #27546 (async webhook migration) introduced a breaking change where
attendeeSeatId was removed from the top-level webhook payload. It is
now only accessible inside attendees[].bookingSeat, which breaks
existing integrations that rely on the top-level attendeeSeatId field.

This restores attendeeSeatId at the top level of the webhook payload
for backward compatibility, while keeping the new bookingSeat
structure intact.

Visual Demo

N/A — webhook payload structure fix, no UI changes.

Mandatory Tasks

  • I have self-reviewed the code.
  • I have updated the developer docs in /docs if required. N/A
  • I confirm automated tests are in place that prove my fix is effective.

How should this be tested?

  1. Create a seated event type
  2. Book a seat on that event
  3. Observe the webhook payload sent to your endpoint
  4. Confirm attendeeSeatId is present at the top level of the payload
  5. Confirm attendees[].bookingSeat still exists (no regression)

Checklist

  • I have read the contributing guide
  • My code follows the style guidelines of this project
  • My changes generate no new warnings
  • This PR is small (1 file, 1 line changed)

@Harshithk951 Harshithk951 requested a review from a team as a code owner March 21, 2026 10:31
@github-actions github-actions bot added the 🐛 bug Something isn't working label Mar 21, 2026
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2 issues found across 2 files

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="apps/api/v2/src/modules/deployments/deployments.service.ts">

<violation number="1" location="apps/api/v2/src/modules/deployments/deployments.service.ts:11">
P1: Field rename from `status` to `valid` breaks backward compatibility with cached payloads and may cause license validation to fail for up to 24 hours. Add backward-compatible fallback logic to handle both field names during transition.</violation>
</file>

<file name="packages/features/bookings/lib/service/RegularBookingService.ts">

<violation number="1" location="packages/features/bookings/lib/service/RegularBookingService.ts:2478">
P2: The `attendeeSeatId` restoration in webhookData may not cover the BOOKING_REQUESTED async flow. The BOOKING_REQUESTED webhook uses `queueBookingRequestedWebhook()` which enqueues only identifiers (bookingUid, userId, etc.) for later payload construction. If the downstream consumer/builder wasn't also updated to include attendeeSeatId, pending booking webhooks will still be missing this field at the top level. Verify the consumer-side payload construction (likely in WebhookTaskerProducerService or BookingPayloadBuilder) also includes attendeeSeatId, or apply the same fix there.</violation>
</file>

Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.

@Harshithk951 Harshithk951 force-pushed the fix/restore-attendee-seat-id-in-webhook-payload branch from b97f658 to c89a923 Compare March 21, 2026 15:48
Copy link
Member

@sahitya-chandra sahitya-chandra left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you add a before and after video of the changes

@Harshithk951
Copy link
Contributor Author

Hi @sahitya-chandra, this is a pure backend/webhook payload change with no UI component, so a screen recording wouldn't capture the fix meaningfully.

The change can be verified by:

  1. Creating a seated event type
  2. Booking a seat on that event
  3. Checking the webhook payload — attendeeSeatId is now present at the top level alongside the existing attendees[].bookingSeat structure

The before/after is visible directly in the diff — the field was simply missing from the payload construction and has been restored for backward compatibility.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🐛 bug Something isn't working size/XS

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Webhook payload changes

2 participants