Documentation
Quick Start (5 min)
Get your AI customer service bot running in 5 minutes:
1. Create an account
Go to tahvosolutions.fi/register and enter your company name, email, and password.
2. Set your website URL
In the dashboard, go to Settings and enter your website URL.
3. Let the bot read your website
Go to What the bot knows, click Discover pages. Select which pages the bot should learn from, then click Read selected pages.
4. Embed the widget
Copy the widget code from Home and paste it into your website HTML just before </body>:
<script src="https://tahvosolutions.fi/widget.js" data-id="YOUR_WIDGET_ID"></script>
biz_a8f3c2e9b4d1. Find it in your dashboard Home tab.5. Done!
The chat bubble appears in the bottom-right corner of your website. Visitors can start chatting immediately.
Video guides
Five short videos (20–30 s, no sound, subtitles on screen) showing the setup on an example business.
Platform Installation
WordPress
Easiest: install the Tahvo Chat plugin (download; also linked in the dashboard's installation guide). In WordPress open Plugins → Add New → Upload Plugin, activate it and paste your widget ID under Settings → Tahvo Chat. Or add the script to your theme footer with a plugin such as WPCode.
Shopify
Go to Online Store → Themes → Edit code → theme.liquid. Paste the script before </body>.
WooCommerce
Same as WordPress — add to theme footer or use a plugin.
Squarespace
Go to Settings → Advanced → Code Injection → Footer. Paste the script.
Wix
Go to Settings → Custom Code. Add the script to the body end.
React / Next.js
Add to your layout component or _document.tsx:
<Script src="https://tahvosolutions.fi/widget.js" data-id="YOUR_ID" strategy="afterInteractive" />
Static HTML
Paste before </body> in your HTML file. That's it.
Home
Shows what to do next, your monthly usage (messages used / limit), your conversations and what the bot handled for you this month.
When you first log in, the guided setup takes you through it one step at a time: your website, the widget code for your site platform, a check of what the bot learned from your site, opening hours (or none, for an online service) how you take bookings (or that you don't), and last trying the bot in the preview and publishing it. At the check step the setup reads your site itself, which usually takes 1–2 minutes; the button to confirm the facts turns on once they are found. A step you finished can be changed later in Settings or What the bot knows.
Free trial
Every plan starts with a 7-day free trial with every feature and no card. The 7 days start when the chat is live on your website. A bar at the top shows the days left; choose a plan under Billing.
Conversations & customer service
Every conversation is kept here as an archive. Day to day you work from your email: when a customer needs a person, you get an email with a Reply button that opens just that conversation, and you can answer the customer right there.
Customer service hours
Set in Settings when a person answers customers. These can differ from your opening hours (for example open 8–17, a person answers 9–12). The Human button at the top of the chat shows only during these hours. During these hours a customer who asks for a person gives their name and email or phone in one message and waits in the queue (they are told so), and you and your team get an email and a phone notification right away. If nobody answers within 30 minutes, the customer is told, with an apology, that their question has been passed on, and it moves to your requests list. The customer can also press Leave the queue: the question goes to your requests at once and, while customer service is open, the customer is offered a Call button with your phone number. Outside these hours the bot takes a contact request and tells the customer when you will be back.
When a conversation ends
A conversation with no new messages for 30 minutes ends, also one a person has taken. The customer sees that the chat ended and starts a new one simply by writing.
Finding conversations
Filter by All, Active, In queue, Closed or Rated. 30 conversations are shown at a time; Load more shows older ones. A customer's messages in another language are shown translated into yours, and your reply is translated into the customer's language.
Message limits
One customer message is at most 150 characters; the customer can send as many as they need. To stop automated misuse one address can send at most 8 messages a minute and 60 a day to one business, and the customer is told if a limit is reached.
Notifications
You get an email for every customer request and when a customer wants a person. Add the dashboard to your phone's home screen (Settings → Notifications) to get phone notifications too. At the start of each month a short monthly report comes by email; everything else is in the dashboard.
Team
On Pro and Business you can invite colleagues in Settings → Team. A waiting customer is emailed to everyone on duty; the first one to press Reply takes the conversation. Each member can pause their own notifications for a break.
What the bot knows
The bot answers only from what it knows about your business. It never makes up prices or services.
Tell the bot
Write your services, prices and anything customers often ask into the Tell the bot fields, or upload a PDF (price list, menu, brochure). This works even if your website says little.
Pages read
Click Discover pages to scan your website and choose which pages to include. PDF files linked from your pages can be read too. Page limits: Starter 25, Pro 100, Business 500. Pages are refreshed weekly; Refresh all does it right away.
Custom Answers
Add specific answers the bot should give for certain questions. Enter trigger phrases (comma-separated) and the answer. When a customer's message matches a trigger phrase, the bot uses your exact answer.
Knowledge Gaps
Real questions the bot couldn't answer from your site show up here — the actual question, word for word, plus a genuine excerpt from your own site if one exists that might help. The AI never invents an answer: you write the real one yourself, optionally have it auto-translated to your other languages, and it's saved as a custom answer going forward. Dismiss any that aren't relevant.
Settings
Configure your bot:
| Setting | Description |
|---|---|
| Website URL | Your website address for crawling |
| Logo | Shown in the chat header and, if you choose, as the chat button (Pro and Business). Square, at least 256 × 256 px, max 2 MB. Best: PNG with a transparent background or SVG (JPG, GIF and WebP also work). Use a symbol or monogram rather than long text, and leave a little empty space around it. |
| Bot name | Displayed in the chat header |
| Brand color | Chat bubble and accent color |
| Widget theme | Dark or light background for the chat widget, in neutral greys so that your brand colour stands out. Text on your brand colour turns dark automatically if the colour is light. |
| Published / hidden | At the top of Settings. A new bot starts hidden: try it in the preview and press Publish the bot when you are happy. You can hide it again at any time, for example while you make changes; visitors then see no chat at all. |
| Preview | Opens your bot as visitors will see it, with the colours, theme and chat button on screen even before you save, and also while the bot is hidden. Chats in the preview show under Conversations. |
| Accent colour (Pro, Business) | Colour for the Start chat button, the send button and the visitor's messages. Leave empty to use the brand colour. Text on both colours turns dark or white automatically so it stays readable. |
| Your privacy notice | Your business is the controller of the visitors' data, so your website's privacy notice must mention the chat. Settings, Your privacy notice, has an example text in five languages with your plan's retention time filled in, and a copy button. It is an example only: check that it fits your business, with a lawyer if needed. Tahvo Solutions is not responsible for its accuracy. |
| Start screen | When a visitor opens the chat they see: start a chat, leave a message (you reply to the email they give) and call (only if you have set a phone number), plus whether customer service is in. The top is in your brand colour. Under the bot's name it says AI assistant in the visitor's language. Below the options, Frequently asked shows four questions made automatically from what the bot knows about your business (never other visitors' messages); a tap sends the question to the bot. If your site has an FAQ page, the list ends with a link to it. Can be turned off. |
| Chat button | What visitors see in the corner of the page: the chat icon in your brand color, or (Pro and Business) your own logo in a white circle or the logo alone. Upload the logo first; a transparent PNG or SVG works best for logo only. |
| Welcome messages | Per-language greeting when chat opens |
| Languages | Which languages the bot supports (plan limits apply) |
| Opening messages by page (Pro, Business) | When the page address contains a given text (e.g. /pricing), the chat opens with your own line for that page instead of the general greeting. Up to 10 pages; also works on single-page sites. |
| Contact email/phone | Where requests are emailed; the phone number is offered to a customer who leaves the queue while customer service is open |
| Business hours | Your opening hours, which the bot tells customers |
| Customer service hours | When a person answers customers; at these times a request is emailed to you and your team right away |
Your Account
At the bottom of Settings, under Account and security (2FA), you can:
- Turn on two-factor authentication (2FA) — scan the QR code with an authenticator app (Google Authenticator, Microsoft Authenticator, 1Password) (or copy the key into the app by hand) and enter the 6-digit code the app shows for Tahvo; from then on login asks for a code after the password.
- Change your password — enter your current password and a new one (min. 8 characters).
- Delete your account — permanently erases your business, all conversations, actions, crawled pages and login. Type your contact email to confirm. This cannot be undone (GDPR right to erasure).
Billing & Usage
| Plan | Price | Messages | Languages | Pages |
|---|---|---|---|---|
| Starter | €29/mo + VAT | 300/mo | 1 | 25 |
| Pro | €69/mo + VAT | 1,500/mo | 3 | 100 |
| Business | €129/mo + VAT | 4,000/mo | 5 | 500 |
Every plan starts with a 7-day free trial with every feature and no card. The 7 days start when the chat is live on your website. Confirm your email address from the welcome email first; an account that is not confirmed within 7 days is removed. If the confirmation email bounces (your mail server refused it), the dashboard tells you and shows the server's reply. If no plan is chosen when the trial ends, the chat stops showing until you choose one. Bigger plans include everything in the smaller ones.
Overage Options
Block: Bot stops when the monthly limit is reached.
Prepaid credits: Load a balance in advance (€10/25/50/100), deducted per overage message so the bot keeps answering past the limit.
Analytics
Track your bot's performance: average rating, conversation volume, popular times (hour/day heatmaps), language distribution, most asked questions, and escalation rate.
Export all conversations as JSON for archival or analysis.
Actions (What the Bot Can Do)
The bot doesn't just answer questions — it takes care of requests:
| Action | What happens | Plan |
|---|---|---|
| Contact request | Collects name, email or phone and the matter | All |
| Feedback | Star rating and comment | All |
| Quote request | Collects the details and contact info | Pro, Business |
| Callback request | Collects phone number and preferred time | Pro, Business |
| Booking request | Offers free times from your calendar; you confirm | Pro, Business |
| Orders and stock | Order status, returns, complaints, stock checks | Business |
Every request arrives in your email and in the Customer requests tab. The customer gets a confirmation email.
Several locations (Business)
Several stores or restaurants under one chat? Add them in Settings → Locations: name, address, opening hours, booking link or calendar, and an email for requests. The bot asks which location when it matters (or knows it from the page the customer is on), uses that location's hours and booking, and a request goes to that location's email as well as to you.
Bookings and calendar
In Integrations, paste the private iCal address of your Google, Outlook or Apple calendar. The bot sees when you are busy (it never changes your calendar) and offers free times; if the time asked for is taken, it suggests the next free one. You get an email and confirm the booking with one click, and the customer gets a confirmation. Using a booking system such as Timma or Bokadirekt? Add its booking link instead: the bot gives it to customers who want to book.
Languages
The bot auto-detects the customer's language and responds natively in Finnish, Swedish, Norwegian, Estonian, or English. No configuration needed — it just works.
Welcome messages can be customized per language in Settings.
Security & Privacy
Your data is isolated from other businesses. Key security measures:
- Europe-hosted infrastructure (database in London, UK)
- Tenant isolation on all database queries
- Domain validation — widget only works from your registered domain
- Rate limiting per IP (20 msg/min)
- Injection detection and PII flagging
- Encrypted in transit (TLS) and at rest
- Secure widget ID (random, not guessable)
API & Webhooks (Zapier, Make, n8n)
Everything a customer leaves in the chat (quote requests, contact and callback requests, appointment requests, order requests, feedback) can be sent to the system you already use. No Tahvo app is needed in Zapier or Make: they work through their generic Webhooks and HTTP modules.
CRM: HubSpot and Pipedrive (Pro, Business)
No Zapier needed: in Integrations → CRM choose HubSpot or Pipedrive and paste one key. HubSpot: Development → Keys → Service Keys → Create service key, add the scopes crm.objects.contacts.read and crm.objects.contacts.write and copy the key (older accounts have the same under Private Apps). Pipedrive: your profile → Personal preferences → API → Your personal API token. The key is checked before it is saved and is never shown again in full.
Every contact, callback, quote and appointment request, complaint and question left in the queue goes to the CRM: the person is found by email or created, and the request is saved as a note (Pipedrive: a lead with a note). The request email then has an Open in HubSpot / Pipedrive button, a transferred request is marked done in Tahvo, and the Requests tab shows this month's numbers and only what still needs you in Tahvo: failed transfers (with the reason) and times to confirm.
1. Push: receive events in Zapier / Make
In Zapier create a Zap with the trigger Webhooks by Zapier → Catch Hook (in Make: Webhooks → Custom webhook). Paste the address it gives you into Integrations → Webhook URL and save. Press Send test event so Zapier / Make sees the fields, then build the rest of your Zap or scenario (add a row to Sheets, a card to Trello, a message to Slack, a contact to your CRM).
Choose what is sent: new requests (default) and, optionally, status changes you make in the Actions tab. Every request is a JSON POST:
{
"event": "action_created", // or "action_updated", "test"
"event_id": "5b2e…", // unique per delivery, use it to de-duplicate
"api_version": 1,
"timestamp": "2026-10-06T09:30:00.000Z",
"business_id": "…", "business_name": "…", "business_slug": "…",
"action": {
"id": "…", "type": "quote", "status": "new",
"name": "Matti Meikäläinen", "email": "matti@example.com", "phone": "+358…",
"summary": "Quote request from Matti Meikäläinen: 3 windows",
"created_at": "…", "updated_at": "…", "conversation_id": "…",
"details": { "items": "3 windows", "notes": "…", "language": "fi" }
},
"data": { … } // the same information in the original flat format
}
Headers: X-Tahvo-Event, X-Tahvo-Business and X-Tahvo-Key (your API key, so your endpoint can check the call really came from Tahvo). Answer with any 2xx within 4 seconds; a slow endpoint never slows the chat.
2. Pull: fetch requests with your API key (Pro and Business)
Create the key in Integrations → Advanced settings and send it as the X-Tahvo-Key header. In Zapier use a Webhooks → Custom Request step on a schedule, in Make the HTTP → Make a request module.
GET https://tahvosolutions.fi/api/auth?action=feed&since=2026-10-01T00:00:00Z&limit=50
X-Tahvo-Key: tahvo_…
→ { "items": [ { "id": "…", "type": "contact", "status": "new", … } ], "count": 1, "order": "created_at", "newest": "…" }
Items are newest first. Optional query parameters: since (exclusive, ISO time), limit (1–100), type (quote, contact, callback, appointment…), status, and by=updated to list by last change instead of creation time. At most 60 requests a minute.
3. Write back: update a request from your automation
POST https://tahvosolutions.fi/api/auth
X-Tahvo-Key: tahvo_…
Content-Type: application/json
{ "action": "action_update", "id": "<action id>", "status": "done", "note": "Called, quote sent" }
Statuses: new, in_progress, done, declined (and the others shown in the Actions tab). Updates made through the API do not trigger the "status changes" webhook, so a Zap cannot loop into itself.
Shopify Integration
Business plan. In Integrations, create a Custom App in your Shopify admin (Settings → Apps → Develop apps) with the read_orders scope, then enter your store's myshopify.com domain and the Admin API access token. We verify the connection immediately (green = working) and the bot can then look up a customer's order status live.
WooCommerce Integration
Business plan. In Integrations, create a REST API key in WooCommerce (Settings → Advanced → REST API) with Read permissions, then enter your store URL, consumer key, and consumer secret (WooCommerce only shows the secret once, at creation). We verify the connection immediately (green = working) and the bot can then look up a customer's order status live.
EU AI Act Compliance
All chat interactions display an AI disclosure notice. Interaction logs are stored for audit purposes. Available for download from the Analytics tab.
See our Terms of Service and Privacy Policy for full compliance details.