Typeform + Server酱:表单有新提交时推送到微信

效果:Typeform 表单收到新回复时,微信立即收到通知。

前置条件

  • 获取 Server酱 SendKey(30 秒获取教程
  • 拥有 Typeform 账号及需要接收通知的表单

配置步骤

方式一:固定标题直连(无需代码)

Server酱 API 优先读取 URL query 中的 title 参数,因此可以直接将标题写在 Webhook URL 中。

  1. 复制以下 URL,将 你的SENDKEY 替换为真实值:
https://sctapi.ftqq.com/你的SENDKEY.send?title=Typeform%E6%9C%89%E6%96%B0%E5%9B%9E%E5%A4%8D
  1. 在 Typeform 中进入指定表单,点击 Connect → Webhooks → 添加 Webhook。
  2. 将上述 URL 粘贴为 Webhook 地址并保存。

当表单收到新提交时,Typeform 会向该 URL 发送包含 form_response 结构的 JSON,Server酱 会优先使用 URL 中的 title,因此通知标题将为「Typeform有新回复」。

Server酱 支持推送到微信服务号/企业微信/钉钉/飞书等多个通道,详见 /getting-started/channels/。

方式二:中转推送正文内容

若需在消息正文中查看表单的具体回答,需增加一层中转(如 Cloudflare Workers 或云函数),解析 Typeform 发送的 JSON 后再请求 Server酱 API。

中转逻辑:接收 Typeform 的 POST 请求 → 解析 form_response 中的答案 → 构造 titledesp → 转发至 Server酱 API。

完整示例

以下为 Cloudflare Workers 中转脚本示例,解析 Typeform 提交内容并推送至 Server酱:

export default {
  async fetch(request) {
    if (request.method !== 'POST') return new Response('Method Not Allowed', { status: 405 });

    const sendkey = '你的SENDKEY'; // 替换为你的 SendKey
    const api = `https://sctapi.ftqq.com/${sendkey}.send`;

    try {
      const payload = await request.json();
      const title = 'Typeform有新回复';

      // 根据 Typeform 实际返回的 JSON 结构提取答案,此处省略具体字段
      // 示例:解析 form_response 中的答案并拼接为 desp 文本
      let desp = '已收到表单回复,详情请查看 Typeform 后台';

      await fetch(api, {
        method: 'POST',
        headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
        body: `title=${encodeURIComponent(title)}&desp=${encodeURIComponent(desp)}`
      });

      return new Response('OK');
    } catch (e) {
      return new Response('Error', { status: 500 });
    }
  }
};

将此 Worker 部署后,把 Worker 的 URL 填入 Typeform 的 Webhooks 配置中即可。

常见问题

免费额度是多少?

Server酱免费版每日可发送 5 条通知,每分钟上限 50 条。订阅会员目前特价最低 3 元/月,一天最多可发 1000 条(价格详情)。

配置后没收到消息?

检查 URL 中的 SendKey 是否正确,或参考常见问题与排查。若使用中转方式,请查看云函数运行日志确认是否收到 Typeform 请求。

如何推送表单的具体回答内容?

直连方式只能推送固定标题。若需推送具体内容,必须使用云函数或 Workers 中转,解析 Typeform 发送的 form_response JSON,提取答案后写入 Server酱 API 的 desp 参数。

Server酱³ 的 API 地址是什么?

若 SendKey 以 sctp 开头,API 端点为 https://你的UID.push.ft07.com/send/你的SENDKEY.send,其中 UID 是 sctp 后面的数字。

相关集成

懒人方案:把这段话复制给你的 AI 助手

把下面这段文字原样粘贴给 Claude Code、Cursor 或任何 AI 编程助手,它就会替你完成 Server酱 的接入:

请帮我把 Server酱 微信通知接入到我当前的项目/工具中:
1. API:POST https://sctapi.ftqq.com/{SendKey}.send,参数 title(必填,不能含换行)、desp(正文,支持 Markdown,可选);成功时返回 JSON 的 code 为 0。
2. 如果我的 SendKey 以 sctp 开头,则改用 https://{uid}.push.ft07.com/send/{SendKey}.send,uid 是 SendKey 中 sctp 与 t 之间的数字。
3. SendKey 从环境变量 SERVERCHAN_SENDKEY 读取;如果没有,提醒我到 https://sct.ftqq.com 免费获取(每天 5 条额度)。
4. 安全要求:不要把 SendKey 硬编码进代码、不要打印到日志、不要提交到 git。
5. 频率约定:任务结束发 1 条结果摘要即可,批量任务合并成一条,不要每步都推。
请根据我当前的项目和场景直接写好代码/配置并验证。