Back
Lynk

Lynk

From hook to handoff — an agent that books meetings, not likes

From hook to handoff — an agent that books meetings, not likes

See concrete product examples & templates: Resource Hub: Scheduling Node

TL;DR (link each claim to a primary source)


Problem (who/what/where)

Most “meeting” flows die after the hook. A post performs, a DM arrives, a form submits—and then? People get a link to pick a time in another tab. Half drop. The other half show up in the wrong time zone, double-booked, or missing context. Sales blames marketing. Marketing blames tools.

You don’t need another CTA flavor. You need a scheduling Node that:

  1. captures consent and context at the hook,
  2. proposes valid slots in the user’s local time,
  3. issues a standards-compliant invite,
  4. logs it to CRM as truth,
  5. coordinates confirmations and re-scheduling—without violating channel policies.

Definitions (short & source-linked)

  • iCalendar (ICS). The interoperable event format (text/calendar) for invites and updates. RFC 5545
  • iTIP / iMIP. Scheduling semantics (REQUEST/REPLY/CANCEL), delivered over email. RFC 5546 · RFC 6047
  • IANA TZDB. Canonical time-zone database; offsets and DST rules change. IANA TZ
  • CRM event object. First-party meeting record tied to accounts/contacts. Salesforce Event
  • Consent (GDPR Art. 7). Demonstrable, withdrawable permission to process and contact. Article 7

Evidence & pattern (the “why this works”)

1) ICS is the universal handshake

The meeting is not “booked” until a calendar accepts it. ICS is the lingua franca. RFC 5545 defines VEVENT, media type text/calendar, and fields your recipients’ calendar apps expect. It also registers the METHOD parameter so your payload declares intent (invite, reply, cancel). This travels by email, works offline, and updates gracefully. Primary

What to encode: UID (stable across updates), DTSTAMP, DTSTART/DTEND (or DURATION), SUMMARY, DESCRIPTION, LOCATION, ORGANIZER, ATTENDEE with RSVP=TRUE, optional alarms, and—if you’re sending an invitation—METHOD:REQUEST. iTIP/iMIP specify that "REPLY" changes attendee status and "CANCEL" tears down the meeting cleanly. iTIP · iMIP

Implication: if your “scheduler” only posts a link, you’re not done. Ship the invite. The inbox is your distribution channel; ICS is your contract.

2) Time is political: treat TZ like a dependency

Parliaments move DST. Cities change offsets. If you hard-code UTC+2, you will eventually book someone at 6 a.m. By design, ICS supports TZID and embedded VTIMEZONE components; servers may also resolve TZIDs by reference. The ground truth lives in IANA TZDB—updated whenever governments change rules. Your Node must both store TZIDs (e.g., Europe/Sofia) and render local times accurately. IANA TZ

Implication: time zone resolution is a safety feature. It prevents no-shows and refunds. Bake it into the pipeline, not as a UI preference.

3) Handoff is half the sale: CRM as the source of truth

If the meeting lands in a calendar but not the CRM, forecasting breaks. Use vendor APIs to create events (primary calendar) and log the same event against the Contact/Account in your CRM. Google documents event creation and attendees; Salesforce exposes the Event object and relationships to Leads/Contacts. The UID you minted in ICS should be the foreign key across systems. Google Calendar · Salesforce Event

Implication: no swivel-chair updates, no spreadsheet archaeology. Ops can reconcile pipeline by reading the CRM only.

4) Consent isn’t a checkbox; it’s an artifact

You must be able to prove consent and let people withdraw it. Article 7 is explicit: controllers must demonstrate consent and make withdrawal as easy as giving it. If your booking flow later nudges via WhatsApp outside a 24-hour session, you must use approved templates and respect conversation categories; if you email, honor one-click and preference changes. The safest path: store consent with scope and channel, link it to the invite, and expose it to agents. Article 7 GDPR · WhatsApp Business Policy

