อีเวนต์ทางเฟือง ช่วยให้คุณติดตามความคืบหน้าของผู้ใช้ผ่านช่วงเวลาสําคัญของประสบการณ์ของคุณ ซึ่งรวมถึง:
- ออนบอร์ด - ผู้ใช้วางสิ่งที่พวกเขาทิ้งเมื่อเริ่มต้นด้วยประสบการณ์ของคุณที่ไหน
- ความคืบหน้า - ผู้ใช้หยุดการเดินหน้าผ่านประสบการณ์ของคุณที่ไหน
- ร้านค้า - ผู้ใช้ทิ้งการซื้อที่ไหน?
เมื่อประสบการณ์ของคุณเริ่มติดตามอีเวนต์ของ Funnel คุณจะปลดล็อกหน้า Funnel ของแดชบอร์ดวิเคราะห์ของ ศูนย์กลางครีเอเตอร์
ติดตามอีเวนต์สนามของฟันเนล
เพื่อติดตามเหตุการณ์ในช่องทาง ให้ตรวจสอบก่อนว่าช่องทางที่สำคัญที่สุดในประสบการณ์ของคุณคืออะไรและแบ่งออกเป็นขั้นตอนกระบวนการออนบอร์ดเป็นสถานที่ที่ดีในการเริ่มต้นเนื่องจากเป็นที่ที่คุณอาจสูญเสียผู้ใช้ส่วนใหญ่
ติดตามฟันเนลเดียวครั้งเดียว
ฟังก์ชันการตรวจสอบอัตราการแปลงแบบครั้งเดียวติดตามเหตุการณ์การแปลงที่เกิดขึ้นเพียงครั้งเดียวต่อผู้ใช้
ตัวอย่างทั่วไปคือช่องทางการฝึกอบรม ซึ่งเป็นสิ่งสำคัญในการเข้าใจวิธีปรับปรุงการรักษาผู้ใช้ใหม่และเวลาเซสชันของประสบการณ์ของคุณ ตัวอย่างต่อไปนี้เป็นช่องทางการออนบอร์ดสำหรับ พืช ประสบการณ์ไทคูนที่ผู้ใช้ใหม่เข้าสู่ฟาร์ม ปลูกเมล็ดพืช รดน้ำพืช และอื่นๆ ในลำดับต่อเนื่อง:
ติดตามขั้นตอนการฝึกอบรมในโรงงาน
local AnalyticsService = game:GetService("AnalyticsService")-- บันทึกขั้นตอนแรกของ FTUEAnalyticsService:LogOnboardingFunnelStepEvent(player,1, -- หมายเลขขั้นตอน"In Farm" -- ชื่อขั้นตอน)-- บันทึกขั้นที่สองAnalyticsService:LogOnboardingFunnelStepEvent(player,2, -- หมายเลขขั้นตอน"Plant Seed" -- ชื่อขั้นตอน)
ติดตามฟันเนลที่เกิดซ้ำ
สายฟ้าที่เกิดซ้ำเฝ้าติดตามเหตุการณ์การแปลงที่เกิดขึ้นหลายครั้งต่อผู้ใช้
ตัวอย่างทั่วไปคือช่องทางร้านค้า ซึ่งเป็นสิ่งสำคัญในการเข้าใจวิธีปรับปรุงการแปลงผู้ชำระเงินประสบการณ์ของคุณ รายได้เฉลี่ยต่อผู้ใช้งานที่จ่ายเงิน (ARPPU)และรายได้ ตัวอย่างต่อไปนี้เป็นช่องทางร้านค้าที่ผู้ใช้เปิดร้านค้า ไอเท็มเพิ่มรายการในตะกร้า และอื่นๆ
ใช้ funnelSessionId เพื่อแยกแยะระหว่างเซสชั่นที่แตกต่างกันของผู้ใช้รายเดียวในช่องทางที่ซ้ำซาก, เช่น เปิดร้านหลายครั้งในเซสชั่นเดียว
ติดตามขั้นตอนร้านค้า
local AnalyticsService = game:GetService("AnalyticsService")local HttpService = game:GetService("HttpService")funnelSessionId = HttpService:GenerateGUID()-- ร้านค้าAnalyticsService:LogFunnelStepEvent(player,"ArmoryCheckout", -- ชื่อช่องทางที่ใช้เพื่อรวมขั้นตอนร่วมกันfunnelSessionId, -- รหัสเซสชันฟันเนลสำหรับเซสชันการชำระเงินที่ไม่ซ้ำกันนี้1, -- หมายเลขขั้นตอน"Opened Store" -- ชื่อขั้นตอน)-- ไอเท็มAnalyticsService:LogFunnelStepEvent(player,"ArmoryCheckout", -- ชื่อช่องทางที่ใช้เพื่อรวมขั้นตอนร่วมกันfunnelSessionId, -- รหัสเซสชันฟันเนลสำหรับเซสชันการชำระเงินที่ไม่ซ้ำกันนี้2, -- หมายเลขขั้นตอน"Viewed Item" -- ชื่อขั้นตอน)-- บันทึกเมื่อผู้ใช้ดูเพิ่มในตะกร้าAnalyticsService:LogFunnelStepEvent(player,"ArmoryCheckout", -- ชื่อช่องทางที่ใช้เพื่อรวมขั้นตอนร่วมกันfunnelSessionId, -- รหัสเซสชันฟันเนลสำหรับเซสชันการชำระเงินที่ไม่ซ้ำกันนี้3, -- หมายเลขขั้นตอน"Added to Cart" -- ชื่อขั้นตอน)
ดำเนินการ funnelSessionId
เมื่อใช้งานฟังก์ชัน คุณสามารถใช้ funnelSessionId เพื่อติดตามกิจกรรมของคุณ อินสแตนซ์ใช้แนวทางต่อไปนี้:
- ทางเดินเพียงครั้งเดียว - คุณไม่จำเป็นต้องใช้ funnelSessionId สำหรับทางเดินเพียงครั้งเดียวเพราะพวกเขาเกิดขึ้นเพียงครั้งเดียวต่อผู้ใช้
- เก็บฟันเนล - ใช้ funnelSessionId เพื่อแยกแยะระหว่างเซสชันที่แตกต่างกันของผู้ใช้รายเดียวในฟันเนลที่ซ้ำซาก, เช่นเปิดร้านหลายครั้งในเซสชันเดียวใน ตัวอย่างก่อนหน้านี้ในกรณีเช่นนี้ซึ่งผู้เล่นอาจเปิดร้านหลายครั้งในเซสชันเดียว แนะนำให้ใช้ GUID เป็น funnelSessionId
- การอัพเกรดรายการ - ใช้ funnelSessionId เพื่อแยกแยะระหว่างเส้นทางการอัพเกรดรายการที่แตกต่างกันโดยทั่วไปในช่วงเวลาที่นานกว่าเซสชันเดียวแทนที่จะใช้ GUID เช่นในกรณีช่องทางร้านค้า คุณมักจะสามารถสร้างกุญแจที่ไม่ซ้ำกันขึ้นอยู่กับรายการที่อัพเกรด เช่น: <playerId>-<itemId>
ขั้นตอนเริ่มต้น
ฟันเนลเริ่มต้นเมื่อขั้นตอนแรกถูกบันทึกหากคุณต้องการเริ่มฟันเนลทันทีเมื่อผู้เล่นเข้าร่วม คุณจะต้องบันทึกขั้นตอนแรกในอีเวนต์ PlayerAdded
บันทึกขั้นตอนแรกในอีเวนต์ PlayerAdded
local AnalyticsService = game:GetService("AnalyticsService")
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
AnalyticsService:LogOnboardingFunnelStepEvent(
player,
1, -- หมายเลขขั้นตอน
"Player Joined" -- ชื่อขั้นตอน
)
end)
ขั้นตอนซ้ำ
หากผู้ใช้ทำซ้ำขั้นตอนในช่องทาง ฟังเนลจะพิจารณาเฉพาะขั้นตอนแรกของขั้นตอนเท่านั้นตัวอย่างเช่น หากผู้ใช้บันทึกขั้นตอนที่ 2 ของฟันเนลสองครั้ง ฟันเนลจะนับเฉพาะตัวอย่างแรกของขั้นตอนที่ 2 เท่านั้น
ข้ามขั้นตอน
หากด้วยเหตุผลบางอย่างคุณข้ามขั้นตอนในสนามแข่งไป ขั้นตอนก่อนหน้าจะสําเร็จโดยอัตโนมัติ
ตัวอย่างเช่น หากคุณมีท่อที่มีขั้นตอน 1, 2 และ 3หากคุณบันทึกขั้นตอนที่ 3 โดยไม่บันทึกขั้นตอนที่ 1 หรือ 2 ท่อจะพิจารณาขั้นตอนที่ 1 และ 2 สําเร็จ
ใช้ตัวกรองทางกระบวนท่า
Roblox ให้ตัวกรองเพื่อช่วยให้คุณวิเคราะห์ข้อมูลทางเทคนิคของสนามของคุณซึ่งรวมถึงข้อมูลผู้เล่น ข้อมูลอุปกรณ์ และคุณสามารถส่งข้อมูลที่กําหนดเองได้เช่นกันในบางกรณีสถานะของผู้เล่นอาจเปลี่ยนแปลงระหว่างช่องทางในระหว่างที่ผู้เล่นเปลี่ยนอุปกรณ์จากมือถือเป็นเดสก์ท็อป เช่น เมื่อผู้เล่นสลับอุปกรณ์
เพื่อหลีกเลี่ยงการนับฟังก์ชันซ้ำ ตัวกรองมักจะ ใช้เฉพาะขั้นตอนแรกของฟังก์ชันเท่านั้น ของฟังก์ชันซึ่งหมายความว่าหากผู้เล่นเปลี่ยนอุปกรณ์ในระหว่างช่องทาง ช่องทางจะถูกโยนให้กับอุปกรณ์ของพวกเขาในเวลาที่พวกเขาเข้าสู่ช่องทางเท่านั้น
เช่นเดียวกันฟังก์ชันจะแสดงโดยกลุ่ม ซึ่งหมายความว่าหากผู้เล่นเข้าสู่ฟังก์ชันในวันที่ 6/19 ฟังก์ชันจะถูกโยนให้กับกลุ่ม 6/19 แม้ว่าพวกเขาจะเสร็จสิ้นฟังก์ชันในวันที่ 6/20
ปรับแต่งฟันเนล
หลังจากที่คุณทำการอัปเดตขั้นตอนในสนามของคุณแล้ว เป็นสิ่งสำคัญที่ต้องตั้งช่วงเวลาที่ถูกต้องเพื่อดูสนามล่าสุดหากวันปัจจุบันคือ 6/21 และคุณอัปเดตขั้นตอนที่ 2 ของฟันเนลการออนบอร์ดล่าสุดในวันที่ 6/14 คุณควรตั้งช่วงเวลาเป็น 6/14 - 6/21 เพื่อดูฟันเนลล่าสุด
หากคุณเลือกช่วงเวลาที่รวมการอัปเดตขั้นตอนฟันเนล จะมีการแสดงคําเตือนบนขั้นตอนที่เกี่ยวข้อง:

