手把手教你如何做一套utm廣告投放系統(tǒng)
設計背景
目前平臺上缺乏對用戶來源和生命周期的管理,導致外部投放活動和平臺的運營活動無法精確掌握投放效果。這次增加的功能,可以讓我們掌握不同的投放、活動所帶來的用戶質(zhì)量,從而優(yōu)化投放及活動手段。
設計概覽
通過在鏈接后面添加UTM(跟蹤模塊)參數(shù)的方式,跟蹤用戶來源。并且通過為游客模式的用戶分配臨時ID的方式,可以從游客時期就開始跟蹤用戶行為,從而更充分的掌握投放效果和用戶質(zhì)量。
詳細設計
UTM參數(shù)
UTM(urchin tracking module)是一套標準的渠道跟蹤工具,除了用來跟蹤不同渠道的流量效果外,還可以用來作為精細化運營工具,不斷優(yōu)化投放、活動效果。
UTM常用的參數(shù)有5個,分別如下:

用戶生命周期
用戶的生命周期是由一系列具體的用戶行為構成的,在本次設計中,定義的可以收錄入用戶生命周期的用戶行為有:第一次瀏覽(第一次使用該產(chǎn)品)、登錄、注冊、訪問課程、下單、購買成功和參與活動(活動特指訪問帶有UTM參數(shù)的頁面,可能是對外投放的廣告,也可能是官網(wǎng)的一次活動)。下文中將需要收錄入用戶生命周期的用戶行為命名為用戶關鍵行為。
收錄的用戶關鍵行為的格式為:行為、行為對象、設備、瀏覽器、時間戳。比如用戶下單了某個課程A,收錄的格式為:下單、課程A、手機、APP、時間戳。
臨時ID
用戶以游客身份訪問網(wǎng)站時(PC、M站、APP),如果是以游客身份,需要給用戶分配一個唯一的臨時ID,并且需要以該臨時ID在后臺創(chuàng)建一個用戶生命周期記錄。后續(xù)該用戶注冊或者登錄后,需要將該臨時ID上發(fā)生的用戶關鍵行為合并到學號上去。但該臨時ID不要刪除,以便繼續(xù)統(tǒng)計用戶萬一退出登錄后在平臺上的行為。更多知識講解,微信搜索:碼農(nóng)編程進階筆記
創(chuàng)建臨時ID時,需要同時將第一次瀏覽的信息寫上,如果是通過活動鏈接,則將該次行為記為“參與活動”,否則的話就記為第一次瀏覽。比如用戶通過百度搜索,進入主頁,記錄的格式為:第一次瀏覽、具體鏈接、PC、Chrome、時間戳。
數(shù)據(jù)統(tǒng)計
用戶通過活動鏈接創(chuàng)建的賬戶,需要對用戶的后續(xù)關鍵行為做持續(xù)統(tǒng)計,比如注冊、購買等,以方便根據(jù)這些數(shù)據(jù)做精細化的運營,提升廣告或者活動效率。
一個用戶參與了多次活動,比如活動A、B、C,后續(xù)該用戶如果注冊或者購買了課程(任何平臺課程都可以),則注冊或者購買數(shù)據(jù),需要統(tǒng)計到活動A上,因為是活動A最早觸達該用戶,使其了解到公司的產(chǎn)品。
技術實現(xiàn)思路
當存在這幾個參數(shù)的時候去匹配是否有設置投放utm
有:則將唯一標識存入到cookie
?沒有:則不是廣告投放來源
虛擬id:暫時用php中session_id作為虛擬id的(更多知識講解,微信搜索:碼農(nóng)編程進階筆記)
當發(fā)現(xiàn)用戶已注冊或登錄后,將要把虛擬id生成的所有記錄綁定到uid上,這樣才能不丟失未注冊人的生命周期。如果未注冊或登錄,那就沒辦法了。
數(shù)據(jù)庫設計
用戶生命周期記錄表
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?'關聯(lián)投放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?'內(nèi)容',
??`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='廣告投放'
