# Sledovací skript

> Odesílejte události workspace a vlastní události ze svého webu sledovacím skriptem Emailitu a veřejným sledovacím klíčem. Nainstalujte ho, sledujte události, identifikujte návštěvníky a omezte klíč na své weby.

Sledovací skript odesílá události z vašeho webu: zobrazení produktů, registrace, položky přidané do košíku. Nepotřebuje žádné inicializační volání; sledovací klíč je součástí jeho URL. Tato stránka vysvětluje, jak vytvořit klíč, přidat skript, sledovat události a propojit je s návštěvníky.

## Než začnete

- Sledovací skript je součástí tarifů Pro, Business a Custom. V tarifu Pay as you go nemůžete vytvářet sledovací klíče a požadavky skriptu vracejí `403`, a to i s klíči vytvořenými před přechodem na tarif Pay as you go.
- K vytváření sledovacích klíčů ve webovém rozhraní potřebujete ve workspace roli **Admin**. Přes API použijte klíč s oprávněním **Full Access**.
- Musíte mít možnost upravit HTML svého webu, nebo přidat vlastní HTML tag ve správci tagů.

## Vytvořte sledovací klíč

Sledovací klíče jsou veřejné: vkládají se do vašich webových stránek, takže si je může přečíst kdokoli. Mohou jen odesílat události workspace a vlastní události, nikdy nečtou data a můžete je omezit na své weby.

