Integrations
Looker Studio
Build Looker Studio reports on Onym's four flat datasets.
Replace
YOUR_API_KEY with a key from Settings → API and MCP. Keys are shown once when you create them.Onym publishes four flat, typed datasets made for BI tools. You can bring them into Looker Studio through Google Sheets in a few minutes, or with Onym's community connector.
| Dataset | One row per |
|---|---|
visibility |
Run date × surface × brand |
prompts |
Prompt |
sources |
Cited site |
answers |
Answer |
Option 1: through Google Sheets
The quickest route, and it needs no code.
- In a new Google Sheet, enter the formula below in cell A1. Use a dedicated read key: it sits in the sheet.
- In Looker Studio, choose Create → Data source → Google Sheets and pick the sheet.
Sheets
=IMPORTDATA("https://getonym.com/api/v1/domains/acme.example/datasets/visibility.csv?range=90d&key=YOUR_API_KEY")Sheets refreshes IMPORTDATA about once an hour. See Google Sheets and CSV for more.
Option 2: the community connector
The connector fetches the datasets directly and maps their types for Looker Studio. It's an Apps Script project you deploy once in your own Google account.
- Go to script.google.com and create a project named "Onym connector".
- In Project settings, tick Show "appsscript.json" manifest file in editor.
- Replace
Code.gsandappsscript.jsonwith the two files below. - Choose Deploy → New deployment, pick Add-on → Looker Studio connector, and copy the deployment ID.
- Open
https://lookerstudio.google.com/datasources/create?connectorId=DEPLOYMENT_ID, paste a read key, then pick a domain, dataset, range and question type.
Field dictionary
visibility
| Field | Type | Description |
|---|---|---|
run_date |
date | The run's date (UTC) |
surface |
text | The surface's name, like ChatGPT |
brand |
text | You or a tracked competitor |
is_you |
boolean | Whether the row is your brand |
answers |
number | Answers on that surface that day |
named |
number | Answers that named the brand |
rate |
percent | named / answers |
low_95, high_95 |
percent | The 95% range |
prompts
| Field | Type | Description |
|---|---|---|
prompt |
text | The question |
topic |
text | Its topic |
status |
text | active, suggested or archived |
answers, named |
number | Answers, and answers naming you |
visibility |
percent | named / answers |
avg_position |
number | Your average rank when named |
top_competitor |
text | The competitor named most |
sources
| Field | Type | Description |
|---|---|---|
domain |
text | The cited site |
owner |
text | Who owns it, or its kind |
type |
text | Yours, Competitor, UGC & community, Reviews & directories, Reference, Editorial & other |
answers_citing |
number | Answers citing it |
share_of_answers |
percent | Those answers as a share of all answers |
prompts |
number | Prompts whose answers cite it |
named_you |
number | Answers citing it that name you |
gap_answers |
number | Answers citing it that name a competitor and not you |
answers
| Field | Type | Description |
|---|---|---|
run_date |
date | The run's date |
prompt, topic |
text | The question and its topic |
surface |
text | Where it was asked |
named_you |
boolean | Whether you were named |
your_position |
number | Your rank, if named |
competitors |
text | Tracked competitors named, separated by ; |
citations |
number | How many URLs it cited |
Report recipes
- Visibility trend: time series of
ratebyrun_date, breakdownbrand. Add asurfacefilter control. - You vs. the field: bar chart of
ratebybrand, filtered to the last run date. - Where you're missing: table of
sourcessorted bygap_answers.
Set rate to aggregate as a weighted ratio, not an average: create a calculated field SUM(named) / SUM(answers). Averaging rates gives a day with three answers as much weight as a day with three hundred.