订单/预约自动提醒的核心:模板 + 用户授权 + 服务端触发
微信小程序的「订阅消息」做订单发货提醒、到店预约提醒,逻辑很固定:后台申请模板,页面里用 wx.requestSubscribeMessage 让用户点一次同意,后面由云函数/自建服务在合适的时间调用接口推送。
常见场景:用户下单成功后弹一次授权;预约成功后弹一次授权;等到「发货/到店前1小时/改期成功」再推送一条消息给他。
模板申请:在公众平台把参数对齐
去微信公众平台(小程序)里找到:功能 > 订阅消息,点「新建模板」,从类目模板库选你需要的模板。
- 模板总数上限:25个,别乱建,按业务主链路来
- 模板详情页会看到类似 {{thing1.DATA}} 这种参数;小字就是你要传的字段
- 参数名可以改成好懂的,比如把 thing1 标注成「活动名称/预约项目」
- 模板创建后基本不能改,字段想换就新建一个模板,老模板逐步下线
触发推送配置:用户同意不等于立刻发
小程序端在关键动作后(下单成功页、预约成功页)调用:
- wx.requestSubscribeMessage:一次最多带3个模板ID(tmplIds)
- 返回结果里,模板ID对应状态是 accept 才算用户同意
用户点了同意,你可以把「同意记录」和「业务单号」绑定存起来。真正要发的时候(比如预约开始前、订单发货后),服务端调用接口:message/subscribe/send,带上 openid + template_id + data + page(page 只能跳本小程序页面,可带参数)。
例子:预约「明天 15:00 到店」,你在服务端定时任务里,提前 60 分钟触发 send;page 配成 /pages/order/detail?id=123 让用户点开直接看详情。
发送频控与送达统计:别踩规范,数据要看得见
频控上有两条要记牢:
- 订阅消息强调用户触发的服务结果通知,别拿来群发营销(容易违规)
- 接口调用次数有限制,量大时要做队列/重试/错峰,失败就记录原因
数据统计建议做两层:
- 平台侧:在公众平台看接口调用与发送概况(能发现是否超限、token 是否异常)
- 你自己:每次 send 记录「单号、openid、模板ID、发送时间、返回码」,按天出报表,算送达率、失败率
可执行建议:把「下单成功/预约成功」页做成统一的订阅弹窗组件(最多3条模板),只在用户确实完成动作后弹;服务端用队列把「待发送提醒」按时间排序,设置失败重试(比如 3 次),再配一个后台看板盯住返回码和失败原因,这套跑起来,订单/预约自动提醒就稳定了。