做跨境、跑独立站或运营多个社媒矩阵时,一个常见需求是:给每个投放渠道(Facebook / Instagram / 邮件 / 官网)生成一条独立的 WhatsApp 联系入口,并且能区分客户到底从哪个渠道来。
本文用一个完整可跑的 Python 脚本,演示如何批量生成"带来源参数的 WhatsApp 链接"并导出成二维码图片,全部基于官方 wa.me 深度链接,不依赖任何第三方账号。
一、原理:wa.me 深度链接 + 来源参数
WhatsApp 官方深度链接格式:
https://wa.me/<手机号(带国家码,无+和空格)>?text=<预填消息>
要在链接里携带渠道来源,有两种思路:
- 把来源写进
text:客户发来的第一条消息自带[来自FB广告],你一眼能分辨。 - 用独立短链 / 二维码 + 点击统计:每个渠道一张图、一条链接,后台看点击和对话数。
下面脚本实现第一种(自包含、零依赖账号),并在文末说明如何升级成第二种。
二、完整代码
python
# pip install qrcode[pil]
import urllib.parse
import qrcode
from pathlib import Path
WA_NUMBER = "8613800000000" # 你的 WhatsApp 号码,带国家码,不要 + 和空格
OUTPUT_DIR = Path("wa_qrcodes")
OUTPUT_DIR.mkdir(exist_ok=True)
# 渠道配置:名字 -> 预填话术前缀
CHANNELS = {
"facebook": "我想咨询,来自FB广告",
"instagram": "我想咨询,来自IG主页",
"email": "我想咨询,来自邮件",
"website": "我想咨询,来自官网",
}
def build_wa_link(channel: str, preset: str) -> str:
text = urllib.parse.quote(preset)
return f"https://wa.me/{WA_NUMBER}?text={text}"
def make_qr(link: str, name: str):
img = qrcode.make(link)
path = OUTPUT_DIR / f"wa_{name}.png"
img.save(path)
return path
if __name__ == "__main__":
for name, preset in CHANNELS.items():
link = build_wa_link(name, preset)
path = make_qr(link, name)
print(f"[{name}] {link}\n -> QR: {path}\n")
运行后,wa_qrcodes/ 目录下会生成 wa_facebook.png、wa_instagram.png 等四张二维码,分别投放到对应渠道即可。客户扫码后,会话里自动带上"来自XX"前缀,你可以直接在 WhatsApp 里按来源归类客户。
三、进阶:把来源做成可统计的短链
上面的方案靠 text 前缀区分来源,但拿不到"每个渠道点了多少次"。要做到点击统计 + 后台看板,有两种路:
- 自搭 :用 Nginx / Cloudflare Worker 做一层 302 跳转,记录来访
referer和渠道参数,再跳到wa.me;数据落库即可出报表。 - 用现成服务:不少 SaaS 支持"按渠道生成品牌短链 + 二维码 + 点击分析",例如 WALink(免费)就能一站式生成带统计的 WhatsApp 短链和二维码,省去自己维护跳转服务的成本。按团队需要选,小体量用脚本够用,矩阵化运营再上服务。
四、注意事项
wa.me号码必须是带国家码、去掉+和空格 的数字,例如中国号13800000000写成8613800000000。text必须 URL 编码(脚本里已用urllib.parse.quote处理中文)。- 不要把二维码堆在违规场景(如平台私信硬广),否则可能被限流。
- 预填话术别太长,移动端体验更好。
小结
用十来行 Python,就能给每个渠道生成独立、可溯源的 WhatsApp 入口;想要点击数据再叠加一层短链统计即可。核心就一句:让每个渠道的入口可区分,投放才有据可依。