使用 Croct 進行個人化與測試
行銷人員在儀表板 (app.croct.com) 中管理體驗與實驗。你作為代理的任務是:
- 規劃:將使用者的目標轉化為體驗(對象 / 位置 / 內容),並在他們需要驗證時,轉化為實驗(假設、目標、分配、變體)。
- 配置程式碼:確保每個目標區域都是一個插槽,轉換被追蹤為
goalCompleted事件,並且受眾所需的資料已被收集。 - 編寫受眾:一個 CQL 條件。對於此處配方以外的語法,請載入
croct-cql技能。 - 解讀結果:根據文件記錄的閾值讀取儀表板;絕不能宣告儀表板不支援的勝出者。
不要告訴使用者啟動、更改或結束實驗需要更改程式碼。一旦插槽和目標存在,其他一切都是配置。
心智模型
| 概念 | 它是什麼 | 規則 |
|---|---|---|
| 體驗 | 在一個或多個插槽中向受眾顯示的內容 | 由對象(受眾)、位置(插槽)、內容(內容)定義。允許多個受眾;使用內容群組為每個受眾提供其專屬內容。 |
| 受眾 | 根據使用者當前上下文評估的 CQL 條件 | 可以鎖定所有使用者或一個狹窄的區隔。 |
| 優先級 | 每個體驗的獨特排名 | 當受眾在同一插槽上重疊時,優先級較高的體驗獲勝。沒有平手。 |
| 實驗 | 體驗內部的 A/B/n 測試 | 每次在一個體驗中只能有一個。繼承該體驗的受眾和插槽。2 到 5 個變體。 |
| 主要目標 ID | 實驗所要優化的轉換 | 必須與被追蹤的 goalCompleted 事件的 goalId 相符。 |
| 流量分配 | 進入實驗的合格使用者百分比 | 其餘使用者看到體驗內容。 |
誰能看到給定插槽的內容:
| 使用者 | 看到 |
|---|---|
| 不在任何體驗的受眾中 | 插槽預設內容 |
| 在受眾中,但未被分配到實驗 | 體驗內容 |
| 在受眾中且被分配到實驗 | 所分配變體的內容 |
| 在同一插槽上符合多個體驗 | 優先級最高的那個 |
分配是確定性的:訪客 ID 與實驗金鑰一起進行雜湊處理,因此重新載入絕不會改變變體。曝光度會自動追蹤。對於已識別的使用者,使用者 ID 即為分配金鑰,因此變體可以跨裝置跟隨他們(匿名使用者無法做到)。
決定要建置什麼
| 使用者想要... | 建置 |
|---|---|
| 為已知區隔提供不同內容 | 體驗 + 受眾,無實驗 |
| 在全面推出前證明某項變更有效 | 體驗(通常是「所有使用者」)+ 實驗 |
| 測試文案、圖片、版面或某個區塊 | 插槽上的內容實驗(單一 URL,盡可能伺服器端渲染) |
| 測試連結的目標位置 | CTA 實驗:插槽存放連結目的地 |
| 顯示或隱藏元素(促銷橫幅) | 僅針對開發者擁有的固定邏輯使用程式碼端的 evaluate/useEvaluation;否則使用帶有布林屬性的插槽加上體驗,讓行銷人員控制誰能看到。請參閱 croct-integrate-sdk 技能的評估規則 |
| 測試功能或流程,而非可見內容 | 功能旗標實驗:帶有布林屬性的插槽,在伺服器端進行分支 |
| 測試兩個真正不同的頁面(重建的頁面、其他模板、另一個工具的著陸頁) | 重新導向實驗。當只有內容不同時,優先使用內容實驗 |
| 在一個活動中包含多個閾值或區隔(按州別提供免運費) | 一個體驗、多個受眾、內容群組 |
| 需要在設定時間啟動、暫停或恢復的活動 | 排程(附加功能),可選用受眾的時區 |
實作檢查清單
每個體驗或實驗在配置之前,都需要在程式碼中完成以下事項:
- 每個變更區域都有一個插槽。 如果缺少:執行
npx croct@latest add slot <slot-id>@1並使用 SDK 渲染它(請參閱croct-use-cli和croct-integrate-sdk技能)。沒有插槽,就無法透過體驗變更該區域。 - 轉換的
goalCompleted事件(實驗必備)。目標 ID 必須等於實驗的主要目標 ID。如果目標是新的,請在啟動實驗之前部署它。 - 在相關時使用更豐富的轉換事件:
orderPlaced、leadGenerated、userSignedUp會在目標旁邊填入收入、潛在客戶和註冊小工具。 - 受眾需要讀取的資料。 UTM 參數、地理位置和會話資料是自動的;基於貼文、興趣、訂單、潛在客戶或註冊的配方需要追蹤這些事件(請參閱
croct-track-events技能)。 - 使用者識別(如果變體需要跨裝置保持一致)。
追蹤目標
// components/HomeHero.tsx (React; @croct/plug-next 完全相同,需加上 'use client')
import type {ReactElement} from 'react';
import {useContent, useCroct} from '@croct/plug-react';
export function HomeHero(): ReactElement {
const {content} = useContent('home-hero@1');
const croct = useCroct();
function handleClick(): void {
croct.track('goalCompleted', {
goalId: 'hero-cta-click',
});
}
return (
<div>
<h1>{content.title}</h1>
<p>{content.subtitle}</p>
<a href={content.button.link} onClick={handleClick}>{content.button.label}</a>
</div>
);
}
// 純 JavaScript
import croct from '@croct/plug';
croct.track('goalCompleted', {goalId: 'sign-up'});
該事件也接受可選的 value 和 currency(例如 {goalId: 'signup', currency: 'USD', value: 50})。在伺服器端渲染的 PHP 技術棧中,使用模板輔助函式在瀏覽器中追蹤(Blade 中使用 @croct ... @endcroct,Twig 中使用 {% apply croct %} ... {% endapply %})。
在轉換實際發生的地方追蹤目標,也就是在瀏覽器中。對於重新導向實驗,請在兩個頁面上都進行追蹤。當轉換僅在伺服器端完成時(付款 Webhook、後端註冊),請使用來自 @croct/plug/api 的 JavaScript SDK 獨立 track 方法,並帶上 API 金鑰:其文件範例正是從伺服器或沙盒腳本發送的 goalCompleted 事件(請參閱 croct-track-events 技能)。它接受一個可選的 userToken;文件沒有說明未帶 userToken 發送的事件如何歸因於實驗。
體驗工作流程(儀表板)
向使用者轉達這些步驟;你無法親自點擊它們。
- 前往體驗頁面 > 新增體驗,為其命名。
- 受眾分頁 > 新增受眾 > 貼上 CQL 條件。允許設定多個受眾。
- 插槽分頁 > 選擇一個或多個插槽(為了保持一致的使用者體驗,可以跨頁面組合插槽)。
- 內容分頁 > 編輯每個插槽的內容(以及當受眾不同時,編輯每個內容群組的內容)。
- 可選的實驗分頁(見下文)。
- 檢視草稿變更,然後發布(或排程)— 或者先預覽。
在開發期間,像 property welcome of page's query is "true" 這樣的受眾允許使用者透過 ?welcome=true 來切換體驗。在生產環境中,請將其替換為真正的受眾。
關於狀態、優先級、排程、草稿變更和內容的詳細資訊:references/experiences.md。
實驗工作流程
- 編寫假設:變更的內容、它影響的指標以及原因。
- 選擇主要目標 ID(儀表板會建議已經被追蹤的 ID)。確認它確實會觸發。
- 設定流量分配。對於狹窄的受眾,使用 100%。在整個測試過程中保持穩定。
- 建立 2 到 5 個變體,其中一個通常是對照組。變體可以複製插槽內容或繼承體驗內容,而不是複製它。
- 設定每個變體的內容(以及內容群組,如果需要)。
- 如果使用者已被識別且應保留其變體,則啟用跨裝置一致性。
- 預覽每個變體,發布,然後驗證:每個變體的會話數與分割比例相符,並且測試轉換會出現在正確的目標下。
絕不要在測試中途更改流量分配或新增/移除變體;這樣做可能會使結果無效。
有關詳細資訊、功能旗標和重新導向,請參閱:references/experiments.md 和 references/flag-and-redirect-experiments.md。
解讀結果
實驗儀表板頂部會顯示一個標誌。根據以下規則採取行動:
| 標誌 | 意義 | 行動 |
|---|---|---|
| 追蹤你的目標 | 未記錄到目標完成事件 | 修正追蹤問題;其他指標均無意義 |
| 實驗進行中 | 尚未穩定 | 等待。穩定需要每個變體 ≥ 1,000 名訪客、每個變體 ≥ 25 次轉換,並且運行 ≥ 1 週 |
| 建議勝出者 | 已穩定,且某個變體的 PBB > 95% 且潛在損失 < 0.1% | 將勝出的內容套用到體驗,並停止實驗 |
| 無明確勝出者 | 已穩定,但變體間差異太小 | 不選出勝出者即結束實驗,或測試新的假設 |
在讀取任何指標之前,請先檢查每個變體的會話數是否與配置的分割比例相符。持續的不平衡表示分配或記錄遺失了某一類使用者。
最佳機率 (PBB) 和潛在損失來自使用每個變體的 Beta 分佈和蒙地卡羅模擬的貝氏推理,即時計算,無需抽樣。說明、公式和每個儀表板小工具:references/analytics.md。
配方
精簡的戰術手冊(ABM、部落格讀者、客戶、免運費、HubSpot 表單、興趣、潛在客戶、地理位置、行銷活動、有機意圖、搜尋字詞),每個都包含其受眾 CQL、必要的先決追蹤條件以及建議的插槽:references/playbooks.md。
注意事項
- 務必在發布實驗之前實作並驗證目標事件。沒有它,實驗只會收集曝光次數,而不會有轉換。
- 務必對狹窄的受眾分配 100% 流量,以便測試能達到統計顯著性。
- 務必優先使用帶有插槽驅動內容的單一 URL,而非重新導向;重新導向會增加頁面載入時間並使結果產生偏差。
- 務必保持重新導向為臨時性(302/307)並防止循環。
- 務必在測試結束後從程式碼中移除過時的功能旗標插槽。
- 絕不要在儀表板顯示「實驗進行中」時宣告勝出者,或僅根據原始計數(總訂單數、總註冊數)來宣告。
- 絕不要在測試中途編輯分配或變體清單。
- 絕不要期望匿名使用者能有跨裝置一致性;這需要已識別的使用者。
- 絕不要重新導向到不同的網域:訪客是按網域識別的,因此轉換永遠不會被歸因。對於子網域,請先共用會話。
- 絕不要完全預渲染或快取渲染實驗插槽的頁面;這樣會導致所有人看到同一個快取的變體。
即時文件
- 索引:
https://docs.croct.com/llms.txt - 任何頁面的 Markdown 格式:附加
.md,例如https://docs.croct.com/explanation/experiment.md - 搜尋:
https://docs.croct.com/api/search.md?term=<terms>