Skip to main content
Connectors

Canny connector

Set up the Canny connector in Kaivo: authentication, configuration, the 10 BigQuery tables it syncs, and answers to common questions.

Written By Lauri Raivio

Last updated 15 days ago

Kaivo is a fully managed data platform that syncs your Canny data into a Google BigQuery warehouse and keeps it up to date automatically. There is no pipeline to build and no infrastructure to run, so you can spend your time analysing your customer support data instead of moving it.

What is the Canny connector

Sync your Canny feedback data into BigQuery with Kaivo to analyse feature requests and customer feedback across your boards.

CategoryCustomer Service, Project Management
AuthenticationAPI key
SetupSelf-service

Getting started with the Canny connector

  1. Sign up for Kaivo and create a workspace.
  2. Connect your Canny account.
  3. Choose which tables to sync.
  4. Wait for the initial sync to finish.
  5. Query your data in BigQuery or your favourite AI or BI tool.

Authenticating Canny

Authenticate with your API Key.

FieldDescription
API Key

You can find your secret API key in Your Canny Subdomain > Settings > API

Tables and columns synced from Canny

Kaivo syncs 10 tables from Canny into a dedicated dataset in your BigQuery warehouse. Click any table to see its columns and types.

ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
createdSTRING
idSTRING
is_privateBOOL
nameSTRING
post_countFLOAT64
private_commentsBOOL
tokenSTRING
urlSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
board__createdSTRING
board__idSTRING
board__nameSTRING
board__post_countFLOAT64
board__urlSTRING
createdSTRING
idSTRING
nameSTRING
post_countFLOAT64
urlSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
createdSTRING
idSTRING
last_savedSTRING
markdown_detailsSTRING
plaintext_detailsSTRING
published_atSTRING
reactions__likeFLOAT64
statusSTRING
titleSTRING
urlSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: changelog_entries__labels

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
valueJSON
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: changelog_entries__posts

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
valueJSON
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: changelog_entries__types

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
valueSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
author__createdSTRING
author__emailSTRING
author__idSTRING
author__is_adminBOOL
author__nameSTRING
author__urlSTRING
board__createdSTRING
board__idSTRING
board__nameSTRING
board__post_countFLOAT64
board__urlSTRING
createdSTRING
idSTRING
internalBOOL
like_countFLOAT64
post__category__createdSTRING
post__category__idSTRING
post__category__nameSTRING
post__category__post_countFLOAT64
post__category__urlSTRING
post__comment_countFLOAT64
post__detailsSTRING
post__idSTRING
post__scoreFLOAT64
post__statusSTRING
post__titleSTRING
post__urlSTRING
privateBOOL
valueSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: comments__image_ur_ls

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
valueJSON
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: comments__mentions

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
valueJSON
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: comments__post__image_ur_ls

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
valueJSON
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: comments__post__jira__linked_issue_i_ds

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
valueJSON
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: comments__post__jira__linked_issues

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
valueJSON
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: comments__post__tags

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
idSTRING
nameSTRING
post_countFLOAT64
urlSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
createdSTRING
custom_fields__boolBOOL
custom_fields__monthly_spendFLOAT64
custom_fields__numberFLOAT64
custom_fields__stringSTRING
domainSTRING
idSTRING
member_countFLOAT64
monthly_spendFLOAT64
nameSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
author__admin_roleSTRING
author__createdSTRING
author__emailSTRING
author__idSTRING
author__is_adminBOOL
author__nameSTRING
author__urlSTRING
board__createdSTRING
board__idSTRING
board__nameSTRING
board__post_countFLOAT64
board__urlSTRING
by__admin_roleSTRING
by__createdSTRING
by__emailSTRING
by__idSTRING
by__is_adminBOOL
by__nameSTRING
by__urlSTRING
category__createdSTRING
category__idSTRING
category__nameSTRING
category__post_countFLOAT64
category__urlSTRING
comment_countFLOAT64
createdSTRING
detailsSTRING
idSTRING
owner__admin_roleSTRING
owner__createdSTRING
owner__emailSTRING
owner__idSTRING
owner__is_adminBOOL
owner__nameSTRING
owner__urlSTRING
scoreFLOAT64
statusSTRING
status_changed_atSTRING
titleSTRING
total_mrrFLOAT64
urlSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: posts__clickup__linked_tasks

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
valueJSON
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: posts__custom_fields

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
valueJSON
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: posts__image_ur_ls

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
valueJSON
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: posts__jira__linked_issue_i_ds

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
valueJSON
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: posts__jira__linked_issues

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
valueJSON
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: posts__merge_history

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
valueJSON
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: posts__tags

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
idSTRING
nameSTRING
post_countFLOAT64
urlSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
changer__createdSTRING
changer__emailSTRING
changer__idSTRING
changer__nameSTRING
changer__urlSTRING
createdSTRING
idSTRING
post__board__createdSTRING
post__board__idSTRING
post__board__nameSTRING
post__board__post_countFLOAT64
post__board__urlSTRING
post__category__createdSTRING
post__category__idSTRING
post__category__nameSTRING
post__category__post_countFLOAT64
post__category__urlSTRING
post__createdSTRING
post__detailsSTRING
post__idSTRING
post__scoreFLOAT64
post__statusSTRING
post__titleSTRING
post__urlSTRING
statusSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: status_changes__post__image_ur_ls

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
valueJSON
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: status_changes__post__jira__linked_issue_i_ds

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
valueJSON
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: status_changes__post__jira__linked_issues

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
valueJSON
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: status_changes__post__tags

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
idSTRING
nameSTRING
post_countFLOAT64
urlSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
board__createdSTRING
board__idSTRING
board__nameSTRING
board__post_countFLOAT64
board__urlSTRING
createdSTRING
idSTRING
nameSTRING
post_countFLOAT64
urlSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
aliasSTRING
createdSTRING
emailSTRING
idSTRING
is_adminBOOL
last_activitySTRING
nameSTRING
urlSTRING
user_idSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: users__companies

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
createdSTRING
custom_fields__boolBOOL
custom_fields__monthly_spendFLOAT64
custom_fields__numberFLOAT64
custom_fields__stringSTRING
idSTRING
monthly_spendFLOAT64
nameSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
board__createdSTRING
board__idSTRING
board__nameSTRING
board__post_countFLOAT64
board__urlSTRING
by__createdSTRING
by__emailSTRING
by__idSTRING
by__is_adminBOOL
by__nameSTRING
by__urlSTRING
createdSTRING
idSTRING
post__category__createdSTRING
post__category__idSTRING
post__category__nameSTRING
post__category__post_countFLOAT64
post__category__urlSTRING
post__comment_countFLOAT64
post__detailsSTRING
post__idSTRING
post__scoreFLOAT64
post__statusSTRING
post__titleSTRING
post__urlSTRING
vote_prioritySTRING
voter__createdSTRING
voter__emailSTRING
voter__idSTRING
voter__is_adminBOOL
voter__nameSTRING
voter__urlSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: votes__post__image_ur_ls

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
valueJSON
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: votes__post__jira__linked_issue_i_ds

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
valueJSON
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: votes__post__jira__linked_issues

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
valueJSON
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: votes__post__tags

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
idSTRING
nameSTRING
post_countFLOAT64
urlSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