**Webové rozhraní**

  1. **Otevřete kartu Tracking.** Otevřete **Email API → Events**, vyberte kartu **Tracking** a pak **Create tracking key**.

  2. **Pojmenujte klíč.** Do pole **Name** zadejte název, ze kterého je poznat, kde se klíč používá, například `Online shop`.

  3. **Omezte ho na své weby.** Do pole **Allowed origins** zadejte své weby, každý na samostatný řádek, například `https://shop.example.com` nebo `*.example.com`. Pokud pole necháte prázdné, klíč přijme jakýkoli web. Viz [Povolené weby](#allowed-sites).

  4. **Vytvořte ho.** Vyberte **Create**. Karta **Tracking** teď zobrazuje kód s vyplněným klíčem.

**API**

  Zavolejte [Vytvoření sledovacího klíče](/cs/docs/api-reference/tracking-keys/create/). Hodnota `key` z odpovědi patří do URL skriptu.

```bash
curl -X POST https://api.emailit.com/v2/tracking-keys \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "name": "Online shop", "allowed_origins": ["https://shop.example.com"] }'
```

## Přidejte skript

Vložte oba tagy do každé stránky, ideálně před `</head>`, a místo `TRACKING_KEY` dosaďte svůj klíč:

```html
<script>window.emailit=window.emailit||function(){(window._emailitq=window._emailitq||[]).push(arguments)};</script>
<script async src="https://js.emailit.com/track/TRACKING_KEY/events.js"></script>
```

První tag zařadí do fronty volání provedená před načtením skriptu, takže `emailit(...)` můžete volat hned. Skript se načítá asynchronně, nikdy do vaší stránky nevyhodí výjimku a funguje i ze správce tagů.

- Pokud je na stránce i [skript formulářů](/cs/docs/forms/install/) Emailitu, ponechte oba. Sdílejí `window.emailit`.
- Pokud váš web používá Content Security Policy, povolte `https://js.emailit.com` v `script-src` a `connect-src`.

## Sledujte události

```javascript
// Custom event: any name after "c:", any properties
emailit("track", "c:product.viewed", { sku: "TS-42", price: 19.9 });

// Workspace event: checked against its definition
emailit("track", "w:customer.type", { segment: "b2b" });
```

Typ musí začínat na `c:`, nebo `w:`; jiná volání skript ignoruje. Vlastnosti, které nejsou objekt, se odešlou jako `{}`. U událostí, které nastaly dřív, můžete předat třetí argument s `occurred_at`, tedy datem a časem ve formátu ISO 8601.

Skript sám zobrazení stránek nezaznamenává. Sledujte stránky a akce, na kterých vám záleží, například událostí `c:page.viewed` při každé změně trasy v jednostránkové aplikaci.

### Příkazy pro obchody

Pro e-shopy má skript také příkazy `product`, `cart`, `purchase` a `page`. Zaznamenávají zobrazení produktů, košíky a objednávky pro [E-commerce](/cs/docs/commerce/) a posílají je do logu událostí jako systémové události `product.viewed`, `cart.updated` a `order.placed`. E-commerce je v alfaverzi a otevřené jen týmu Emailitu; jinde se tyto příkazy odmítnou. Viz [Připojení obchodu](/cs/docs/commerce/connect-your-shop/#record-shop-activity).

## Identifikujte návštěvníky

Jakmile víte, kdo návštěvník je, například když se přihlásí ke svému účtu nebo k odběru, sdělte to skriptu:

```javascript
emailit("identify", { email: "jane@example.com" });
// or, if you store Emailit contact IDs:
emailit("identify", { contact_id: "con_2wPq7Lm3XcN8bV1zKd4RtY6sHf9" });
```

Každá další událost pak nese tento e-mail nebo ID kontaktu, na této stránce i při dalších návštěvách, takže ji Emailit může propojit s kontaktem. Když se návštěvník ze svého účtu odhlásí, nechte skript na něj zapomenout:

```javascript
emailit("reset");
```

`reset` také vytvoří nové anonymní ID návštěvníka, takže se další člověk u sdíleného počítače nezamění s předchozím.

Události s e-mailem, který nemá žádný kontakt, se uchovají a zobrazí se u kontaktu, jakmile vznikne. Hodnota `contact_id`, která neodpovídá žádnému kontaktu, se z události bez chyby odstraní, takže veřejným klíčem nejde zjišťovat, která ID kontaktů existují.

Kdokoli s vaším sledovacím klíčem může zavolat `identify` s jakoukoli adresou, proto Emailit nedovolí, aby události ze skriptu řídily automatizace. Zaznamenají se, zobrazí se u kontaktu a dostanou je webhooky, ale [spuštění automatizací](/cs/docs/automations/triggers/#custom-event) nezahajují, neukončují ani neposouvají dál. Události, které to dělat mají, posílejte ze serveru přes [API událostí](/cs/docs/events/send-events/). Každá událost ze skriptu, která uvádí kontakt, má `identity_verified`: hodnotu `true` má jen tehdy, když návštěvníka identifikoval podepsaný odkaz v jednom z vašich e-mailů, což je součást alfaverze [E-commerce](/cs/docs/commerce/connect-your-shop/#identify-visitors), a takové události automatizace řídí.

## Co skript odesílá

Každá událost nese kromě vašeho typu a vlastností:

| Pole | Obsah |
| --- | --- |
| `anonymous_id` | Náhodné ID návštěvníka (`anon_…`), uložené v místním úložišti prohlížeče. |
| `email`, `contact_id` | Co jste předali do `identify`, pokud něco. |
| `context.page` | `url`, `path`, `title` a `referrer` stránky. |
| `context.campaign` | Parametry UTM stránky (`utm_source`, `utm_medium`, `utm_campaign`, `utm_term`, `utm_content`) jako `source`, `medium`, `name`, `term` a `content`. |
| `context.locale`, `context.timezone` | Jazyk a časové pásmo prohlížeče. |

Emailit přidává `identity_verified` k událostem, které uvádějí kontakt (viz [Identifikujte návštěvníky](#identify-visitors)), a ukládá user agent prohlížeče. IP adresy neukládá a skript nenastavuje žádné cookies. ID návštěvníka si skript drží v místním úložišti pod klíčem `emailit:aid` a identitu pod `emailit:identity`; pokud je místní úložiště zablokované, platí jen do opuštění stránky.

Události se chvíli sbírají a odešlou se společně, nejvýše 20 najednou. Když návštěvník stránku opustí, zbytek se odešle pomocí `sendBeacon`.

Pokud na svém webu potřebujete k analytice souhlas, načtěte skript až poté, co návštěvník souhlasí.

## Povolené weby

Pole `allowed_origins` omezuje, které weby mohou s klíčem odesílat události. Každá položka je jedna z těchto možností:

| Položka | Odpovídá |
| --- | --- |
| `https://shop.example.com` | Přesně tento původ (origin): schéma, název hostitele a port. |
| `shop.example.com` | Tento název hostitele s jakýmkoli schématem a portem. |
| `*.example.com` | `example.com` a všechny subdomény. |

Prázdný seznam přijímá jakýkoli web. Emailit kontroluje hlavičku `Origin`, kterou prohlížeče posílají s každým požadavkem, takže jiné weby s vaším klíčem události odesílat nemohou. Skript mimo prohlížeč ale může nastavit libovolnou hlavičku, proto události z prohlížeče berte jako nedůvěryhodný vstup a objednávky a platby odesílejte [z backendu](/cs/docs/events/send-events/).

## Neplatné události

Na rozdíl od API uloží endpoint skriptu platné události z požadavku, i když jsou jiné neplatné. Neplatné události se zahodí, například událost `w:` s vlastností špatného typu nebo událost nového typu, jakmile workspace vyčerpá počet [typů událostí](/cs/docs/events/#limits) svého tarifu. Důvod zjistíte pomocí [ladění](#debug).

## Ladění

Výpis do konzole prohlížeče zapnete kterýmkoli z těchto způsobů:

- Zavolejte `emailit("debug", true)`.
- Přidejte do tagu skriptu `data-debug`.
- Otevřete stránku s `?emailit_debug=1` v URL.

Konzole pak zobrazí každou událost a odpověď Emailitu včetně důvodů, proč byly události odmítnuty.

## Řešení problémů

| Odpověď v konzoli | Příčina | Řešení |
| --- | --- | --- |
| `403` `Origin not allowed for this tracking key` | Web stránky není v poli **Allowed origins**. | Přidejte ho, například `https://example.com` i `https://www.example.com`, nebo použijte `*.example.com`. |
| `403` `This tracking key is disabled` | Klíč je vypnutý. | Zapněte ho na kartě **Tracking**. |
| `403` `Website tracking is included with Pro and Business.` | Workspace je v tarifu Pay as you go. | Přejděte na tarif Pro nebo Business. |
| `404` `Unknown tracking key` | Klíč v URL skriptu byl smazán nebo špatně opsán. | Zkopírujte kód znovu z karty **Tracking**. |
| `422` se všemi událostmi v `rejected` | Žádná z událostí nebyla platná. | Zkontrolujte důvody v `rejected`. |
| `429` | Klíč odeslal za krátkou dobu příliš mnoho událostí. | Odesílejte méně událostí na návštěvníka, například žádnou událost při každém posunu stránky nebo pohybu myši. |
| Vůbec nic | Skript zastavil blokovač reklam nebo sledování, nebo na stránce není. | Vyzkoušejte to v prohlížeči bez blokovačů a zkontrolujte, že je kód na stránce. |

## Související

  - [Sledování událostí](/cs/docs/events/): Rozsahy, názvy a kam se události dostanou.
  - [Události workspace](/cs/docs/events/workspace-events/): Definujte události a jejich vlastnosti.
  - [API sledovacích klíčů](/cs/docs/api-reference/tracking-keys/): Vytváření, úpravy a mazání klíčů.
  - [Odesílání událostí z backendu](/cs/docs/events/send-events/): Pro objednávky a platby.

---
Zdroj: https://emailit.com/cs/docs/events/tracking-script/
