# Promotions

> The Promozioni page with the tab for offers and discount codes: the table, the three-step guided procedure for creating a promotion, how to edit it, switch it off and import it from a flyer.

Last updated: 22 October 2026. Source: https://narciso.io/en/docs/promozioni/

A **promotion** is a salon offer (for example «Promo Primavera: 20% su tutto» (Spring Promo: 20% off everything)) to which the program assigns a **code**. The client tells the code at the cash desk and the discount goes into the receipt ([Discount code in the Cash desk](https://narciso.io/en/docs/codice-sconto-in-cassa/)). The rules by which a code is accepted or rejected are in [Promotional code rules](https://narciso.io/en/docs/regole-codici-promozionali/).

## The page

It opens from **Scartoffie ▸ Promozioni**. At the top there are three tabs, each one third wide:

| Tab | What it contains | Entry |
|---|---|---|
| **Promozioni** (label icon) | The offers with code, value, uses and expiry. This is the tab you see on opening | This entry |
| **Premi Fedeltà** (Loyalty rewards) (star icon) | The catalogue of rewards that clients get with points | [Loyalty rewards](https://narciso.io/en/docs/premi-fedelta/) |
| **Utilizzi** (Uses) | The register of the clients' points movements | [Loyalty points](https://narciso.io/en/docs/punti-fedelta/) |

The chosen tab stays in the page's address. The browser tab's title is «Promozioni attive & Offerte speciali — Narciso» (Active promotions & special offers — Narciso), «Raccolta punti & Catalogo premi fedeltà — Narciso» (Points collection & loyalty rewards catalogue — Narciso) or «Registro utilizzi & Storico riscatti clienti — Narciso» (Uses register & clients' redemption history — Narciso). How many times a discount code has been used can be read in the **Utilizzi** column of the Promozioni table, not in the Utilizzi tab ([Discount code uses](https://narciso.io/en/docs/utilizzi/)).

**Communication campaigns** (messages to clients, social, website) are not made from here.

> **Note.** Promotions belong to the **active location**: a code created in one location **is not valid in the others** and each location sees only its own promotions.

## Who can do what

All roles see the table and use the codes in the Cassa. **Creating, editing, switching off, deleting and importing** promotions is reserved for **Titolare (owner) and Responsabile (manager)**: an Operatore (operator) who tries sees the yellow warning «Operazione riservata a Titolare o Responsabile.» (Operation reserved for Titolare or Responsabile.) and nothing changes.

## The table

The table has the title «Promozioni» and the general behaviour described in [Data tables](https://narciso.io/en/docs/tabelle-dati/).

| Column | What it shows |
|---|---|
| **Nome** (Name) | The name of the promotion, in bold |
| **Codice** (Code) | The code in a grey box; «—» if missing |
| **Valore** (Value) | In amber: **-20%** (percentage), **-€10.00** (fixed discount), **🎁 Prodotto omaggio** (free product) or **🎁 Servizio omaggio** (free service) |
| **Utilizzi** | How many times it has been used; if there is a limit, «uses / maximum» (for example «3 / 10») |
| **Scadenza** (Expiry) | The end date (dd/mm/yyyy) or **«Senza scadenza»** (No expiry) |
| **Data Creazione** (Creation date) | When it was created |
| **Creato da** (Created by) | The name of the team member linked to whoever created it; «—» if not recorded. For the automatic birthday and name-day codes: «Automazione compleanno» (Birthday automation) or «Automazione onomastico» (Name-day automation) |
| **Stato** (Status) | A green switch (active promotion) |

- The search («Cerca promozione...» (Search promotion...)) searches in the **name** and the **code**.
- Promotions appear from the most recent.
- **To give the code to the client you copy it from the table**: when you hold the mouse over a cell, the copy icon appears, which puts the text «Codice: K7PX3HWA» (Code: K7PX3HWA) on the clipboard (see [Data tables](https://narciso.io/en/docs/tabelle-dati/)).
- A double click on a row does nothing.

> **Warning.** The **Stato** column is just the active / not active switch: it **does not say** whether the promotion has expired, not started yet or run out. That is why you also look at **Scadenza** and **Utilizzi**.

### What the list shows

The list shows **only active promotions**. A promotion that is switched off or deleted **disappears** from the list and there is no screen to see or switch it back on. With no active promotion the table is empty («Totale record: 0» (Total records: 0)).

### The toolbar

| Action | How it works |
|---|---|
| **Aggiungi** (Add) | With no row selected. A small menu offers **Importa esistenti** (Import existing) (from a flyer or from a text) and **Crea da zero** (Create from scratch) |
| **Modifica** (Edit) | With **one** row selected it opens «Modifica promozione» (Edit promotion). **With no row selected the button opens «Nuova promozione» (New promotion) instead**: to change one you select the row first. With two or more rows the button disappears |
| **Rimuovi** (Remove) | With one or more rows selected: see below |
| **Esporta** (Export), **Visibilità** (Visibility) | As in the other tables ([Data tables](https://narciso.io/en/docs/tabelle-dati/)) |

## Creating a promotion

**Aggiungi ▸ Crea da zero** opens the **«Nuova promozione»** window with three steps: **Dati Offerta → Applicabilità → Limiti e Validità** (Offer data → Applicability → Limits and validity). At the bottom there are **Annulla** (Cancel), **Indietro** (Back), **Avanti** (Next) and, at the last step, **Salva** (Save) (when editing, **Aggiorna** (Update)). In the step bar you can click only the steps already seen. **Annulla**, the **X** and a click outside the window close it without asking for confirmation and without saving.

When you press **Avanti** the program checks the step: the wrong field is highlighted with a red border and a red notification appears with the reason.

### Step 1 — Dati Offerta

| Field | Compulsory | Rules |
|---|---|---|
| **Nome offerta** (Offer name) | Yes | At least **3 characters**: otherwise «Il nome dell'offerta deve avere almeno 3 caratteri» (The offer name must have at least 3 characters). Hint «es. Promo Primavera» (e.g. Spring Promo). The maximum is 100 characters |
| **Tipo di offerta** (Offer type) | Yes | **Sconto Percentuale (%)** (Percentage discount), **Sconto Fisso (€)** (Fixed discount), **Prodotto omaggio** or **Servizio omaggio**. **Changing the type empties** the products and services already chosen |
| **Valore sconto (%)** or **(€)** (Discount value) | Yes, for discounts | A number greater than 0: otherwise «Il valore di sconto deve essere maggiore di 0» (The discount value must be greater than 0). For the percentage not over 100: «La percentuale di sconto non può superare il 100%» (The discount percentage cannot exceed 100%) |
| **Vantaggio offerto** (Benefit offered) | — | For free items it replaces the value field: a non-editable box with «100% omaggio» (100% free) |
| **Stato promozione** (Promotion status) | No | **Attiva** (Active) (default) / **Disabilitata** (Disabled) switch. A promotion created Disabilitata does not appear in the list and its code does not work |

### Step 2 — Applicabilità

| Field | Compulsory | Rules |
|---|---|---|
| **Ambito dello sconto** (Scope of the discount) | Yes, for discounts | **Tutto il carrello (Globale)** (The whole cart (Global)), **Solo su Prodotti specifici** (Only on specific products), **Solo su Servizi specifici** (Only on specific services), **Combo (Pacchetto Prodotti + Servizi)** (Combo (Products + Services package)). For free items there is a fixed label in its place. Changing the scope empties the choice |
| **Elementi** (Items) | Yes, except with Globale | The field's name changes: «Prodotti inclusi» (Included products), «Servizi inclusi» (Included services), «Elementi del pacchetto» (Package items), «Prodotto in regalo» (Free product), «Servizio in regalo» (Free service). With Globale only «Valido su qualsiasi scontrino — Cassa» (Valid on any receipt — Cassa) appears |
| **Evento correlato** (Related event) | No | Menu with search. See the warning below: it should usually be left on «Nessun evento (Generale)» (No event (General)) |
| **Cliente dedicato** (Dedicated client) | No | «Tutti i clienti» (All clients) (default) or **one** client: the code works only with that client chosen in the Cassa |

The **Elementi** field is a menu with search («Filtra per nome...» (Filter by name...)): each entry shows the name, «Prodotto» (Product) or «Servizio» (Service) and the price. For free items you choose **only one** item; in the other cases you tick as many as needed and at the bottom there are **Deseleziona tutti** (Deselect all) and **Chiudi** (Close). The button shows «N selezionato/i» (N selected). If there is nothing to choose, «Nessun elemento disponibile.» (No items available.) appears. In the list **only products with stock greater than zero** and **only Attivi services** appear.

When you press **Avanti** the checks are: «Seleziona almeno un prodotto per applicare lo sconto» (Select at least one product to apply the discount), «Seleziona almeno un servizio per applicare lo sconto» (Select at least one service to apply the discount), «Seleziona almeno 2 elementi per il pacchetto Combo» (Select at least 2 items for the Combo package), «Seleziona il prodotto da offrire in omaggio» (Select the product to give away), «Seleziona il servizio da offrire in omaggio» (Select the service to give away).

> **Warning.** Choosing an **Evento correlato** (Birthday, Christmas, Black Friday...) **restricts the code to the clients who have a label with that name**. For a code that everyone can use, leave «Nessun evento (Generale)». The Cassa messages in this case are in [Discount code in the Cash desk](https://narciso.io/en/docs/codice-sconto-in-cassa/).

### Step 3 — Limiti e Validità

| Field | Compulsory | Rules |
|---|---|---|
| **Minimo di spesa carrello (€)** (Minimum cart spend) | No | If filled in it must be greater than 0: «Inserisci un valore di spesa minima valido maggiore di 0» (Enter a valid minimum spend greater than 0). Empty = no minimum |
| **Limite utilizzi massimi** (Maximum uses limit) | No | If filled in, a whole number from 1: «Inserisci un limite massimo di utilizzi valido (minimo 1)» (Enter a valid maximum uses limit (minimum 1)). Empty = unlimited |
| **Data Inizio** (Start date) | No | A calendar (week starting on Monday; by clicking the month name you choose month and year). Empty = «Immediata» (Immediate) |
| **Data Fine (Scadenza)** (End date (Expiry)) | No | A calendar that does not allow days before the start date. Empty = «Senza scadenza» |

If the end is before the start, «La data di scadenza non può essere precedente alla data di inizio» (The expiry date cannot be earlier than the start date) appears.

> **Note.** Once a date (start or end) has been chosen, the field **can no longer be emptied**: for a promotion with no expiry you do not touch the field. Dates are calculated on universal time (UTC): in Italy the code becomes valid at one or two o'clock at night on the start day and stops at one or two o'clock at night on the day after the end date.

### Saving

You press **Salva**. The program rechecks the three steps and, if all goes well, the green notification **«Promozione creata! Codice: CODICE»** (Promotion created! Code: CODE) appears, the window closes and the promotion appears at the top of the list, with your own name in **Creato da**. The code can be read again at any time from the table. If the save is refused, a red notification appears with the reason or «Errore durante il salvataggio» (Error while saving).

### The code

It is made of **eight characters** (capital letters and digits, for example «K7PX3HWA»), without the letters I and O and without the digits 0 and 1 to avoid confusion. The program generates it on creation: **it cannot be chosen or changed**.

## Editing a promotion

1. Select the row and press **Modifica**.
2. Change what you need in the three steps.
3. Press **Aggiorna**: «Promozione aggiornata con successo» (Promotion updated successfully) appears. The code stays the same.

Good to know:

- **Minimo di spesa** and **limite di utilizzi** can be changed and also **removed** by emptying the field.
- The **Evento correlato** is not shown again when editing and, on saving, **is removed**: if needed it must be chosen again.
- The **Cliente dedicato** can be changed to another client. To make a code valid for everyone you create a new promotion.
- Products already linked that in the meantime have stock zero do not appear in the list but stay in the «N selezionati» (N selected) count.

## Switching off and deleting

**Switching off.** One click on the green switch in the **Stato** column deactivates the promotion («Promozione disattivata con successo» (Promotion deactivated successfully); if it fails, «Errore durante la modifica della promozione» (Error while editing the promotion)). **Immediately afterwards the promotion disappears from the list** and its code stops working in the Cassa («Codice non valido o inesistente» (Invalid or non-existent code)). **It cannot be switched back on**: if it is needed again you create a new one, with a new code.

**Deleting.**

1. Select one or more rows.
2. Press **Rimuovi**.
3. The browser asks «Eliminare N promozioni?» (Delete N promotions?).
4. With **OK**, «Promozioni eliminate» (Promotions deleted) appears.

«Deleting» is actually a deactivation, the same as switching off with the switch: the uses already recorded stay. The message «Promozioni eliminate» also appears if some deletions did not succeed: if in doubt, check the table.

## Importing promotions from a flyer

It is used to create promotions starting from flyers, posters, sheets or texts already written. It is reserved for Titolare and Responsabile.

1. **Aggiungi ▸ Importa esistenti.**
2. The guided import window opens, described in [Importing clients](https://narciso.io/en/docs/importare-clienti/): you upload the files, the program reads them with artificial intelligence and shows **a preview** of the promotions found, from which you choose which to insert.

For each promotion these are read: **name** (compulsory), **description**, **type** (percentage or amount in euro: never free item), **value** (compulsory, greater than 0), **minimum spend**, **code**, **maximum uses**, **start** and **end of validity**. Checks: a percentage cannot exceed 100 and the end must be after the start.

Imported promotions are created **active**, valid on the whole receipt and for all clients. If the document states a code, that one is used; if a promotion with the same code already exists, «Esiste già una promozione con il codice CODICE.» (A promotion with the code CODE already exists.) appears and that one is not inserted. If the code is missing, the program generates it. After the import it is best to recheck each promotion in the table.

## Procedures

**A 20% discount on everything for a month**

1. **Aggiungi ▸ Crea da zero**.
2. Step 1: name «Promo Primavera», type **Sconto Percentuale**, value 20. **Avanti**.
3. Step 2: scope **Tutto il carrello (Globale)**; event and client left as they are. **Avanti**.
4. Step 3: **Data Inizio** today, **Data Fine** in a month. **Salva**.
5. You read the code in the notification «Promozione creata! Codice: …» or copy it from the table.

**A personal code for a single client**

1. **Aggiungi ▸ Crea da zero**, type and value, **Avanti**.
2. Step 2: **Cliente dedicato** ▸ choose the client. **Avanti**, **Salva**.
3. In the Cassa, in Riscuoti (Collect payment), choose that client and write the code ([Discount code in the Cash desk](https://narciso.io/en/docs/codice-sconto-in-cassa/)).

## What to do if...

| Situation | What to do |
|---|---|
| I switched off a promotion and can no longer find it | That is how it is: switched-off promotions are no longer visible. You create a new one |
| The client tells the code but the Cassa answers «Codice non valido o inesistente» | Recheck the letters (no I, O, 0, 1), check that you are in the **same location** where it was created and that the promotion has not been switched off |
| I chose a date by mistake and cannot remove it | The field cannot be emptied: you choose another valid date or create a new promotion |
| I want the code to be valid for all clients but there is an event | You create a new promotion with «Nessun evento (Generale)» |
| The promotion is a free item but in the Cassa the total does not change | See [Promotional code rules](https://narciso.io/en/docs/regole-codici-promozionali/): the free item is not added to the receipt and has to be handed over by hand |

## Related entries

- [Promotional code rules](https://narciso.io/en/docs/regole-codici-promozionali/)
- [Discount code uses](https://narciso.io/en/docs/utilizzi/)
- [Discount code in the Cash desk](https://narciso.io/en/docs/codice-sconto-in-cassa/)
- [Loyalty rewards](https://narciso.io/en/docs/premi-fedelta/)
- [Loyalty points](https://narciso.io/en/docs/punti-fedelta/)
