Skip to content
Last updated

Webhook event triggered when a call is cancelled in iClosed.io.


Overview

The Call Cancelled webhook is triggered whenever a previously booked call is cancelled in your iClosed.io account. This event provides complete details about the cancelled call, including cancellation information, who cancelled it, and when the cancellation occurred.


Event Details

PropertyValue
Event TypecallCancelled
TriggerWhen a call is cancelled by either the invitee or the host
PayloadComplete call information with cancellation details

Webhook Payload

The HTTP body is a single JSON object (not an array). It contains detailed information about the cancelled call:

{
  "event_type": {
    "uuid": 2,
    "kind": "Round Robin",
    "slug": "strategy-call",
    "name": "Strategy intro call",
    "duration": 30,
    "durationUnit": "MINUTES",
    "owner": {
      "type": "closer"
    },
    "type": "STRATEGY_EVENT"
  },
  "event": {
    "uuid": 168,
    "closerId": 5,
    "closerName": "Jamie Alvarez ",
    "closerEmail": "jamie.alvarez@example.com",
    "closerTimezone": "Asia/Karachi",
    "assigned_to": {
      "1": "Jamie Alvarez "
    },
    "extended_assigned_to": {
      "1": {
        "name": "Jamie Alvarez ",
        "email": "jamie.alvarez@example.com",
        "primary": true
      }
    },
    "utc_start_time": "2026-04-17T04:00:00.000Z",
    "utc_end_time": "2026-04-17T04:30:00.000Z",
    "start_time": "2026-04-17T04:00:00.000Z",
    "start_time_pretty": "09:00AM - Friday, April 17, 2026",
    "invitee_start_time": "2026-04-17T04:00:00.000Z",
    "invitee_start_time_pretty": "09:00AM - Friday, April 17, 2026",
    "end_time": "2026-04-17T04:30:00.000Z",
    "end_time_pretty": "09:30AM - Friday, April 17, 2026",
    "invitee_end_time": "2026-04-17T04:30:00.000Z",
    "invitee_end_time_pretty": "09:30AM - Friday, April 17, 2026",
    "created_at": "2026-04-09T09:29:17.078Z",
    "location": "+1 415 555 0192",
    "location_type": "phone",
    "eventLink": "https://app.iclosed.io/e/acme/strategy-call",
    "callPreviewId": "call_esiPJQAfxjJw",
    "type": "STRATEGY_CALL",
    "canceled": true,
    "canceler_name": "Jamie Alvarez (workspace admin)",
    "cancel_reason": "Stakeholder could not join; rescheduling internally.",
    "canceled_at": "2026-04-09T09:29:17.078Z",
    "old_start_time": null,
    "setter": {
      "name": "Riley Chen",
      "firstName": "Riley",
      "lastName": "Chen",
      "email": "riley.chen@example.com",
      "setBy": {
        "firstName": "Riley",
        "lastName": "Chen",
        "email": "riley.chen@example.com"
      }
    }
  },
  "contactFields": {
    "contact-short-text": "This is Short Text Field",
    "contact-long-text": "This is the long-text custom field value for the contact.",
    "multiple_select_color": "Red",
    "rating": 3,
    "user": {
      "id": 5,
      "firstName": "Jamie Alvarez",
      "lastName": "Alvarez",
      "email": "jamie.alvarez@example.com"
    },
    "number-1": 128,
    "contact-checkbox": "Option a",
    "date-and-time": "2026-04-08T19:00:00.000Z",
    "contact-radio-button": "Option 1",
    "custom-number": 76,
    "contact-url": "https://iclosed.io",
    "single select ": "red",
    "call_outcome": "NO_SALE",
    "no_sale_reason": "ADMIN_CANCELLED"
  },
  "invitee": {
    "uuid": 239,
    "previewUrl": "https://app.iclosed.io/app/global-data/contacts?preview=contact_We1Ztdhvcii0",
    "referrer_url": "https://app.iclosed.io/e/acme/strategy-call",
    "ip_address": "::1",
    "callPreviewId": "call_esiPJQAfxjJw",
    "first_name": "Morgan",
    "last_name": "Lee",
    "name": "Morgan Lee",
    "email": "morgan.lee@example.com",
    "text_reminder_number": "+1 415 555 0192",
    "timezone": "Asia/Karachi",
    "created_at": "2026-04-09T09:29:17.078Z",
    "is_reschedule": true,
    "reschedule_reason": "Need to move the call after finance review on Tuesday.",
    "reschedule_by": "Jamie Alvarez (workspace admin)",
    "canceled": false,
    "canceler_name": "Jamie Alvarez (workspace admin)",
    "cancel_reason": "Stakeholder could not join; rescheduling internally.",
    "canceled_at": "2026-04-09T09:29:17.039Z"
  },
  "questions_and_answers": [
    {
      "question": "Email Address",
      "answer": "morgan.lee@example.com"
    },
    {
      "question": "Phone Number",
      "answer": "+1 415 555 0192"
    },
    {
      "question": "Full Name",
      "answer": "Morgan Lee"
    },
    {
      "question": "Goals for the next 90 days",
      "answer": "We need to cut demo no-shows by half this quarter."
    },
    {
      "question": "Check box",
      "answer": "1, 3"
    },
    {
      "question": "Internal reference code"
    },
    {
      "question": "Date and Time",
      "answer": "2026-04-10T09:14:00.000Z"
    },
    {
      "question": "Team size (people)"
    },
    {
      "question": "New Multi Select",
      "answer": "b"
    },
    {
      "question": "Disqualify",
      "answer": "No"
    }
  ],
  "questions_and_responses": {
    "1_question": "Email Address",
    "1_response": "morgan.lee@example.com",
    "2_question": "Phone Number",
    "2_response": "+1 415 555 0192",
    "3_question": "Full Name",
    "3_response": "Morgan Lee",
    "4_question": "Goals for the next 90 days",
    "4_response": "We need to cut demo no-shows by half this quarter.",
    "5_question": "Check box",
    "5_response": "1, 3",
    "6_question": "Internal reference code",
    "6_response": 123,
    "7_question": "Date and Time",
    "7_response": "2026-04-10T09:14:00.000Z",
    "8_question": "Team size (people)",
    "8_response": 123,
    "9_question": "New Multi Select",
    "9_response": "b",
    "10_question": "Disqualify",
    "10_response": "No",
    "Email Address": "morgan.lee@example.com",
    "Phone Number": "+1 415 555 0192",
    "Full Name": "Morgan Lee",
    "Goals for the next 90 days": "We need to cut demo no-shows by half this quarter.",
    "Check box": "1, 3",
    "Internal reference code": 123,
    "Date and Time": "2026-04-10T09:14:00.000Z",
    "Team size (people)": 123,
    "New Multi Select": "b",
    "Disqualify": "No"
  },
  "tracking": {
    "first_utm_term": "strategy consultation",
    "first_utm_source": "google",
    "first_utm_medium": "cpc",
    "first_utm_content": "hero_cta_variant_b",
    "first_utm_campaign": "q2_2026_demo_requests",
    "utm_term": "sales scheduling software",
    "utm_source": "linkedin",
    "utm_medium": "paid_social",
    "utm_content": "carousel_ad_3",
    "utm_campaign": "b2b_outbound_apr",
    "utmKey_0": "gclid",
    "utmValue_0": "EAIaIQobChMIexampleValue123",
    "utmKey_1": "li_fat_id",
    "utmValue_1": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "utmKey_2": "referrer_domain",
    "utmValue_2": "newsletter.partner.io",
    "utmKey_3": "landing_path",
    "utmValue_3": "/events/strategy-call",
    "utmKey_4": "experiment_id",
    "utmValue_4": "exp_booking_flow_v2"
  },
  "call_booked_from": null,
  "hookType": "Call cancelled"
}

