# 追蹤與同意

> 將活動及歸因參數傳送至結帳流程，並控制向首次購買者顯示的條款通知。

## 追蹤參數

`tprm` 是一個會傳送至結帳流程的參數物件，並會記錄在產生的訂單中。你可使用它將銷售歸因至某個活動、頁面或銷售渠道。

```js
const entase = new Entase({
  pk: 'YOUR_PUBLISHABLE_KEY',
  tprm: { utm_source: 'newsletter', utm_campaign: 'spring-season' }
});
```

你可隨時更改這些參數 – 系統會使用呼叫 `book()` 時所設定的值：

```js
entase.setTracking({ utm_source: 'facebook', sgm: 'SEGMENT_CODE' });
entase.getTracking();  // { utm_source: 'facebook', sgm: 'SEGMENT_CODE' }
```

`setTracking()` 會**取代**整個物件，而非將參數合併至其中。若要新增一個參數，請展開目前的參數集：

```js
entase.setTracking({ ...entase.getTracking(), utm_content: 'sidebar' });
```

### 從你自己的 URL 轉送參數

客戶端不會讀取你頁面的查詢字串。若訪客透過 `yoursite.com/concert?utm_source=facebook` 進入，而你想將該歸因記錄在訂單中，請自行轉送：

```js
const params = new URLSearchParams(window.location.search);
const forward = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'sgm'];

const tprm = {};
forward.forEach(key => { if (params.has(key)) tprm[key] = params.get(key); });

const entase = new Entase({ pk: 'YOUR_PUBLISHABLE_KEY', tprm });
```

嵌入式小工具會自動處理固定清單中的參數。請參閱[進階嵌入選項](/developers/js-client/embed-advanced-options.md)。

### 分群

`sgm` 用於傳送分群代碼，以便在統計資料中按渠道或活動將銷售分組。分群是在你的 Entase 帳戶中建立，而非在此處 – 請參閱[分群概覽](/organizers/segments/segments-overview.md)及[建立和管理分群](/organizers/segments/creating-and-managing-segments.md)。

## 同意

結帳流程會要求首次購買者接受 Entase 條款通知。接受後，回應會儲存在 Cookie 中；其後再次造訪時便會略過此步驟，包括造訪其他使用 Entase 的網站時。

你可以監測這項操作：

```js
entase.on('checkout.consent', payload => {
  if (payload.data.consent) console.log('accepted');
});
```

### 略過此步驟

`collectConsent: false` 會隱藏通知：

```js
const entase = new Entase({ pk: 'YOUR_PUBLISHABLE_KEY', collectConsent: false });
```

或者只針對一次預訂：

```js
entase.book('EVENT_ID', { collectConsent: false });
```

只應在你自己的結帳流程已收集同等同意時才這樣做 – 條款通知被隱藏不代表相關要求會消失。預設應保持啟用。

系統會根據條款上次變更的日期重新核對已儲存的同意，因此曾接受較舊版本的訪客會再次收到提示。隱藏通知也會略過這項核對。
