Your data

Texts and tone

The phrases the assistant greets and confirms with, its hours, department headers, the base shopping list.

What it does in the conversation

You can rewrite, one by one and per language, the phrases with which the assistant greets, welcomes a new customer, welcomes back, invites to look, and confirms the usual. Each phrase keeps the placeholders of the original ({name}, {title}…) and has a preview; you can always go back to the original phrase. The list is closed: there is no free field that ends up in the assistant's instructions.

Also: the assistant's hours, the department headers of the cart with their emoji, and the base shopping list proposed to a customer without history who says «do the shopping for me». The greeting of the chat on your site is already set today in Website chat → Chat appearance.

Example

Customer: Hi

Assistant: Hi Anna! I'm the assistant of Bottega Esempio: tell me what you need, I'll take care of the rest.

The phrase greeting_named rewritten by the store, with the placeholder {name}. Illustrative example, with the products of the template and an invented store.

If it is missing

  • Without your phrases, the assistant uses the standard ones of the language: correct, but not your voice.
  • Without department headers, cart lines have no emoji group titles.
  • Without the base shopping list, a customer without history who asks you to choose gets the standard list of the language.

The fields

Required: without it the product is not sold the way the customer expects. Recommended: without it there is a declared fallback, but the experience is poorer. Optional: an improvement.

testi.json (PUT /v1/store_texts)

  • phrasesoptional
    Type
    lang, key, text
    Example
    it · greeting_named · Ciao {name}! …
    Rule
    Keys: greeting_named, greeting_anonymous, welcome_new, welcome_back, cta_look, usual_added, usuals_added, list_usuals_ask…; same placeholders, no links; text null returns to the original.
  • assistant_hoursoptional
    Type
    always, or windows
    Example
    {"always": true}
    Rule
    Days from 0 (Sunday) to 6; from before to.
  • departmentsoptional
    Type
    category and emoji
    Example
    Frutta · 🍎
    Rule
    The category as written in the catalog.
  • weekly_shop_base_listoptional
    Type
    list
    Example
    latte, pane, uova
    Rule
    Search terms in the catalog language.

Download the template

Frequent errors and their message

  • SEGNAPOSTO_DIVERSI

    «The phrase must keep the same placeholders as the original.»(explanation of this guide: Core returns the code)

    What to do: Keep {name}, {title}… exactly as they are.

  • LINK_NELLA_FRASE

    «A phrase cannot contain links.»(explanation of this guide: Core returns the code)

    What to do: Links come from the Site paths.

  • FRASE_NON_MODIFICABILE

    «This phrase is not in the list of phrases you can rewrite.»(explanation of this guide: Core returns the code)

    What to do: Use one of the listed keys.

  • ORARI_NON_VALIDI

    «Check the opening hours: each slot needs its days and a start time before the end time.»

    What to do: Write hours as windows with days, from and to.

How to send it

  • From the portalComing

    Coming: the «Texts and tone» page with preview. Today: the greeting of the chat on your site (Website chat → Chat appearance).

  • From the APIComing

    GET/PUT /v1/store_texts exists; the key permissions texts:read and texts:write cannot be created from the portal yet.

  • JSON documentComing

    testi.json: the same document, to download and reload.

Availability as measured on the live service on 30 October 2026.

Rewrite the greeting

curl

curl -X PUT "https://oxjqgjbiltoviwldailg.supabase.co/functions/v1/core-api/v1/store_texts?lang=it" \
  -H "Authorization: Bearer $GAI_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: saluto-2026-11-02" \
  -d '{"phrases":[{"lang":"it","key":"greeting_named","text":"Ciao {name}! Sono l'\''assistente di Bottega Esempio: scrivimi che cosa ti serve."}]}'

Node.js (18+)

const risposta = await fetch("https://oxjqgjbiltoviwldailg.supabase.co/functions/v1/core-api/v1/store_texts?lang=it", {
  method: "PUT",
  headers: {
    Authorization: `Bearer ${process.env.GAI_KEY}`,
    "Content-Type": "application/json",
    "Idempotency-Key": crypto.randomUUID(),
  },
  body: JSON.stringify({
    phrases: [
      { lang: "it", key: "greeting_named", text: "Ciao {name}! Sono l'assistente di Bottega Esempio: scrivimi che cosa ti serve." },
    ],
  }),
});
console.log(risposta.status, await risposta.json());

API documentation