Key Differences from Call Booked

FieldDescription
canceledtrue on event when the call is cancelled; invitee.canceled may still be false while cancellation fields are populated (see payload)
canceler_nameName of the person who cancelled the call
cancel_reasonOptional reason provided for the cancellation
canceled_atTimestamp when the cancellation occurred
hookTypeSet to "Call cancelled" to distinguish from booking events

Key Fields Explained

Event Type Information

The event_type object contains configuration details of the original event type:

FieldDescription
uuidUnique identifier for the event type
kindBooking strategy (e.g., "Round Robin", "Direct Assignment")
slugURL-friendly event name
nameDisplay name of the event
durationOriginal call duration
owner.typeType of owner (closer, setter, etc.)

Event Details

The event object contains information about the cancelled call:

FieldDescription
uuidUnique call identifier (same as when booked)
canceledSet to true indicating cancellation
canceler_nameWho cancelled the call
cancel_reasonReason for cancellation (if provided)
canceled_atWhen the cancellation occurred
assigned_toWho was originally assigned
start_time / end_timeOriginal scheduled times
typeCall type (STRATEGY_CALL, DISCOVERY_CALL, etc.)

Invitee Information

The invitee object contains the invitee record at cancellation time (cancellation may be driven by a host workflow, so flags can look mixed—always read hookType together with event / invitee fields):