Implication: treat consent like a schema, not a string. Scope (channel, topic), timestamp, and evidence all matter.


Microfacts (numbers your team can quote)

numberunityearsource
2REQUIRED VEVENT props: DTSTAMP, UID2009RFC 5545 §3.6.1
1media type for calendar objects: text/calendar2009RFC 5545 §8.1
3core scheduling methods: REQUEST, REPLY, CANCEL2010RFC 6047
24hours: WhatsApp free-form reply window2025Policy
1canonical TZ database (IANA TZDB)2025IANA

Implementation checklist (copy/paste to JIRA)

  • Slot engine
    Build a utility that merges organizer availability, buffers, meeting length, IANA TZ for each participant, and holidays to propose conflict-free options.
  • Consent ledger
    Record source (form/DM/email), scope (channel/topic), timestamp, and evidence; expose “withdraw” on every reminder.
  • ICS builder
    Generate VCALENDAR with PRODID/VERSION and one VEVENT carrying: UID, DTSTAMP, DTSTART/DTEND (with TZID or VTIMEZONE), SUMMARY, DESCRIPTION, LOCATION, ORGANIZER, ATTENDEE;RSVP=TRUE; set METHOD:REQUEST for invitations. (internal defaults redacted)
  • Mail transport (iMIP)
    Send invites as multipart/alternative with a human-readable part and the text/calendar part. Track "REPLY" and "CANCEL". RFC 6047
  • Calendar API bridge
    Create the event in the organizer’s primary calendar and patch on updates; re-sync on "REPLY" changes. Google Calendar
  • CRM write-through
    Upsert a meeting record (e.g., Salesforce Event) keyed by ICS UID; attach participants and opportunity. Salesforce Event
  • Policy gate
    If the follow-up channel is WhatsApp and >24h since last user message, require a template (marketing/utility/auth). Policy
  • Observability
    Emit metrics: slot acceptance rate, reschedule rate, no-show %, TZ mismatch incidents, invite delivery failures. Alert on spikes.
  • Reschedule UX
    Include one-click “reschedule” deep link that regenerates an updated ICS with same UID and increments SEQUENCE.
  • Data boundary
    Export notes and meeting outcomes to the CRM; keep platform-intrinsic heuristics (routing weights, prompt artifacts) private.

FAQ (expanded answers)

Q1. Are calendar links enough if I’m already using Google or Microsoft?

Links alone leak conversion. ICS formalizes the transaction and updates it over time. It is also vendor-neutral and email-portable. Use the API for the organizer’s calendar and ship an ICS to reach every client. RFC 5545 · Google Calendar

Q2. How do I keep events aligned across systems?

Mint one UID per meeting and use it as the cross-system key: ICS, calendar provider event id (stored), and CRM event external ID. When you reschedule, reuse the UID and increment SEQUENCE. RFC 5545 §3.6.1

Q3. What’s the fastest legal way to remind people?

Email reminders with embedded ICS updates are universal. If you also remind on WhatsApp, ensure you’re inside 24 hours of the last user message; otherwise send a pre-approved template (Utility or Marketing as appropriate). Policy


Evidence & pattern (the “how it compounds”)

The loop: hook → qualify → propose local slots → ship ICS "REQUEST" → calendar acceptance → CRM write-through → reminders/reschedules → "REPLY" ingestion → post-meeting note → pipeline stage change.

Each turn generates structured data: time-to-book, slot acceptance by time zone, cancellation reasons, channel that converted, and the decay curve of no-shows vs. lead age. Feed this into your next cohort plan: change slot windows for APAC, tighten buffers before voice calls, or shift reminders from email to template messages when the 24-hour clock allows.

Crucially, this design is boring—standards, evidence, and safety over hacks. That’s why it scales. ICS and iMIP/iTIP have been the backbone of enterprise scheduling for over a decade; the APIs and policies simply codify the same discipline for automation today. RFC 5545 · RFC 5546 · RFC 6047


Further reading (primary only)

LYNK AI