# Rastreio e consentimento

> Transmita parâmetros de campanha e atribuição até ao processo de compra e controle o aviso de termos apresentado aos compradores pela primeira vez.

## Parâmetros de rastreio

`tprm` é um objeto de parâmetros transmitido até ao processo de compra, onde são registados na encomenda resultante. Utilize-o para atribuir vendas a uma campanha, página ou canal de vendas.

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

Altere-os a qualquer momento – são utilizados os valores em vigor quando `book()` é chamado:

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

`setTracking()` **substitui** o objeto completo, em vez de o combinar. Para adicionar um parâmetro, utilize a propagação do conjunto atual:

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

### Encaminhar parâmetros do seu próprio URL

O cliente não lê a cadeia de consulta da sua página. Se um visitante chegar a `yoursite.com/concert?utm_source=facebook` e pretender essa atribuição na encomenda, encaminhe-a:

```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 });
```

O widget incorporado faz isto automaticamente para uma lista fixa de parâmetros. Consulte [Opções avançadas de incorporação](/developers/js-client/embed-advanced-options.md).

### Segmentos

`sgm` transporta um código de segmento, que agrupa as vendas por canal ou campanha nas suas estatísticas. Os segmentos são criados na sua conta Entase, não aqui – consulte [Visão geral dos segmentos](/organizers/segments/segments-overview.md) e [Criar e gerir segmentos](/organizers/segments/creating-and-managing-segments.md).

## Consentimento

O processo de compra pede aos compradores pela primeira vez que aceitem o aviso de termos da Entase. Depois de aceite, a resposta é armazenada num cookie e o passo é ignorado em visitas posteriores, incluindo noutros sites que utilizem a Entase.

Pode monitorizá-lo:

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

### Ignorar o passo

`collectConsent: false` oculta o aviso:

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

Ou para uma reserva:

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

Faça isto apenas quando o seu próprio fluxo de compra já recolher o acordo equivalente – o requisito não desaparece por o aviso estar oculto. Deixe-o ativado por predefinição.

A aceitação armazenada é novamente verificada em relação à data da última alteração dos termos, pelo que é novamente pedido a um visitante que tenha aceite uma versão mais antiga. Ocultar o aviso também oculta essa verificação.
