每次退出小程序,地址栏就丢了,怎么才能把它存住啊?
做小程序,尤其是本地生活、同城服务、门店引流这类业务,最容易犯的一个错误就是:用户点进来,看完就走了,你根本不知道他来自哪里。地址栏,也就是小程序页面路径上的那串参数,藏着用户来源的密码。比如一个用户从你发的“满减优惠券”海报扫码进来,地址栏里可能带着“scene=1001”这样的标记。如果你不保存它,就等于把到手的线索扔进垃圾桶。今天咱们就掰开揉碎,讲清楚小程序怎么保存地址栏,而且每一步都要能帮你抓到潜在成交客户。
先讲一个真实案例。我在西安帮一家火锅店做小程序推广,他们在抖音投了本地推,又在小区电梯里放了海报。结果后台数据一团乱,根本分不清哪个渠道来的顾客核销了优惠券。后来我让他们在小程序启动时,把地址栏里的“source”参数存到本地缓存里。操作很简单:在app.js的onLaunch或onShow里,用options.query拿到所有参数,然后用wx.setStorageSync存起来。比如参数里有“utm_source=电梯广告”,你就存成“ad_source: 电梯广告”。这样顾客从领券到到店核销,整条链路都能追溯。火锅店老板一看数据,发现电梯广告带来的核销率比抖音高3倍,立马把预算全砸到地推上。这就是地址栏保存的价值——你花的每一分钱,都能算出回报。
但卡在一个细节上:小程序冷启动和热启动时,地址栏参数获取方式不一样。冷启动,就是用户完全关闭小程序再打开,这时候参数在onLaunch的options里。热启动,用户只是从后台切回来,参数在onShow的options里。如果你只写了一个生命周期,就会漏掉一半数据。我见过一个做二手家具回收的小程序,他们只在onLaunch里存参数,结果用户从朋友圈分享链接点进来,只要之前打开过小程序,参数就丢了。后来我帮他们改了代码:在app.js里同时监听onLaunch和onShow,把两个生命周期里的参数合并到一个对象里,再统一存缓存。改了之后,他们发现朋友圈分享带来的咨询量其实很大,之前因为数据丢失,一直没重视这个渠道。
还有一个更深的坑:参数可能被截断。微信小程序地址栏的scene参数最长只能1024个字节,如果你塞了太多自定义参数,比如“user_id=12345&campaign_id=67890&ad_id=abcde”,很容易被截掉后面部分。我一个做宠物美容预约的朋友就吃过这个亏。他在海报二维码里放了10个参数,结果用户扫码进来,只能拿到前5个。后来我让他把所有参数压缩成一个JSON字符串,用encodeURIComponent编码后,再放进scene里。解码时用decodeURIComponent解析,再转成对象。这样不仅不会截断,还能存更多信息。改完之后,他发现某个宠物社群的团长带来的订单特别多,于是单独给那个团长做了分佣方案,一个月多卖了2万块的洗护套餐。
保存地址栏不只是为了记录来源,还可以用来做个性化推荐。比如一个用户从“狗粮促销”页面进来,地址栏里带着“category=dog_food”。你把这个参数存到本地后,可以在小程序首页优先展示狗粮类商品。我帮一个宠物用品小程序做过这个功能:用户第一次打开,首页是通用推荐;但只要他通过某个分类链接进来,下次再打开,首页就会自动匹配那个分类的热销品。结果用户停留时长提升了40%,加购率涨了25%。因为用户觉得这个小程序“懂他”,而不是冷冰冰的货架。
操作步骤其实就三步,但每一步都有细节。第一步,在app.js的onLaunch和onShow里,用options.query拿到所有参数,注意要处理options为undefined的情况,否则会报错。第二步,用wx.setStorageSync把参数存到本地,key可以叫“pageParams”,value是JSON.stringify后的对象。第三步,在需要用到参数的地方,比如商品详情页、下单页,用wx.getStorageSync取出来,然后根据参数做业务逻辑。比如参数里有“coupon_id=10086”,你就在用户进入页面时自动弹出一个优惠券领取弹窗。这样做的好处是,用户不用手动输入优惠码,转化率能提高一大截。
对比一下,很多教程只告诉你“用options.query拿参数”,但从来不告诉你冷热启动的区别,也不告诉你参数截断的问题,更不会告诉你这些参数能用来做成交。你按照那些教程做了,结果数据还是乱的,钱还是白花了。而按照我今天讲的方法,你不仅能保存地址栏,还能把它变成一台印钞机。比如一个做本地家政的小程序,他们保存了“小区名称”这个参数,用户从某个小区群里的链接进来,小程序就自动显示“您附近的小区已开通服务”,然后推荐那个小区的保洁套餐。结果那个小区的下单率是其他渠道的5倍。
最后说一个容易被忽略的细节:隐私合规。你保存地址栏参数时,如果参数里包含用户的openId或者手机号,一定要在用户授权后再存,否则可能违反微信的隐私政策。我一般建议只存渠道来源、活动ID、商品ID这类非隐私数据。如果确实需要存用户标识,可以用临时token代替,用完就清掉。比如一个做装修咨询的小程序,他们通过地址栏传了用户的手机号,结果被微信警告了。后来改成传一个临时会话ID,用户打开小程序后,用这个ID去后台匹配手机号,既合规又安全。
你现在就可以打开自己的小程序后台,看看有没有在app.js里同时监听onLaunch和onShow。如果没有,赶紧补上。然后把参数存到缓存里,再在关键页面用起来。比如你是一个做教育培训的,用户从“试听课报名”海报进来,地址栏里带着“course_id=数学”。你存下来之后,在用户进入首页时,直接推荐数学相关的课程和优惠。这样用户会觉得你特别贴心,成交概率自然就高了。记住,地址栏不是一串没用的字符,它是用户告诉你的第一句话,你得听懂,还得记下来。

