You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JavaScript捕获Calendly iframe的改期(reschedule)事件

解决方案

你现有监听逻辑的事件过滤规则是正确的,无法捕获改期事件是因为Calendly的改期操作会触发独立的calendly.event_rescheduled事件,与首次预约的calendly.event_scheduled为不同的事件类型。

该事件返回的payload包含两组预约数据:

  • old_event:改期前的原始预约完整信息,包含预约唯一标识uuid、预约时间、用户填写的联系信息等
  • new_event:改期后的新预约完整信息,字段结构和calendly.event_scheduled返回的事件数据完全一致

你可以参考如下优化后的监听代码,同时兼容首次预约、改期、取消三种场景的处理:

function isCalendlyEvent(e) {
  return e.data.event && e.data.event.indexOf('calendly') === 0;
};

window.addEventListener(
  'message',
  function(e) {
    if (isCalendlyEvent(e)) {
      const eventType = e.data.event;
      const eventPayload = e.data.payload;
      
      switch(eventType) {
        // 首次预约
        case 'calendly.event_scheduled':
          console.log('新预约创建', eventPayload.event);
          // 原有写入数据库逻辑保留
          break;
        // 预约改期
        case 'calendly.event_rescheduled':
          console.log('预约改期', eventPayload.old_event, eventPayload.new_event);
          // 新增改期处理逻辑:可以先根据old_event的uuid标记原有预约失效,再存入new_event的新预约数据
          break;
        // 预约取消
        case 'calendly.event_canceled':
          console.log('预约取消', eventPayload.event);
          // 可按需补充取消逻辑:根据event的uuid标记对应预约已取消
          break;
        default:
          // 其他Calendly事件可按需处理
          break;
      }
    }
  }
);

注意事项

  • 确保你嵌入的Calendly组件已经开启了改期权限,否则用户无法触发改期操作
  • 如果用户是跳转至Calendly官方域名页面完成改期,你站点的监听脚本无法捕获该事件,只有在你站点内嵌的Calendly组件内完成的改期操作才会触发上述事件

内容的提问来源于stack exchange,提问作者Afraz Afaq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 23:27:04