技能定位
static-form-email-crm-upgrade 是一个面向网页项目迭代的流程型技能,专门用于把已经存在于前端页面中的静态表单升级为真实可运营的表单能力。它覆盖 PDF 下载留资、邮件订阅、咨询预约、线索收集、自动回复邮件、CRM 同步、邮件加 CRM 混合流、后端 API 设计、字段校验、隐私边界梳理和上线前交付检查。
核心原则:前端负责输入体验和状态反馈;后端或可信表单服务负责邮件发送、CRM 写入、密钥调用、权限校验和可追踪日志。
static-form-email-crm-upgrade 是一个面向网页项目迭代的流程型技能,专门用于把已经存在于前端页面中的静态表单升级为真实可运营的表单能力。它覆盖 PDF 下载留资、邮件订阅、咨询预约、线索收集、自动回复邮件、CRM 同步、邮件加 CRM 混合流、后端 API 设计、字段校验、隐私边界梳理和上线前交付检查。
核心原则:前端负责输入体验和状态反馈;后端或可信表单服务负责邮件发送、CRM 写入、密钥调用、权限校验和可追踪日志。
当用户提出“让表单真的工作起来”的需求时,就应考虑调用该技能。典型场景包括输入邮箱后收到 PDF 下载链接、提交咨询表单到 CRM、把订阅邮箱保存到邮件营销平台,或提交后同时自动回复并记录销售线索。
| 用户表达 | 实际需求 | 推荐分支 |
|---|---|---|
| 输入邮箱后把 PDF 发到邮箱 | 邮件发送、模板变量、下载链接 | 后端邮件分支 |
| 把邮箱保存下来,方便后续跟进 | 线索持久化、导出或 CRM 同步 | CRM 或数据库分支 |
| 发送下载链接,同时记录客户信息 | 多步骤编排、邮件加留资 | 混合分支 |
| 接入 HubSpot、Mailchimp 或 CRM | 外部系统 API 同步 | CRM 集成分支 |
| 先做一个可演示版本 | 浏览器内校验和成功提示 | 静态演示分支 |
正式改造前,需要先确认表单的业务承诺。业务承诺是指用户提交后页面到底承诺发生什么,例如“下载链接已发送到邮箱”“顾问将在 24 小时内联系你”或“完整 PDF 已解锁”。如果承诺不清晰,技术实现就容易和用户预期错位。
| 需要确认的项目 | 示例问题 | 为什么重要 |
|---|---|---|
| 表单目的 | 是下载 PDF、订阅邮件,还是预约咨询? | 决定接口命名、字段和成功文案 |
| 数据字段 | 只收邮箱,还是也收姓名、电话、需求? | 决定校验、CRM 字段映射和隐私提示 |
| 提交后动作 | 发邮件、保存 CRM、显示链接,还是三者都有? | 决定使用哪条架构分支 |
| 服务商 | 是否已有 Resend、SendGrid、HubSpot、Mailchimp 等账号? | 决定集成方式与密钥需求 |
| 合规文案 | 是否需要订阅同意、隐私政策或退订说明? | 决定前端勾选项和邮件模板内容 |
| 文件权限 | 下载链接是公开、限时,还是仅购买后可用? | 决定是否需要签名 URL 或权限校验 |
这个技能不是默认把所有表单都做成复杂后端,而是选择能满足目标的最小架构。早期验证可以使用第三方表单平台;需要产品化、可追踪和可扩展的业务流程时,应采用后端 API。
| 分支 | 适用场景 | 实现形态 | 交付边界 |
|---|---|---|---|
| 静态演示 | 只需要演示效果 | 前端校验邮箱并显示提示或链接 | 必须说明不会真实发送或保存 |
| 第三方表单 | 快速收集线索 | 前端提交到托管表单端点 | 需要说明服务商后台配置 |
| 后端邮件 | 自动回复或发送下载链接 | 前端调用 API,API 调用邮件服务商 | 密钥只放在服务端环境变量 |
| 后端 CRM | 销售跟进或客户管理 | 前端调用 API,API upsert CRM 联系人 | 字段映射需要验证 |
| 混合流程 | 邮件、CRM、日志和重试都需要 | API 负责校验、存储、发送、同步和记录 | 需要定义失败和重试行为 |
技能建议先写入项目待办,再进行最小范围文件检查。通常只需要查看表单页面、路由文件、样式文件和项目配置,不应重写无关页面或大范围改造视觉系统。这个流程强调渐进改造:先稳定前端体验,再接入 API;先校验输入,再连接服务商。
| 步骤 | 操作 | 验收标准 |
|---|---|---|
| 1 | 明确表单目的、字段和提交后的用户承诺 | 成功文案和业务结果没有歧义 |
| 2 | 选择静态、第三方、后端邮件、后端 CRM 或混合分支 | 用户能理解哪些能力是真实的,哪些仍是占位 |
| 3 | 改造前端提交逻辑 | 具备 loading、success、invalid、error 状态 |
| 4 | 按需添加后端校验和服务商封装 | 服务端重新校验输入,密钥只在服务端读取 |
| 5 | 映射 CRM 字段或邮件模板变量 | 保留 source、offer、consent、timestamp 等上下文 |
| 6 | 执行端到端验证 | 构建通过,测试提交结果符合预期 |
| 7 | 保存检查点并交付说明 | 最终报告说明真实能力、占位能力和后续配置项 |
前端负责可访问、清晰、可信的交互体验。表单应使用明确的 label、合适的 input type、可见 focus 状态、加载状态、错误提示和成功提示。若仍停留在静态演示分支,成功提示不能声称“邮件已发送”,而应明确为演示状态或页面已展示下载链接。
| 状态 | 用户体验 | 技术含义 |
|---|---|---|
| idle | 表单可填写,按钮可点击 | 初始状态或重置状态 |
| loading | 按钮显示提交中,避免重复提交 | 请求正在进行 |
| success | 展示成功提示或后续入口 | API 或演示流程完成 |
| error | 展示可恢复错误,保留输入内容 | 校验失败或服务端失败 |
{ email, source, offer, consent }对于 PDF 下载留资,source 记录页面来源,offer 记录请求资产,consent 表达是否同意接收相关邮件或后续联系。
后端 API 应围绕表单目的设计聚焦端点。例如 PDF 下载留资可使用 POST /api/leads/pdf-download。服务端需要重新校验邮箱和必填字段,避免只依赖浏览器校验,并处理限流、线索写入、邮件发送、CRM 同步、错误码返回和失败日志。
| 后端关注点 | 责任说明 |
|---|---|
| 输入校验 | 重新校验邮箱、同意项和必要字段 |
| 密钥管理 | 邮件服务商、CRM、数据库凭证只能从环境变量读取 |
| 速率限制 | 按邮箱或 IP 限制重复提交,减少滥用 |
| 持久化 | upsert 联系人或记录 lead submission |
| 邮件发送 | 调用邮件服务商并传入模板变量 |
| CRM 同步 | 映射标签、生命周期阶段、来源和备注 |
| 可观测性 | 记录失败原因,但不泄露密钥和敏感数据 |
建议使用稳定错误码,例如 invalid_email、missing_consent、rate_limited、email_failed 或 crm_failed,再由前端翻译为用户可理解的中文提示。
真实运营流程不应只保存邮箱。为了后续分群、转化分析和自动化跟进,表单需要保留上下文信息。尤其是多个页面、多个产品或多个下载资产共用同一 CRM 时,缺少来源字段会降低线索价值。
| 内部字段 | 示例 | 用途 |
|---|---|---|
| [email protected] | 联系人唯一标识 | |
| source | trial-preview | 来源页面或组件 |
| offer | healing-cards-digital-pdf | 用户请求的资产或产品 |
| tags | trial_pdf,digital_version | 后续分群和自动化触发 |
| consent | true | 权限与合规上下文 |
| created_at | ISO 时间戳 | 首次捕获时间 |
| last_submitted_at | ISO 时间戳 | 最近提交时间和重复提交追踪 |
保存检查点前,需要同时验证构建和真实线索流。如果服务商凭证尚未配置,应使用 mock、占位接口或测试模式验证代码路径,并在交付中明确说明真实投递尚未启用。
| 测试项目 | 期望结果 |
|---|---|
| 空邮箱或格式错误邮箱 | 不发起网络请求,并显示清晰校验错误 |
| 有效邮箱 | API 请求成功,页面显示成功状态 |
| 重复提交同一邮箱 | 更新或去重联系人,而不是制造脏数据 |
| 邮件服务失败 | 用户看到可恢复错误,输入内容仍保留 |
| CRM 字段映射 | source、offer、tags、consent 等字段正确 |
| 测试邮件投递 | 测试收件箱收到正确模板和链接 |
| 构建检查 | 项目构建命令通过 |
如果表单在本地可用但发布后失败,首先检查部署环境是否真的包含对应 API 端点,以及环境变量是否已在部署环境配置。若邮件没有投递,需要检查服务商错误、发件域名验证、模板变量、退信、垃圾邮件拦截和发送额度。
| 问题 | 常见原因 | 处理方式 |
|---|---|---|
| 发布后 404 | 静态部署中不存在后端 API | 升级后端能力或改用第三方表单端点 |
| 邮件未收到 | 发件域名未验证、模板错误或进入垃圾箱 | 检查服务商日志和测试收件箱 |
| CRM 重复联系人 | 未按邮箱 upsert,或字段映射不一致 | 统一唯一键和更新策略 |
| 前端显示成功但后台无记录 | 使用了静态演示逻辑或请求被拦截 | 检查网络请求和接口响应 |
| 密钥泄露风险 | 在前端代码中写入 API Key | 立即移除并改为服务端环境变量 |
当任务涉及真实账号、真实凭证、真实邮件投递、CRM 数据写入或隐私/同意文案修改时,需要先向用户确认。以下情况不应在未确认的情况下继续执行。
使用该技能完成任务后,最终交付应明确区分“已真实接通”和“仍需配置”的部分。尤其是邮件服务、CRM 同步和验证结果,需要用用户能理解的语言说明实际状态。
| 交付项目 | 推荐说明 |
|---|---|
| 前端表单 | 已完成输入、校验、加载、错误和成功状态 |
| 后端 API | 已新增提交接口,并在服务端完成校验和服务商调用 |
| 邮件服务 | 若已配置密钥,应说明邮件通过指定服务商发送;若未配置,应说明仍需添加环境变量 |
| CRM 同步 | 应说明已映射哪些字段、标签和来源信息 |
| 验证结果 | 应说明构建是否通过、测试邮箱是否收到邮件、CRM 是否出现记录 |
| 后续动作 | 应列出发件域名验证、真实收件人测试、隐私文案确认或发布步骤 |
以“试读 PDF 邮箱表单”为例,当前静态前端可以显示下载链接,但不会真实保存邮箱或发送邮件。若要使用该技能升级,推荐路径是先将项目升级为具备后端 API 的形态,再添加 POST /api/leads/pdf-download,服务端保存邮箱和来源字段,然后调用邮件服务商发送完整 PDF 链接,最后把同一条线索同步到 CRM 或邮件营销名单。
如果目标只是验证转化率,可以先走第三方表单或简化后端邮件分支;如果目标是销售跟进,则应采用混合分支,并保留 source=trial-preview、offer=healing-cards-digital-pdf、tags=trial_pdf,digital_version 和 consent=true 等字段。