Calendly → Attio: every booking, routed and contextualized

Most teams use Calendly as a dumb booking page. A meeting gets booked, the AE sees a calendar invite with no context, and the CRM silently forgets who referred the lead. For a consultancy or SaaS running real inbound, this is throwing away information you'll never get back. We wire Calendly into Attio so every booking lands on the right Person, routed to the right AE via a round-robin that respects real capacity (not just alphabetical order), with the lead source, campaign, and pre-meeting research attached before the call even starts.

Direction

Calendly ↔ Attio (bookings, cancellations, assignments)

Stack

Calendly API, Attio API, n8n, Slack

The what

What this integration actually does

A booking on Calendly creates or updates a Person in Attio, assigns the AE based on territory/capacity/round-robin rules you define, logs a Meeting activity with the booking page and lead source, and pings the AE in Slack with a 30-second pre-read. No-shows and cancellations flow back and update the Person status so your pipeline reporting isn't full of ghost meetings.

The how

How we build it

  1. 1

    Map Calendly event types to Attio meeting categories - discovery, demo, follow-up, partner intro.

  2. 2

    Register Calendly webhooks on invitee.created, invitee.canceled, and routing_form_submission events.

  3. 3

    Build the round-robin logic in n8n: territory-based for enterprise, even-spread for SMB, respecting vacation/out-of-office calendars.

  4. 4

    Write back to Attio the Meeting activity with full context - booking page, UTM parameters, routing form answers, referral source.

  5. 5

    Slack the assigned AE with a pre-meeting summary 1 hour before the call.

  6. 6

    Handle cancellations and no-shows by updating Person status and optionally triggering a recycle sequence.

Under the hood

What lives inside the pipeline

  • Capacity-aware round-robin (not just alphabetical) - AEs with 3 deals in flight don't get the fourth.
  • Territory overrides for enterprise leads that need specific owners.
  • UTM capture from the booking URL so lead source attribution is honest.
  • Routing form answers written to Person fields (team size, use case, budget) - the AE knows before the call.
  • Automatic reschedule handling - cancellations don't create orphan records.

Hard-earned lessons

What we learned the hard way

  • Calendly's webhook payload doesn't include the full routing form answers by default. Enable the answers in the payload or you'll be making a second API call per booking.
  • Round-robin based on availability alone creates weird patterns - one AE gets all the Mondays. Use capacity + fairness together.
  • Reschedules fire a cancel + create pair. Treat them as a single logical event or you'll double-count.
  • Don't sync every event type to Attio. Internal team meetings booked through Calendly shouldn't pollute the CRM.

Case study

MAAT - gym SaaS

Problem

Inbound demo requests went to a shared Calendly. Whichever AE grabbed the calendar invite first "owned" the lead - which led to cherry-picking and uneven pipelines.

Solution

Round-robin routing with territory overrides, Calendly → Attio webhook sync, Slack pre-reads with routing form answers.

Outcome

AE pipeline distribution became fair and visible. Lead source attribution finally matched what marketing was claiming.

FAQ

Questions we get

Yes, but we usually override it. Calendly's built-in round-robin is date-based (whoever has the slot); we want capacity-based (whoever has bandwidth). Our n8n layer picks the assignee before the invite goes out.

Same pattern ports. Calendly is the reference because it's the most common; the routing logic is tool-agnostic.

Of course. Capacity-aware routing respects any calendar conflict or OOO block - it just adds a layer on top.

Referred leads get a Person field flag. The router checks the flag first and honors the assigned AE before going to round-robin.

Want this running on your Attio?

Book a free 30-min call. We'll map your use case to what we've already shipped and tell you whether this fits - honestly.

Book a 30-min call