I tuoi dati

Regole commerciali

Ordine minimo, pagamenti, sconti, codici, extra, modifiche all'ordine.

A che cosa serve nella conversazione

L'assistente applica le tue regole mentre compone il carrello e il totale: dice al cliente quanto manca all'ordine minimo, propone solo i tuoi metodi di pagamento, applica sconti e codici amici, aggiunge l'extra per i colli pesanti e accetta modifiche a un ordine inviato solo entro la tua finestra. Ogni regola è una scelta fra quelle che GroceryAI applica già: nessun testo libero finisce nelle istruzioni dell'assistente.

Le regole hanno le versioni: ogni modifica ne fa una nuova, puoi tornare a una precedente, e l'anteprima mostra che cosa leggerà il cliente prima di salvare.

Esempio

Cliente: Quanto manca per l'ordine minimo?

Assistente: Il tuo carrello è di €21,40: l'ordine minimo è €25,00, mancano €3,60. Vuoi che ti proponga qualcosa?

Ordine minimo 25,00 nel regole.json d'esempio. Esempio illustrativo, coi prodotti del modello e un negozio inventato.

Che cosa succede se manca

  • Senza ordine minimo si accetta qualunque importo.
  • Senza coordinate bancarie il bonifico non si può offrire.
  • Senza sconti e codici amici non si applica nessuno sconto e un codice scritto dal cliente non vale.
  • Senza finestra di modifica vale quella di serie: modifiche fino a 2 ore prima della consegna.
  • Senza extra per i colli pesanti casse e sacchi viaggiano senza costi in più.

I campi

Obbligatorio: senza, il prodotto non si vende come il cliente se l'aspetta. Consigliato: senza, c'è un ripiego dichiarato, ma l'esperienza è più povera. Facoltativo: un miglioramento.

regole.json (PUT /v1/rules e la pagina Regole)

  • min_order_amountobbligatorio
    Tipo
    importo o null
    Esempio
    25.00
    Regola
    null o 0.00 = nessun minimo.
  • payment_methodsobbligatorio
    Tipo
    elenco
    Esempio
    cash, card_pos, bank_transfer
    Regola
    Almeno uno fra: cash, card_pos, prepaid_link, bank_transfer.
  • zonesobbligatorio
    Tipo
    elenco
    Esempio
    centro · 4.50 · 60.00
    Regola
    Costo e soglia di gratuità per zona; soglia mai sotto il costo.
  • bank_transferconsigliato
    Tipo
    intestatario, IBAN, BIC, banca
    Esempio
    IT60 X054 …
    Regola
    Obbligatorio se bank_transfer è fra i pagamenti; IBAN con le cifre di controllo.
  • prepaid_flowfacoltativo
    Tipo
    scelta
    Esempio
    none
    Regola
    operator_link: i tuoi operatori mandano il link di pagamento; none.
  • cash_requires_own_deliveryfacoltativo
    Tipo
    sì/no
    Esempio
    true
    Regola
    Contanti solo quando consegni coi tuoi mezzi (di serie sì).
  • discountsfacoltativo
    Tipo
    percentuali e giorni
    Esempio
    welcome 5 · comeback 8 after 45 days
    Regola
    Benvenuto, bentornato dopo N giorni, gradini di fedeltà (giorni crescenti), non sulle offerte (di serie).
  • friend_codesfacoltativo
    Tipo
    codici e percentuale
    Esempio
    BENVENUTO5 · 5
    Regola
    Lettere e cifre, da 3 a 40; il cliente li scrive come vuole.
  • heavy_extrasfacoltativo
    Tipo
    termini o peso, unità gratuite, tariffa
    Esempio
    cassa · 8 free · 0.40
    Regola
    Almeno un termine o un peso minimo.
  • order_edit_window_hoursfacoltativo
    Tipo
    ore
    Esempio
    3
    Regola
    Fino a quante ore prima della consegna il cliente cambia l'ordine (di serie 2).
  • checkout_upsellfacoltativo
    Tipo
    termini, quanti
    Esempio
    pile, sacchetti · 2
    Regola
    Articoli proposti alla cassa, fino a 5.
  • cart_reminderfacoltativo
    Tipo
    sì/no
    Esempio
    true
    Regola
    Promemoria della spesa lasciata a metà.
  • slot_on_sendfacoltativo
    Tipo
    scelta
    Esempio
    propose
    Regola
    set_first: l'assistente mette la prima fascia; propose: la propone con la domanda.

Scarica il modello

Errori frequenti e il loro messaggio

  • SOGLIA_SOTTO_IL_COSTO

    «La soglia per la consegna gratuita non può essere più bassa del costo della consegna.»

    Che cosa fare: Alza la soglia o lasciala vuota.

  • COORDINATE_BANCARIE_ASSENTI

    «Per offrire il bonifico servono prima le coordinate del conto del negozio.»

    Che cosa fare: Compila intestatario e IBAN, poi aggiungi il bonifico.

  • IBAN_NON_VALIDO

    «Le cifre di controllo dell'IBAN non tornano.»(spiegazione di questa guida: Core restituisce il codice)

    Che cosa fare: Ricopialo dalla banca: spazi e minuscole vanno bene.

  • GRADINI_NON_IN_ORDINE

    «I gradini di fedeltà vanno dal periodo più corto al più lungo.»(spiegazione di questa guida: Core restituisce il codice)

    Che cosa fare: Ordinali per giorni crescenti.

  • VERSIONE_CAMBIATA

    «Qualcuno ha cambiato le regole nel frattempo. Ricarica la pagina e ripeti la modifica.»

    Che cosa fare: Manda based_on_version uguale alla versione attuale.

Come mandarli

  • Dal portaleIn parte

    Oggi: Regole del negozio → ordine minimo, metodi di pagamento, costo e soglia per zona, versioni e anteprima. In arrivo: coordinate bancarie, sconti, codici amici, extra per i colli pesanti, finestra di modifica, avancassa, promemoria.

  • Dall'APIIn arrivo

    GET/PUT /v1/rules e POST /v1/rules/preview esistono; i permessi rules:read e rules:write non si possono ancora dare a una chiave dal portale.

  • Documento JSONIn arrivo

    regole.json: lo stesso documento, da scaricare e ricaricare (per chi gestisce più negozi).

Disponibilità misurata sul servizio vivo il 30 ottobre 2026.

Scrivi le regole (parti dalla versione attuale)

curl

curl -X PUT "https://oxjqgjbiltoviwldailg.supabase.co/functions/v1/core-api/v1/rules" \
  -H "Authorization: Bearer $GAI_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: regole-2026-11-02" \
  -d '{"based_on_version":3,"min_order_amount":"25.00","payment_methods":["cash","card_pos"],"zones":[{"zone_slug":"centro","delivery_cost":"4.50","free_threshold":"60.00"}],"order_edit_window_hours":3}'

Node.js (18+)

const risposta = await fetch("https://oxjqgjbiltoviwldailg.supabase.co/functions/v1/core-api/v1/rules", {
  method: "PUT",
  headers: {
    Authorization: `Bearer ${process.env.GAI_KEY}`,
    "Content-Type": "application/json",
    "Idempotency-Key": crypto.randomUUID(),
  },
  body: JSON.stringify({
    based_on_version: 3,
    min_order_amount: "25.00",
    payment_methods: ["cash", "card_pos"],
    zones: [{ zone_slug: "centro", delivery_cost: "4.50", free_threshold: "60.00" }],
    order_edit_window_hours: 3,
  }),
});
console.log(risposta.status, await risposta.json());

Documentazione dell'API