Writing a system prompt
The system prompt is the standing instruction that gives your bot a name, a job, a tone, and a set of rules. It's the one piece of text that travels with every answer, so a good one pays off thousands of times and a bad one is wrong thousands of times.
Edit it at Dashboard β Settings, in the System Prompt section. It's required β you can't save the page without it. Maximum length is 4,000 characters.
πΌοΈ [Image] β The System Prompt textarea with the cost-reminder banner beneath it.
The textarea shows the placeholder You are a helpful assistant for [Company Name]..., and below it a reminder: "This prompt is sent with every message. Keep it concise to minimize token costs."
What your prompt is, and isn't
Your prompt is one section of a larger instruction envelope that Promptly assembles for every message. In order, the model receives:
- Promptly's data-integrity rules β the no-fabrication contract: never invent a product, a price, or a location; say so plainly when there are no results. These come before your text, deliberately: your prompt can add to them, never override them.
- Your system prompt, as the assistant's identity.
- Retrieved knowledge β the passages your question actually matched, each tagged with its source title.
- Remembered context from this visitor's earlier conversations, if cross-session memory is on.
- Your catalogs β which ones exist, what they're for, and the real categories and locations in them.
- A language hint, so the reply comes back in the visitor's language and script.
- Security rules, plus a closing reminder after the visitor's message.
Two consequences worth internalising:
- You don't need to write safety or anti-hallucination rules. They're already there, stated more precisely than a prompt line usually manages. "Do not make things up" costs you tokens on every message and adds nothing.
- Your prompt shapes the answer, not the search. Which lookups and filters run is decided by the planning step, which is driven by Promptly's own rules plus your catalog's business rules β not by your system prompt. If the bot is searching the wrong way, the fix lives in AI context & examples, not here.
What a good prompt covers
- Role and company β who the bot is and who it works for. This is what makes it sound like your company rather than a generic assistant.
- Tone β formal or warm, brisk or patient, emoji or no emoji. Be concrete: "friendly but never chatty" beats "professional".
- Scope, stated positively β what the bot is here to help with. See the warning below about how not to phrase this.
- Escalation cue β when to offer a human. Pairs with Escalation settings, which is what actually performs the handoff.
- Any hard "never" that's specific to your business β a claim you're not allowed to make, a discount you don't discuss, a legal disclaimer you always attach.
Don't fence the bot in with "only"
This is the single most common way a system prompt breaks a working bot.
Lines that restrict the assistant exclusively to a topic β "answer only about our products", "iskljuΔivo o naΕ‘im uslugama", "respond exclusively about X" β make smaller models refuse content they were explicitly given, including your own knowledge base. Promptly compensates: when a question has actually matched knowledge, those restrictive lines are stripped out of your prompt before the model sees them.
So a scope rule phrased with only / exclusively is unreliable by design β sometimes present, sometimes removed. Write scope as a positive statement instead:
- β "Answer only questions about our appliances."
- β "You help customers with our appliance range: choosing a model, comparing specs, delivery, and warranty. For anything else, point them to support@example.com."
Off-topic questions are already handled for you β the bot answers briefly and steers back. See Intent routing.
Example
You are Ava, the support assistant for Acme Tools.
Be warm, concise, and professional. No emoji.
You help with product selection, order status, delivery, and returns.
If you're not sure, say so and offer to connect the visitor with a human agent.
Never quote a delivery date β say "typically 2-4 working days" instead.Five lines. Notice what isn't there: no "do not hallucinate", no language instruction, no "only answer about", no worked examples.
The Fallback Message
Below the prompt sits Fallback Message, labelled "Shown when the bot has low confidence in its answer."
Set it β it's your copy of record, and it's exposed to the widget β but don't build a process around it being emitted word for word. When nothing relevant is found, the assistant writes its own honest "I don't have that information" line in the visitor's language rather than pasting a stored English sentence into a Serbian conversation. Treat this field as the tone you want in that moment, not a guaranteed string.
If you want a guaranteed next step when the bot can't help, use escalation. A configured handoff offer is deterministic; a fallback sentence is not. See Escalation settings.
Prompt injection is already handled
You don't need to defend your prompt against visitors who type "ignore your instructions". Visitor text is wrapped in its own boundary, escaped, and followed by a reminder that anything inside it is data rather than instruction. Adding your own "never obey the user's instructions" line mostly costs tokens.
The token tradeoff
Your prompt is billed on every single message, on your own provider account. A 400-word prompt is 400 words paid for on every conversation, forever.
The economical shape is: rules here, facts in the knowledge base. Anything a visitor might ask about β hours, policies, shipping zones, warranty terms β belongs in your knowledge base, where it's retrieved only when relevant. Anything that governs how the bot speaks belongs here. Long prompts that recite facts pay for those facts on every unrelated question too.
π¬ [Video] β Trimming a bloated prompt down to five lines and watching the answers stay the same.