Spreadsheet knowledge, row by row

AI Chatbot for Google Sheets: the answers are already in your spreadsheet

Most support knowledge does not live in a help centre. It lives in a sheet — the FAQ tab someone started in 2022, the price list, the shipping matrix, the product spec table. Download that sheet as CSV or XLSX, upload it to Asyntai, and every row becomes a separate piece of knowledge the chatbot can retrieve and answer from.

Get Started Free See the real steps

See what the chatbot would answer

Enter your website first. The assistant reads your pages, and your spreadsheet goes on top of that as precise, row-level detail.

Why a spreadsheet is the best answer source you already own

A website page is prose. It says "we ship across Europe, delivery times vary by country" — true, and useless to the person who wants to know about Norway. The sheet behind that sentence has forty rows and every one of them is an exact answer.

That is the whole reason spreadsheet uploads exist. When Asyntai ingests a normal document it cuts the text into overlapping blocks and hopes the right sentence lands in the right block. A spreadsheet does not need that guesswork: the file already tells the system where one fact ends and the next begins. So each row is stored as its own chunk, and a question about Norway retrieves the Norway row instead of a paragraph that mentions eleven countries.

One row in, one retrievable answer out. Structure you built for yourself turns out to be structure the retrieval engine wanted all along.

Price lists, size charts, opening hours per branch, warranty terms per product line, a course catalogue, a room rate table — anything you maintain in rows is a good fit. And you keep maintaining it where you always did.

How to turn a Google Sheet into chatbot knowledge

Be clear about one thing before you start, because it changes how you work: Asyntai does not connect to Google. There is no OAuth screen, no Google account token, no background polling of your document. You export the file and upload it, and what the assistant knows is a snapshot of that file.

1. In Sheets
File → Download → CSV or XLSX
2. In Asyntai
Upload the file to your knowledge base
3. Chunking
Each data row is stored separately
4. Live
Visitors get row-exact answers
Tidy the tab you want to use. Column names in row 1, data underneath. For an .xlsx export only the first sheet of the workbook is read, so move the table you want to the first tab or delete the others before you download.
Download it. In Google Sheets choose File → Download and pick Comma-separated values (.csv) or Microsoft Excel (.xlsx). Those two extensions are the only ones the upload accepts — .xls, .ods and .tsv are rejected. CSV is read as UTF-8, so accents and non-Latin scripts survive the trip.
Upload it in the dashboard. Open Add spreadsheet in your knowledge base and drop the file in. The page checks that row 1 has real headers and that at least one data row follows, then reports how many rows it stored.
Watch the row limit. Free allows 100 data rows, Starter 500, Standard 2,000 and Pro 10,000. The header row is not counted. Go over the limit in the dashboard and the upload is refused with a message naming your row count and your allowance, so nothing is silently lost.
Re-upload after you edit the sheet. This is the part people forget. Changing a price in Google Sheets does not change what the assistant says. Export again, upload again, and delete the old entry from the knowledge base so both versions are not answering at once.

Doing it from the API instead

If you would rather not touch the dashboard every month, the same upload exists as an endpoint. It takes a multipart/form-data POST with the file in a field called file, and an optional website_id when your account has more than one site. API access needs a paid plan.

Upload a sheet export
# POST /api/v1/knowledge/spreadsheet/ curl -X POST https://asyntai.com/api/v1/knowledge/spreadsheet/ \ -H "Authorization: Bearer YOUR_API_KEY" \ -F "[email protected]"
What comes back
{ "success": true, "id": "b41f9c2e-...", "title": "shipping-matrix.csv", "rows_processed": 42, "chunks_created": 42 }

The key can also travel as an X-API-Key header if that suits your tooling better. One behaviour difference is worth knowing: where the dashboard refuses an oversized file, the API accepts it and simply stops at your plan's row limit — so check rows_processed against what you sent. Full reference in the API documentation.

That endpoint is what makes a scheduled refresh possible. A monthly job in your automation tool of choice can export the sheet, POST it here, and delete the previous entry — which is as close to a sync as this gets, and it is honest about being a re-upload.

What a good chatbot spreadsheet looks like

Because each row becomes one chunk, the row has to make sense on its own. Asyntai builds the chunk text by pairing every column name with its value — Question: Do you ship to Norway? then Answer: Yes, 4–6 working days. — and empty cells are skipped. So your column headers are not decoration. They are labels the AI reads.

