# Collega il tuo negozio

> Invia prodotti e ordini dal backend del negozio e aggiungi lo script di tracciamento di Emailit per registrare visualizzazioni di prodotto, carrelli e acquisti e riconoscere i visitatori che arrivano dalle tue email. Alpha: aperto solo al team di Emailit.

Un negozio invia a Emailit due tipi di dati: il catalogo e gli ordini dal backend, con l’API, e ciò che i visitatori fanno sul sito, con lo script di tracciamento del [Tracciamento degli eventi](/it/docs/events/). Usali entrambi per avere il quadro completo: l’API è il registro affidabile degli ordini, e lo script aggiunge le visualizzazioni di prodotto, i carrelli e i visitatori che arrivano dalle tue email.

> **L’e-commerce è in alpha:** L’e-commerce è aperto solo al team di Emailit mentre lo testiamo. L’API e lo script di tracciamento funzionano solo nei workspace di proprietà del team di Emailit. Vedi [Chi può usare l’e-commerce](/it/docs/commerce/#who-can-use-commerce).

## Prima di iniziare

- Una [chiave API](/it/docs/developers/api-keys/) per le chiamate dal backend. Una chiave **Events Only** può inviare prodotti, ordini e carrelli: è la stessa chiave che invia gli [eventi dal tuo backend](/it/docs/events/send-events/). Non può leggere nulla, quindi le sue risposte contengono solo `object`, `id` e `external_id`. Per leggere anche i dati, gestire i coupon o cambiare le impostazioni, usa una chiave con **Full Access**.
- Per lo script di tracciamento, il permesso di aggiungere uno script alle pagine del negozio.

## Invia i dati dal backend

### Prodotti

Invia il catalogo con [Crea o aggiorna prodotti in blocco](/it/docs/api-reference/products/batch/), e di nuovo ogni volta che i prodotti cambiano. Ogni prodotto è identificato dall’ID del prodotto nel tuo negozio, quindi inviarlo di nuovo lo aggiorna.

```bash
curl https://api.emailit.com/v2/products/batch \
  -X POST \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "products": [{
      "id": "1234",
      "title": "Trail Runner GTX",
      "url": "https://shop.example.com/products/trail-runner",
      "image_url": "https://shop.example.com/images/trail-runner.jpg",
      "price": 139,
      "compare_at_price": 169,
      "currency": "EUR",
      "categories": ["Shoes", "Running"],
      "inventory_quantity": 40
    }]
  }'
```

I feed di prodotti nelle email escludono i prodotti archiviati e quelli con giacenza pari a 0, quindi mantieni aggiornati `status` e `inventory_quantity`.

### Ordini

Quando viene effettuato un ordine, invialo con [Crea o aggiorna un ordine](/it/docs/api-reference/orders/create/):

```bash
curl https://api.emailit.com/v2/orders \
  -X POST \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "1001",
    "email": "jane@example.com",
    "currency": "EUR",
    "total": 125,
    "shipping": 5,
    "coupon_codes": ["WLC-8K2M4P"],
    "cart_id": "cart_789",
    "items": [{ "product_id": "1234", "title": "Trail Runner GTX", "quantity": 1, "price": 120 }]
  }'
```

- `id` è il numero d’ordine del tuo negozio. Inviare di nuovo lo stesso `id` aggiorna l’ordine invece di aggiungerne un altro.
- Emailit attribuisce l’ordine all’email che l’acquirente ha cliccato o aperto per ultima. Vedi [Come gli ordini vengono attribuiti alle email](/it/docs/commerce/#how-orders-are-credited-to-emails).
- L’acquirente diventa un contatto se non lo è già. Aggiungi `"accepts_marketing": true` e un `audience_id` per iscriverlo anche a una lista, ad esempio quando al checkout ha spuntato la casella della newsletter. `"create_contact": false` evita di creare il contatto. Il comando `purchase` dello script di tracciamento non crea né iscrive mai un contatto.
- `cart_id` contrassegna quel carrello come convertito.

Quando l’ordine viene pagato, evaso, annullato o rimborsato, invia la modifica con [Aggiorna un ordine](/it/docs/api-reference/orders/update/), oppure invia di nuovo l’ordine con il nuovo `status`. Gli ordini annullati non rientrano nei ricavi, e i rimborsi vengono sottratti.

### Ordini passati

Importa lo storico degli ordini con [Importa ordini in blocco](/it/docs/api-reference/orders/batch/), fino a 1000 ordini per richiesta. Le importazioni sono storiche per impostazione predefinita: completano lo storico degli acquisti, le metriche e i prodotti consigliati, ma non vengono attribuite alle email e non avviano automazioni.

## Lo script di tracciamento

Lo script di tracciamento registra ciò che i visitatori fanno sul tuo sito: visualizzazioni di prodotto, carrello, acquisti e visite. Riconosce anche i visitatori che arrivano dalle tue email, così la loro attività viene associata al loro contatto.

### Aggiungi lo script

1. **Crea una chiave di tracciamento.** In **Email API → Events**, apri la scheda **Tracking** e seleziona **Create tracking key**. In **Allowed origins**, elenca i domini del negozio, ad esempio `shop.example.com` o `*.example.com`. Lascialo vuoto per accettare qualsiasi sito.

2. **Aggiungi lo snippet a ogni pagina,** prima di `</head>`. La scheda **Tracking** lo mostra con la tua chiave già inserita:

```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>
```

   Le chiavi di tracciamento sono pubbliche: possono solo inviare eventi, mai leggere dati. Se nella pagina c’è già lo script dei [moduli di Emailit](/it/docs/forms/install/), tienili entrambi.

Per registrare anche una visualizzazione di pagina su ogni pagina, aggiungi `data-autotrack="pages"` al tag script. Le visualizzazioni di pagina aggiornano il momento in cui il contatto è stato attivo l’ultima volta sul tuo sito e il suo fuso orario; non vengono salvate come eventi.

### Registra l’attività del negozio

Richiama questi comandi dove avvengono le azioni:

```js
// Product page
emailit("product", { id: "1234", title: "Trail Runner GTX", url: location.href,
  image_url: "https://shop.example.com/images/trail-runner.jpg", price: 139, currency: "EUR",
  categories: ["Shoes", "Running"] });

// Every time the cart changes
emailit("cart", { id: "cart_789", currency: "EUR", checkout_url: "https://shop.example.com/checkout",
  items: [{ product_id: "1234", title: "Trail Runner GTX", quantity: 1, price: 139 }] });

// Order confirmation page
emailit("purchase", { id: "1001", total: 125, currency: "EUR",
  items: [{ product_id: "1234", quantity: 1, price: 120 }], coupon_codes: ["WLC-8K2M4P"] });
```

| Comando | Registra |
| --- | --- |
| `product` | Una visualizzazione di prodotto. Un prodotto non ancora presente nel catalogo viene aggiunto con questi campi; i prodotti che invii con l’API non vengono modificati. |
| `cart` | L’intero carrello attuale, che sostituisce la versione precedente. Senza un `id`, il carrello del visitatore viene tracciato con un ID proprio. Invia una lista `items` vuota quando il carrello viene svuotato. |
| `purchase` | Un ordine, con gli stessi campi dell’[API degli ordini](/it/docs/api-reference/orders/create/). Converte anche il carrello del visitatore. Preferisci inviare gli ordini dal backend: i blocchi pubblicitari possono fermare le chiamate dal browser. Se fai entrambe le cose, usa lo stesso `id` dell’ordine, così l’ordine non viene contato due volte. Lo script non modifica mai un ordine che hai inviato dal backend, e non crea né iscrive mai un contatto. |
| `page` | Una visualizzazione di pagina. Inviata su ogni pagina con `data-autotrack="pages"`. |

### Identifica i visitatori

L’attività viene associata a un contatto quando lo script sa chi è il visitatore:

- **Da un link in un’email.** Quando un contatto clicca il link di un’email di campagna o di automazione che porta al tuo sito, il link contiene un parametro firmato `_eit`. Lo script lo memorizza e lo rimuove dalla barra degli indirizzi. I link lo ricevono quando il tracciamento dei clic è attivo e il link porta a un’origine consentita di una chiave di tracciamento oppure, per le chiavi senza origini consentite, al tuo dominio di invio.
- **Quando accede o completa l’acquisto,** chiama `identify` con il suo indirizzo email o l’ID del contatto:

```js
emailit("identify", { email: "jane@example.com" });
```

- **Quando esce,** chiama `emailit("reset")` per dimenticarlo su quel browser.

Le visualizzazioni di prodotto e i carrelli registrati prima dell’identificazione del visitatore vengono spostati sul contatto. Lo script registra anche il fuso orario del browser, usato dall’invio all’[ora locale del destinatario](/it/docs/campaigns/sending-options/#recipients-local-time), e quando il contatto è stato attivo l’ultima volta sul tuo sito.

`emailit("debug", true)` scrive nella console del browser ciò che lo script invia.

### Dove compare l’attività

L’attività del negozio finisce nello stesso log degli eventi degli altri tuoi eventi. Le visualizzazioni di prodotto diventano eventi [`product.viewed`](/it/docs/webhooks/events/product/viewed/), i carrelli nuovi o modificati [`cart.updated`](/it/docs/webhooks/events/cart/updated/) e gli acquisti [`order.placed`](/it/docs/webhooks/events/order/placed/). Li vedi in **Email API → Events** e nell’attività del contatto, e i webhook possono sottoscriverli. `product.viewed` e `cart.updated` non fanno parte di **All events**, quindi sottoscrivili per nome. Vedi [Eventi e-commerce](/it/docs/commerce/#events).

## Verifica che funzioni

- **Email Marketing → Commerce** mostra i tuoi prodotti e ordini, e **Carts** mostra i carrelli registrati dallo script.
- **Email API → Events** elenca gli eventi `product.viewed`, `cart.updated` e `order.placed` man mano che i visitatori navigano e acquistano.
- Apri un contatto che ha effettuato un ordine: il riquadro **Purchases** mostra i suoi ordini, il totale speso e i prodotti visti di recente.
- Dopo una campagna, gli ordini attribuiti compaiono nella sua scheda **Revenue**.

## Vedi anche

  - [E-commerce](/it/docs/commerce/): Attribuzione, impostazioni e pagine Commerce.
  - [API degli ordini](/it/docs/api-reference/orders/create/): Tutti i campi di un ordine.

---
Fonte: https://emailit.com/it/docs/commerce/connect-your-shop/