How the Canny sync works

After the first load, Kaivo keeps your BigQuery warehouse up to date for you. Where Canny supports it, each sync pulls only new and changed records so it stays fast; otherwise it refreshes the whole table. Every record keeps its original ID, so you won't get duplicate rows.

Frequently asked questions

How long does the initial sync take for Canny?

It depends on how much history is in your Canny account. Most initial syncs finish within minutes, while large accounts can take a few hours. After that, syncs only fetch new and changed records, so they're much faster.

Can I sync only some tables or columns?

Yes. You pick which tables to sync when you set up the connection and can change the selection later. Tables you don't select are never copied to your warehouse.

What happens when Canny's schema changes?

New fields are never added automatically. You choose which fields to sync, so data you haven't selected (sensitive personal data, for example) never lands in your warehouse. When a new field appears, it becomes available for you to add. What happens to removed or renamed fields depends on a table's sync mode: full-refresh tables always match what's currently in Canny, so dropped fields disappear, while incremental tables keep their existing columns and history, so an old field stays and newly added fields fill in over time.

How do I handle GDPR or data deletion requests?

Your data lives in your own Kaivo-managed BigQuery warehouse, so the most direct option is to delete or anonymise specific records right in BigQuery. If you delete data in Canny instead, full-refresh tables drop it on the next sync, while incremental tables keep it, so you would remove the row in BigQuery or ask us to run a full refresh. To remove everything, delete the Canny connector in Kaivo and all of its synced data is deleted with it.

Common use cases for Canny data

Feature demand

Use posts and votes to find the most requested features across your boards.

Feedback themes

Join posts with categories and tags to understand what customers ask for.

Roadmap tracking

Use status_changes and changelog_entries to follow requests from idea to shipped.

Account context

Join posts with companies to see which customers drive demand.

Use Canny data in your AI and BI tools

Once Canny data lands in your Kaivo-managed BigQuery warehouse, you can explore it with AI tools or any BI tool that connects to BigQuery. Here's how the most common destinations work with Canny data.

Claude

Use Kaivo's MCP server to give Claude secure, workspace-scoped access to your data. Setup guide →

Power BI

Microsoft's BI tool with a native BigQuery connector. Supports direct query and scheduled refresh. Setup guide →

Data Studio

Free Google BI tool with native BigQuery support. One-click connection to your Kaivo warehouse; great for SMB teams on Google Workspace. Setup guide →

Tableau

The premium analytics standard, with native BigQuery integration. Setup guide →

Google Sheets

Use Connected Sheets to query BigQuery directly from a spreadsheet, with no SQL. Setup guide →

Excel

Connect via Power Query's BigQuery connector. Setup guide →

Metabase

Open-source BI tool with strong BigQuery support. Setup guide →

See our pricing page for Canny connector pricing and plan details.

Was this helpful?

Still need help? Share an idea