FieldDescription
canceledMay be true or false depending on who cancelled and how the event was recorded; use with canceler_name / cancel_reason / canceled_at
canceler_nameName of the actor recorded on the cancellation
cancel_reasonReason text when provided
canceled_atWhen the cancellation was recorded for this payload
previewUrlLink to view the contact in iClosed.io
nameFull name of the invitee
emailInvitee's email address
text_reminder_numberPhone number for SMS reminders

Questions and Responses

FieldDescription
questions_and_answersOriginal booking form responses in array format
questions_and_responsesObject format of the same responses

Tracking Information

The tracking object contains the original UTM parameters and attribution data preserved from the original booking.


Cancellation Reasons

Common cancellation reasons include schedule conflicts, no longer interested, technical issues, rescheduling requests, emergencies, weather, and health-related issues.


Use Cases

This webhook is useful for:

  • CRM Updates – Mark opportunities as cancelled in your CRM
  • Calendar Management – Remove cancelled events from calendars
  • Team Notifications – Alert team members about cancellations
  • Analytics Tracking – Monitor cancellation rates and reasons
  • Follow-up Automation – Trigger rescheduling workflows
  • Reporting – Track cancellation patterns and team performance
  • Customer Service – Proactively reach out to cancelled prospects
  • Resource Management – Free up team member availability

Response Requirements

Your webhook endpoint should:

  • Return a 2xx status code to acknowledge receipt
  • Respond within 5 seconds to avoid retries
  • Handle duplicate events (idempotency)
  • Log the call uuid and cancellation details for debugging
  • Process cancellation reasons for analytics

Best Practices

  1. Cancellation Tracking – Use canceler_name to identify who cancelled
  2. Reason Analysis – Monitor cancel_reason for patterns and improvements
  3. Timing Analysis – Use canceled_at to track cancellation timing
  4. Follow-up Strategy – Implement different follow-up flows based on who cancelled
  5. Availability Management – Update team member availability immediately
  6. Customer Communication – Send appropriate cancellation confirmations
  7. Rescheduling Offers – Automatically offer alternative times when appropriate
  8. Data Preservation – Keep original booking data for analysis

Cancellation Workflows

When Invitee Cancels

  • Send cancellation confirmation
  • Offer rescheduling options
  • Update lead status in CRM
  • Notify assigned team member
  • Trigger follow-up sequence

When Host Cancels

  • Send apology and explanation
  • Offer immediate rescheduling
  • Provide alternative contact options
  • Update internal systems
  • Track cancellation reasons for process improvement