QuestionAnswerCategory
Do you ship to Norway?Yes. Norwegian orders arrive in 4–6 working days and shipping is 12 EUR.Shipping
How long is the warranty?24 months on all hardware, extended to 36 months if you register the product.Warranty
Can I return a sale item?Yes, within 14 days, unworn and with tags attached. Refund goes to the original card.Returns

The same shape works for catalogues: Product, SKU, Price, Stock, Lead time. One product per row, one row per answer.

  • One idea per row. An answer split over three rows retrieves as three fragments, and each fragment reaches the assistant without the other two.
  • Name the columns properly. Delivery time beats Col C, because the header text ends up inside the chunk the AI reads.
  • No merged cells or spacer rows. A CSV export flattens merges into blanks, and blank cells are dropped from the row text.
  • Skip layout columns. Notes to yourself, colour codes and internal owners add noise to every single chunk. Delete them from the export.
  • Keep one topic per file. Separate uploads for the price list and the FAQ are easier to replace when only one of them changes.

The other direction: writing chats back to a sheet

Plenty of people want the reverse flow — every conversation appended as a row so the team can read it in Google Sheets. That works, but it needs one piece in the middle, and it is fair to say why.

Asyntai webhooks fire on events such as conversation.started and escalation.requested. They POST a fixed body with an event field and a payload field, signed with an X-Webhook-Signature header. You cannot add your own headers, so the webhook cannot present a Google OAuth token and cannot call the Google Sheets API by itself.

What the webhook sends
{ "event": "escalation.requested", "payload": { "session_id": "3c81f0a7", "message": "Do you ship to Norway?" } }

The fix is a connector. Point the webhook URL at a scenario in Make, a workflow in n8n, a Zap in Zapier, or a Google Apps Script web app you deploy yourself. That step holds the Google credentials and appends the row. In a visual tool the mapping is a few fields:

Mapping in an automation tool
Google Sheets → Append Row Session {{ $json.payload.session_id }} Question {{ $json.payload.message }} Event {{ $json.event }}

Worth doing if a sheet is where your team already looks. Just do not expect it without the middle step.

What a spreadsheet-fed chatbot does well

Row-exact retrieval

Each data row is stored and searched separately, so a question about one country, one SKU or one branch pulls that row and not a wall of nearby text.

Answers using your own content

Your sheet sits alongside your website pages and uploaded documents. The chatbot answers from that material rather than from generic AI knowledge.

CSV and XLSX both work

Export whichever Google Sheets offers you. CSV is decoded as UTF-8 with a fallback, and XLSX is parsed straight from the first worksheet.

Replies in their language

A table written in one language still answers visitors in theirs — 30+ languages, detected from the question, nothing to configure.

Google Sheets chatbot questions

Can Asyntai read my Google Sheet live?

No, and it is better to know that up front. There is no Google Sheets API connection and no stored Google token. You export the sheet as CSV or XLSX and upload the file, in the dashboard or through the knowledge API. What the assistant knows is a snapshot taken at upload time, so an edit in Sheets means another export and another upload.

Which spreadsheet file types can I upload?

Exactly two: .csv and .xlsx. The file check rejects everything else, including the older .xls format and .ods. Google Sheets offers both accepted formats under File → Download. For .xlsx, only the first sheet in the workbook is read.

How many rows can the sheet have?

100 data rows on Free, 500 on Starter, 2,000 on Standard, 10,000 on Pro — see pricing. The header row is not counted. The dashboard refuses an oversized file and tells you both numbers; the API takes the file and stops at the limit.

How should I lay the sheet out?

Column names in row 1, one self-contained item per row below. Each row becomes one chunk built from Column: value pairs for every filled cell, so headers such as Question, Answer, Country or Price do real work. Avoid merged cells, blank spacer rows, and answers split across several rows.

Can conversations be written back into a sheet?

Only through a connector. Asyntai webhooks post a fixed JSON body and send no custom headers, so they cannot authenticate to Google on their own. Route the webhook into Make, n8n, Zapier or your own Google Apps Script web app, and that step appends the row.

Related pages

Other ways to feed the assistant and reach it from the tools you already run.

Put your spreadsheet to work

Upload one sheet and see how much sharper the answers get. The free plan includes 100 messages a month, which is plenty to test a real table on real questions.

Get Started Free