Skip to main content

Export your chat analytics

Your dashboard's figures, one row per day, as CSV or JSON, for spreadsheets and tools such as Make or Zapier.

What it is

Two read-only addresses give your store's chat figures, one row per day: conversations, messages, carts, purchases, revenue from chat, unanswered questions, proactive messages, ratings and how many people saw and opened the chat. The CSV address works in Google Sheets, Excel and Power BI. The JSON address works in Make, Zapier, n8n and your own scripts. Tools that read Google Sheets, such as Looker Studio or Swydo, can use the sheet.

Create a key

  1. In the Emporiqa dashboard, open Settings > Reporting.
  2. Name the key after the sheet or tool it is for and press Create key. If you last signed in more than 15 minutes ago, you are asked to sign in again first.
  3. Copy the key, or the ready-made Google Sheets formula, straight away. The key is shown only once.

Only store owners can create and revoke keys. A store can have up to 5 keys. A key reads figures only: it cannot change anything, and it never gives conversations, questions, names or emails.

The addresses

CSV

https://emporiqa.com/reports/v1/daily.csv

JSON

https://emporiqa.com/reports/v1/daily.json

Send the key in the header Authorization: Bearer YOUR_KEY, or add ?key=YOUR_KEY to the address. Use the header in Make, Zapier or n8n: it keeps the key out of the address. A spreadsheet formula can only use the address.

Choose the days

Without a date, you get the last 30 days. Days are UTC days. Today is included, with its figures so far.

  • range=7d, range=30d or range=90d: the last 7, 30 or 90 days, today included.
  • range=mtd: this month so far.
  • range=last_month: the whole of last month.
  • from=2026-10-01&to=2026-10-31: any days you choose, written as YYYY-MM-DD.

Conversations are kept for 90 days, so from can be at most 89 days before today, and to can be today at the latest.

Dates the export cannot serve are refused, never swapped for other dates: you get status 400 and a plain message saying what to fix, such as “from must be 2026-08-08 or later: conversations are kept for 90 days”. A missing, wrong or revoked key gets 401.

The columns

Every day in the range has a row, with 0 where nothing happened. The numbers mean the same as on your dashboard: add up the rows for some days and you get the dashboard's figures for the same days.

date
The day, in UTC, written as YYYY-MM-DD.
conversations
Conversations shoppers started that day. Your own test chats are not counted.
messages
Every message in those conversations: the shopper's, your AI shop assistant's, your team's and the chat's own notices, as on the dashboard.
shopper_messages
Only the messages the shopper wrote in those conversations. This one is not on the dashboard.
conversations_with_cart
Of the conversations started that day, how many added a product to the cart.
purchases
Of the conversations started that day, how many led to an order, even when the order came days later.
revenue_from_chat
The value of orders that came from a conversation, on the day the order arrived, in revenue_currency.
revenue_currency
The currency with the most revenue from chat over the whole range, the same on every row. Orders sent without a currency are counted in it, as on the dashboard. Empty when no chat order in the range gave a currency.
unanswered_questions
Questions asked that day that your pages did not answer. None are recorded while Handoff is off.
unanswered_still_open
Of those questions, how many you have not marked resolved yet.
proactive_shown
Proactive messages from your triggers shown to shoppers that day.
proactive_clicked
Of those messages, how many shoppers clicked.
proactive_closed
Of those messages, how many shoppers closed.
proactive_sent_message
Of those messages, how many led the shopper to send a message.
rated_helpful
Thumbs-up ratings given that day.
rated_unhelpful
Thumbs-down ratings given that day.
chat_seen_by
People who saw the chat button that day. Someone who comes back on another day counts again on that day.
chat_opened_by
People who opened the chat that day.

If chat orders came in more than one currency, each other currency gets a column of its own after these, such as revenue_from_chat_USD. Currencies are never added together.

The JSON gives the same rows under days, plus from and to (the days covered), totals for the range, rates worked out from those totals, and unanswered_open_now: the questions from the last 30 days still open right now (the list your dashboard shows while Handoff is on). In totals, revenue_from_chat is a list of currency and amount, and a rate is null when there is nothing to divide by. An error comes back as {"error": "the reason"} in JSON and as plain text from the CSV address.

Set it up

Google Sheets

Paste this formula into cell A1 of an empty sheet. Google Sheets fetches the data again from time to time on its own.

=IMPORTDATA("https://emporiqa.com/reports/v1/daily.csv?key=YOUR_KEY&range=last_month")

Excel and Power BI

In Excel, choose Data > From Web; in Power BI, Get data > Web. Paste the CSV address with your key and range, then load it. Refresh with Refresh All.

https://emporiqa.com/reports/v1/daily.csv?key=YOUR_KEY&range=last_month

Make, Zapier and n8n

Add an HTTP request step: method GET, the JSON address, and the header Authorization with the value Bearer, a space, then your key. Each item in days is one day.

GET https://emporiqa.com/reports/v1/daily.json?range=last_month
Authorization: Bearer YOUR_KEY

Good to know

  • Past days can still go up. A purchase counts on the day its conversation started, and its revenue on the day the order arrived, so an order placed days after a chat raises an earlier row. Pull a month about a week after it ends.
  • unanswered_still_open goes down on past rows as you mark questions resolved.
  • The export reaches back 90 days. To keep a longer history, have Make or Zapier add yesterday's row to a sheet every day.
  • A key in a Google Sheets formula can be seen by anyone who can see the sheet. Give each sheet or tool its own key, and revoke one in Settings > Reporting when you no longer need it: it stops working at once.
  • Amounts use a dot as the decimal mark, such as 1250.50. If your spreadsheet uses a comma instead (German or French settings), set the importing Google Sheet to an English locale under File > Settings, or in Excel and Power BI set the column's type with Using Locale > English (United States); otherwise amounts read wrong.
  • Figures can be up to 5 minutes old.

Limits

  • 120 requests an hour for each key, and 600 an hour for each store.
  • Past a limit you get status 429, with a Retry-After header saying how many seconds to wait.
  • After 60 requests with a wrong key from one address in 10 minutes, that address also gets status 429.
  • Up to 5 keys for each store.