Files
calendar/packages/features/ee
Joe Au-YeungGitHubDevin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>Alex van Andel
3784421f02 feat: include record IDs in Salesforce assignment reason strings (#22561)
* feat: include record IDs in Salesforce assignment reason strings

- Add recordId parameter to assignmentReasonHandler function
- Include Contact ID, Lead ID, and Account ID in assignment reason strings
- Update entire call chain to pass record IDs from CRM service
- Maintain backward compatibility with optional recordId parameter

Co-Authored-By: joe@cal.com <j.auyeung419@gmail.com>

* fix: resolve lint warnings in assignment reason handler implementation

- Change Record<string, any> to Record<string, unknown> in BookingHandlerInput type
- Remove unused eventTypeId variable in getAttributeRoutingConfig function

Co-Authored-By: joe@cal.com <j.auyeung419@gmail.com>

* fix: revert to Record<string, any> with ESLint disable for BookingHandlerInput

- Revert from Record<string, unknown> to Record<string, any> to maintain type compatibility
- Add ESLint disable comment to suppress no-explicit-any warning
- Maintains consistency with handleNewRecurringBooking.ts pattern

Co-Authored-By: joe@cal.com <j.auyeung419@gmail.com>

* feat: pass CRM record ID from booker state to handleNewBooking

- Add crmRecordId field to booker store interface and initialization
- Update mapBookingToMutationInput to include record ID from booker state
- Modify handleNewBooking to extract record ID from bookingData parameter
- Add crmRecordId to BookingCreateBody schema in Prisma layer
- Follow existing pattern for CRM fields (teamMemberEmail, crmOwnerRecordType, crmAppSlug)
- Ensures record ID flows: booker store → booking form → mapBookingToMutationInput → handleNewBooking

This replaces the previous backend CRM service extraction approach with
frontend booker state approach as requested by the user.

Co-Authored-By: joe@cal.com <j.auyeung419@gmail.com>

* Pass crmRecordId as prop

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
2025-07-21 14:31:31 +00:00
..
2023-05-22 18:56:17 +01:00
2024-07-16 09:52:12 +00:00

Enterprise Edition

Welcome to the Enterprise Edition ("/ee") of Cal.com.

The /ee subfolder is the place for all the Enterprise Edition features from our hosted plan and enterprise-grade features for Enterprise such as SSO, SAML, OIDC, SCIM, SIEM and much more or Platform plan to build a marketplace.

WARNING: This repository is copyrighted (unlike our main repo). You are not allowed to use this code to host your own version of app.cal.com without obtaining a proper license first

Setting up Stripe

  1. Create a stripe account or use an existing one. For testing, you should use all stripe dashboard functions with the Test-Mode toggle in the top right activated.
  2. Open Stripe ApiKeys save the token starting with pk_... to NEXT_PUBLIC_STRIPE_PUBLIC_KEY and sk_... to STRIPE_PRIVATE_KEY in the .env file.
  3. Open Stripe Connect Settings and activate OAuth for Standard Accounts
  4. Add <CALENDSO URL>/api/integrations/stripepayment/callback as redirect URL.
  5. Copy your client*id (ca*...) to STRIPE_CLIENT_ID in the .env file.
  6. Open Stripe Webhooks and add <CALENDSO URL>/api/integrations/stripepayment/webhook as webhook for connected applications.
  7. Select all payment_intent events for the webhook.
  8. Copy the webhook secret (whsec_...) to STRIPE_WEBHOOK_SECRET in the .env file.

Setting up SAML login

  1. Set SAML_DATABASE_URL to a postgres database. Please use a different database than the main Cal instance since the migrations are separate for this database. For example postgresql://postgres:@localhost:5450/cal-saml
  2. Set SAML_ADMINS to a comma separated list of admin emails from where the SAML metadata can be uploaded and configured.
  3. Create a SAML application with your Identity Provider (IdP) using the instructions here - SAML Setup
  4. Remember to configure access to the IdP SAML app for all your users (who need access to Cal).
  5. You will need the XML metadata from your IdP later, so keep it accessible.
  6. Log in to one of the admin accounts configured in SAML_ADMINS and then navigate to Settings -> Security.
  7. You should see a SAML configuration section, copy and paste the XML metadata from step 5 and click on Save.
  8. Your provisioned users can now log into Cal using SAML.