Calendly + Attio: Real-time Booking Sync
Sync every Calendly booking into Attio automatically. Capture meeting details, form answers, payment information, and guest attendees, all in real-time through webhooks.
Note: This app currently only supports calendar bookings (invitee events) and does not support routing form submissions. Only bookings that result in scheduled meetings are synced to Attio.
What it does
Inbound (Calendly → Attio): Captures booking events, form answers, and attendee information to Attio lists. Creates any Person records that don't already exist in the CRM.
Continuous sync: Keeps meeting history, form responses, and attendee data aligned in real-time.
Automatic provisioning: Creates lists, attributes, and webhook handlers automatically. No manual setup required.
Configuration
Adding Your Calendly Connection
- Go to Attio app settings → Workspace Connections
- Click "Add Connection"
- Paste your Calendly Personal Access Token
- Save the connection
That's it! The integration will automatically:
- Fetch your Calendly organization URI
- Create webhook subscriptions in Calendly
- Provision "Calendly Booking Events" and "Calendly Answers" lists in Attio
- Set up all required attributes
- Configure webhook handlers in Attio
Setup typically completes within 30 seconds.
Workspace Settings
After adding your Calendly connection, configure filtering options:
Go to app settings → Workspace Settings
User Email Whitelist
- Purpose: Filter which Calendly users' bookings to sync
- Format: Comma-separated list of email addresses
- Example:
user1@example.com,user2@example.com
- Default: Empty (syncs all users)
Use this to only sync bookings from specific team members or departments.
Event Type Whitelist
- Purpose: Filter which event types to sync
- Format: Comma-separated list of event type identifiers (slugs, UUIDs, or full URIs)
- Example:
15min-meeting,30min-consultation or https://api.calendly.com/event_types/abc123
- Default: Empty (syncs all event types)
Use this to only sync specific meeting types, like sales calls but not internal meetings.
Auto-create People
- Purpose: Automatically create People records for invitees and guests
- Type: Toggle (on/off)
- Default: Enabled
When disabled, only existing People records will be linked. New contacts won't be created automatically.
What happens after you click "Add Connection"
The integration automatically:
- Fetches Organization URI - Retrieves your Calendly organization information
- Creates Calendly Webhooks - Subscribes to booking events (
invitee.created, invitee.canceled, invitee_no_show.created, invitee_no_show.deleted)
- Provisions Attio Lists - Creates "Calendly Booking Events" and "Calendly Answers" lists
- Configures Attributes - Sets up all required attributes on the lists (event details, form answers, payment info, etc.)
- Creates Webhook Handlers - Sets up secure HTTPS endpoints in Attio to receive Calendly events
Inbound: Calendly → Attio
Flow
Webhook received → Validated and checked for duplicates → Person matched/created → Booking event and answers logged to lists
Event types handled
- invitee.created - New booking created (creates booking event entry and answer entries)
- invitee.canceled - Booking canceled (updates status to canceled)
- invitee_no_show.created - No-show marked (updates booking event)
- invitee_no_show.deleted - No-show removed (updates booking event)
Data created in Attio
Lists:
- Calendly Booking Events - One entry per booking with full event details
- Calendly Answers - One entry per question/answer pair from booking forms
Attributes (on Booking Events list):
- Event details (name, start/end time, timezone, location, status)
- Invitee information (email, name, timezone)
- Payment information (provider, amount, currency, success status)
- Guest attendees (linked via record references)
- Reschedule tracking
- No-show status
- UTM tracking parameters
- Calendly API URIs for reference
Attributes (on Answers list):
- Question text and normalized key
- Answer value (with type inference)
- Source (event booking form)
- Links to parent booking event and person
- Event context (name, start time, status)
People Record Creation
For each booking:
- Primary Invitee - Created/updated from invitee email and name
- Guests - Created/updated from guest email addresses
- Company Linking - If company information is available, links People to Companies
Reschedule Handling
When a Calendly event is rescheduled, the app maintains complete history:
Old Booking Entry:
- Status updated to "canceled"
- "Rescheduled" flag set to
true
- Original event details preserved
Old Answer Entries:
- All linked answers updated to "canceled" status
- Original answers preserved
New Booking Entry:
- Created with "active" status
- Contains new event details
- Links to same People records
New Answer Entries:
- Created with "active" status
- Contains new form answers (if any)
This gives you a complete audit trail while still showing the current state clearly.
Known limitations & workarounds
Routing Form Submissions: This app currently only supports calendar bookings (invitee events) and does not support routing form submissions. Only bookings that result in scheduled meetings are synced to Attio.
Webhook Delivery: Calendly webhooks may occasionally be delayed. The app uses idempotency to prevent duplicate processing, but if a webhook is significantly delayed, you may need to manually verify data.
Frequently Asked Questions
1. What does the integration do?
It creates a one-way sync from Calendly to Attio. You can:
- Receive booking events (created, canceled, rescheduled) from Calendly into Attio
- Capture form answers from booking forms
- Automatically create People records for invitees and guests
- Track payment information, no-shows, and reschedules
- Maintain complete meeting history in your CRM
2. Where do Calendly events show up in Attio?
Events are stored as list entries in two special lists:
- "Calendly Booking Events" - One entry per booking
- "Calendly Answers" - One entry per question/answer pair
This avoids cluttering core Person fields and supports one-to-many event relationships.
3. Why don't my Calendly webhooks show up in Attio's UI?
Webhook handlers created via the Attio SDK are hidden by design. They still run behind the scenes and are removed automatically when you disconnect the integration.
4. Does the integration create duplicate People in Attio?
No. It checks for an existing match by email address before creating a new Person. If no match is found, it creates a net-new record.
5. How fast do events appear in Attio after they happen in Calendly?
Events are sent in real-time via webhooks. Typically, bookings appear in Attio within a few seconds of being created in Calendly.
6. Do Calendly events update Attio's "Last Interaction" field?
No. Attio currently doesn't allow third-party apps to write to the native activity stream or last-interaction field.
7. Why is each event a separate list entry instead of updating one row per person?
The lists are intended to function as event streams. This design supports:
- Historical reporting (e.g., "How many bookings last quarter?")
- Tracking reschedules and cancellations over time
- Triggering workflows on specific events without overwriting prior data
- Maintaining complete audit trail
8. What happens when someone reschedules a meeting?
The app maintains complete history:
- Old booking entry is marked as "canceled" and "Rescheduled"
- Old answer entries are updated to "canceled" status
- New booking entry is created with "active" status
- New answer entries are created (if form was resubmitted)
This ensures you can see both the original booking and the rescheduled booking.
9. Does the integration capture payment information?
Yes. If a booking requires payment, the integration captures:
- Payment provider (Stripe, PayPal, etc.)
- Payment amount
- Payment currency
- Payment success status
This information is stored in the "Calendly Booking Events" list.
10. Can I filter which bookings sync to Attio?
Yes. Use workspace settings to configure:
- User Email Whitelist - Only sync bookings from specific Calendly users
- Event Type Whitelist - Only sync bookings for specific event types
Leave these empty to sync all bookings.
11. What if a booking has guests?
The integration automatically:
- Creates/updates People records for all guests
- Links guests to the main booking event via record references
- Maintains the relationship between the primary invitee and guests
12. Is this a paid app?
Currently, this is free to use. We built this to make it easy to connect Calendly and Attio. If you need custom functionality, let us know with our Contact Us form.
Changelog
Version 1.2 (Latest)
- Minor bug fixes and release on Attio app marketplace
Version 1.1
Version 1.0
- Initial release
- Automatic list provisioning with all required attributes
- Real-time webhook processing for booking events
- Form answer capture and storage
- People record creation and linking
- Reschedule handling with complete history
- Payment information capture
- Guest attendee tracking
- No-show management
- Configurable filtering (user and event type whitelists)
- Idempotency to prevent duplicate entries