設計背景
目前平台上缺乏對用戶來源和生命周期的管理,導致外部投放活動和平台的運營活動無法精確掌握投放效果。這次增加的功能,可以讓我們掌握不同的投放、活動所帶來的用戶質量,從而優化投放及活動手段。
設計概覽
通過在鏈接后面添加UTM(跟蹤模塊)參數的方式,跟蹤用戶來源。並且通過為游客模式的用戶分配臨時ID的方式,可以從游客時期就開始跟蹤用戶行為,從而更充分的掌握投放效果和用戶質量。
詳細設計
UTM參數
UTM(urchin tracking module)是一套標准的渠道跟蹤工具,除了用來跟蹤不同渠道的流量效果外,還可以用來作為精細化運營工具,不斷優化投放、活動效果。
UTM常用的參數有5個,分別如下:
用戶生命周期
用戶的生命周期是由一系列具體的用戶行為構成的,在本次設計中,定義的可以收錄入用戶生命周期的用戶行為有:第一次瀏覽(第一次使用該產品)、登錄、注冊、訪問課程、下單、購買成功和參與活動(活動特指訪問帶有UTM參數的頁面,可能是對外投放的廣告,也可能是官網的一次活動)。下文中將需要收錄入用戶生命周期的用戶行為命名為用戶關鍵行為。
收錄的用戶關鍵行為的格式為:行為、行為對象、設備、瀏覽器、時間戳。比如用戶下單了某個課程A,收錄的格式為:下單、課程A、手機、APP、時間戳。
臨時ID
用戶以游客身份訪問網站時(PC、M站、APP),如果是以游客身份,需要給用戶分配一個唯一的臨時ID,並且需要以該臨時ID在后台創建一個用戶生命周期記錄。后續該用戶注冊或者登錄后,需要將該臨時ID上發生的用戶關鍵行為合並到學號上去。但該臨時ID不要刪除,以便繼續統計用戶萬一退出登錄后在平台上的行為。更多知識講解,微信搜索:碼農編程進階筆記
創建臨時ID時,需要同時將第一次瀏覽的信息寫上,如果是通過活動鏈接,則將該次行為記為“參與活動”,否則的話就記為第一次瀏覽。比如用戶通過百度搜索,進入主頁,記錄的格式為:第一次瀏覽、具體鏈接、PC、Chrome、時間戳。
數據統計
用戶通過活動鏈接創建的賬戶,需要對用戶的后續關鍵行為做持續統計,比如注冊、購買等,以方便根據這些數據做精細化的運營,提升廣告或者活動效率。
一個用戶參與了多次活動,比如活動A、B、C,后續該用戶如果注冊或者購買了課程(任何平台課程都可以),則注冊或者購買數據,需要統計到活動A上,因為是活動A最早觸達該用戶,使其了解到公司的產品。
技術實現思路
當存在這幾個參數的時候去匹配是否有設置投放utm
有:則將唯一標識存入到cookie
沒有:則不是廣告投放來源
虛擬id:暫時用php中session_id作為虛擬id的(更多知識講解,微信搜索:碼農編程進階筆記)
當發現用戶已注冊或登錄后,將要把虛擬id生成的所有記錄綁定到uid上,這樣才能不丟失未注冊人的生命周期。如果未注冊或登錄,那就沒辦法了。
數據庫設計
用戶生命周期記錄表
CREATE TABLE `utm` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`vid` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '登陸前的虛擬id',
`uid` int(11) NOT NULL DEFAULT '0' COMMENT '用戶id',
`utm_url_id` int(11) NOT NULL DEFAULT '0' COMMENT '關聯投放id',
`url` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '記錄鏈接',
`device` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '設備',
`browser` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '瀏覽器',
`course_id` int(11) NOT NULL DEFAULT '0' COMMENT '課程',
`pay_amount` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '消費金額',
`add_time` int(11) NOT NULL DEFAULT '0' COMMENT '添加時間',
`action` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '行為',
PRIMARY KEY (`id`),
KEY `rds_idx_0` (`uid`,`vid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='用戶生命周期記錄'
廣告投放表
CREATE TABLE `utm2` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '鏈接名稱',
`url` text COLLATE utf8_unicode_ci NOT NULL COMMENT 'url完整地址',
`utm_campaign` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '縮略名',
`utm_source` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '來源',
`utm_medium` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '媒介',
`utm_term` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '關鍵詞',
`utm_content` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '內容',
`add_time` int(11) NOT NULL DEFAULT '0' COMMENT '添加時間',
`url_index` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT 'url唯一索引',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='廣告投放'