ปกป้องฟันเนลของคุณจากนักโจมตี
เพื่อให้ข้อมูลของคุณสะอาด เป็นสิ่งสำคัญที่ต้องเพิ่มระดับการตรวจสอบข้อมูลบางอย่างในรหัสเซิร์ฟเวอร์ของคุณเพื่อป้องกันไม่ให้ผู้โจมตีส่งข้อมูลที่ไม่ถูกต้องไปยังบริการวิเคราะห์ของคุณ
ตัวอย่างเช่น หากคุณมีช่องทางการออนบอร์ดที่มี 3 ขั้นตอน คุณสามารถใช้ RemoteEvent สําหรับลูกค้าเพื่อแจ้งเซิร์ฟเวอร์เมื่อผู้เล่นได้สําเร็จในแต่ละขั้นตอนและเพิ่มการตรวจสอบเซิร์ฟเวอร์เพื่อให้แน่ใจว่าหมายเลขขั้นตอนมีความถูกต้องก่อนที่จะบันทึกเหตุการณ์:
รหัสอีเวนต์ด้านไคลเอนต์
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local onboardingEvent = ReplicatedStorage:WaitForChild("OnboardingEvent")
local function fireOnboardingEvent(step: number)
onboardingEvent:FireServer({ step = step })
end
fireOnboardingEvent(1)
fireOnboardingEvent(2)
fireOnboardingEvent(10) -- invalid step
รหัสอีเวนต์ด้านเซิร์ฟเวอร์
local AnalyticsService = game:GetService("AnalyticsService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local onboardingEvent = ReplicatedStorage:WaitForChild("OnboardingEvent")
local maxStep = 3
local function onPlayerEventFired(player: Player, args: { step: number })
local step = args.step
if(step > maxStep) then
warn(`Invalid tutorial step {step} received from client.`)
return
end
print(`{player.Name} completed step: {step}`)
AnalyticsService:LogOnboardingFunnelStepEvent(player, step)
end
onboardingEvent.OnServerEvent:Connect(onPlayerEventFired)
ใช้ฟิลด์ที่กําหนดเอง
อีเวนต์ของท่อยังช่วยให้สลายลงในฟิลด์ที่กําหนดเองเพื่อสนับสนุนการเปรียบเทียบระหว่างเซกเมนต์ได้ง่ายขึ้นตัวอย่างเช่น คุณสามารถติดตามรถเริ่มต้นที่ให้ผู้เล่นมีความคืบหน้าที่ดีที่สุด หรือแนบแผนที่ต่างๆ เพื่อดูว่าแผนที่บางแผนมีลูปเกมที่ดีกว่าคนอื่นหรือไม่

สำหรับข้อมูลเพิ่มเติม ดู ฟิลด์ที่กําหนดเอง
ใช้ท่อเพื่อเพิ่มประสบการณ์ของคุณ
หนึ่งในฟังก์ชันที่สำคัญที่สุดที่ต้องติดตามคือการออนบอร์ดเพราะประสบการณ์จํานวนมากต่อสู้กับการรักษาผู้ใช้ใหม่และการมีส่วนร่วม
ในท่อเริ่มต้นสำหรับ พืช ด้านล่าง การดรอปออฟที่ใหญ่ที่สุดคือขั้นตอนที่ 2 ("เมล็ดพืช")

ขึ้นอยู่กับข้อมูลนี้คุณสามารถ:
- เพิ่มตัวบ่งบอกบริบทเพื่อช่วยเพิ่มการชี้นำผู้ใช้ไปยังการปลูกเมล็ดเมื่อพวกเขาเริ่มต้น
- ออกแบบประสบการณ์ผู้ใช้ใหม่ที่ต้องการให้ผู้ใช้ปลูกเมล็ดและปลูกพืชที่ประสบความสำเร็จก่อนสำรวจส่วนที่เหลือของประสบการณ์คุณสามารถปรับปรุงอีเวนต์นี้โดยสร้างองค์ประกอบความคิดเห็นเชิงบวก หรือเทคนิคการออกแบบเกมอื่นๆ
