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.
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
- Example testi.jsontesti.json
- Schema of testi.jsontesti.schema.json
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());