Skip to main content
Connectors

Productive connector

Set up the Productive connector in Kaivo: authentication, configuration, the 57 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 Productive 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 project management data instead of moving it.

What is the Productive connector

Sync your Productive agency data into BigQuery with Kaivo to analyse projects, time, and profitability in one place.

CategoryProject Management
AuthenticationAPI key
SetupSelf-service

Getting started with the Productive connector

  1. Sign up for Kaivo and create a workspace.
  2. Connect your Productive 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 Productive

Authenticate with your API Key.

FieldDescription
API Key

Your Productive API token. Generate one under Settings → API integrations in your Productive account.

Configuring the Productive connector

When you set up the connector, you provide:

FieldDescription
Organization ID

Your Productive organization ID, shown on the Settings → API integrations page (app.productive.io//settings/api-integrations).

Tables and columns synced from Productive

Kaivo syncs 57 tables from Productive 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.
typeSTRING
idSTRING
attributes__eventSTRING
attributes__deal_idFLOAT64
attributes__item_idFLOAT64
attributes__page_idFLOAT64
attributes__root_idFLOAT64
attributes__task_idFLOAT64
attributes__item_nameSTRING
... and 20 more columns

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • activities__attributes__changeset (3 columns)
  • activities__attributes__changeset__description (4 columns)
  • activities__attributes__changeset__date (4 columns)
  • activities__attributes__changeset__name (4 columns)
  • activities__attributes__changeset__note (4 columns)
  • activities__attributes__changeset__tags (3 columns)
  • activities__attributes__changeset__tags__value (4 columns)
  • activities__attributes__changeset__time (4 columns)
  • activities__attributes__changeset__event (4 columns)
  • activities__attributes__changeset__hours (4 columns)
  • activities__attributes__changeset__price (5 columns)
  • activities__attributes__changeset__title (4 columns)
  • activities__attributes__changeset__number (4 columns)
  • activities__attributes__changeset__pay_on (4 columns)
  • activities__attributes__changeset__person (6 columns)
  • activities__attributes__changeset__company (6 columns)
  • activities__attributes__changeset__project (6 columns)
  • activities__attributes__changeset__sent_on (4 columns)
  • activities__attributes__changeset__service (5 columns)
  • activities__attributes__changeset__type_id (4 columns)
  • activities__attributes__changeset__unit_id (4 columns)
  • activities__attributes__changeset__assignee (6 columns)
  • activities__attributes__changeset__currency (4 columns)
  • activities__attributes__changeset__ended_on (4 columns)
  • activities__attributes__changeset__quantity (4 columns)
  • activities__attributes__changeset__settings (18 columns)
  • activities__attributes__changeset__person_id (6 columns)
  • activities__attributes__changeset__task_list (4 columns)
  • activities__attributes__changeset__started_on (4 columns)
  • activities__attributes__changeset__total_time (4 columns)
  • activities__attributes__changeset__unit_price (5 columns)
  • activities__attributes__changeset__approved_at (4 columns)
  • activities__attributes__changeset__attachments (3 columns)
  • activities__attributes__changeset__attachments__value (4 columns)
  • activities__attributes__changeset__invoiced_on (4 columns)
  • activities__attributes__changeset__responsible (6 columns)
  • activities__attributes__changeset__deal_type_id (4 columns)
  • activities__attributes__changeset__finalized_on (4 columns)
  • activities__attributes__changeset__service_type (4 columns)
  • activities__attributes__changeset__access_type_id (4 columns)
  • activities__attributes__changeset__estimated_time (4 columns)
  • activities__attributes__changeset__billing_type_id (4 columns)
  • activities__attributes__changeset__project_manager (5 columns)
  • activities__attributes__changeset__copied_from_task (4 columns)
  • activities__attributes__changeset__document_type_id (4 columns)
  • activities__attributes__changeset__dynamic_group_id (4 columns)
  • activities__attributes__changeset__booking_method_id (4 columns)
  • activities__attributes__changeset__invoicing_settings (6 columns)
  • activities__attributes__changeset__workflow_status_id (6 columns)
  • activities__attributes__changeset__time_locking_reminders (4 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
meta__settings__system_flags__valueSTRING
meta__settings__system_flags__updated_atSTRING
meta__settings__system_flags__setting_typeSTRING
meta__page_sizeFLOAT64
meta__total_countFLOAT64
meta__total_pagesFLOAT64
meta__current_pageFLOAT64
meta__max_page_sizeFLOAT64
meta__organization_features__docs__typeSTRING
... and 180 more columns

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • approval_policies__data (4 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRING
idSTRING
attributes__urlSTRING
attributes__nameSTRING
attributes__sizeFLOAT64
attributes__resizedBOOL
attributes__temp_urlSTRING
attributes__created_atSTRING
attributes__content_typeSTRING
... and 15 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRING
idSTRING
attributes__nameSTRING
attributes__positionFLOAT64
attributes__placementFLOAT64
relationships__project__meta__includedBOOL
relationships__organization__data__typeSTRING
relationships__organization__data__idSTRING
_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.
typeSTRING
idSTRING
attributes__noteSTRING
attributes__timeFLOAT64
attributes__draftBOOL
attributes__hoursFLOAT64
attributes__approvedBOOL
attributes__canceledBOOL
attributes__ended_onSTRING
... and 29 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRING
idSTRING
attributes__bodySTRING
attributes__draftBOOL
attributes__hiddenBOOL
attributes__created_atSTRING
attributes__updated_atSTRING
attributes__commentable_typeSTRING
relationships__deal__meta__includedBOOL
... and 12 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRING
idSTRING
attributes__vatSTRING
attributes__nameSTRING
attributes__due_daysFLOAT64
attributes__settings__invoicing_settings__tax_rate_idSTRING
attributes__settings__invoicing_settings__date_interval__end_dateSTRING
attributes__settings__invoicing_settings__date_interval__date_interval_idSTRING
attributes__settings__invoicing_settings__subsidiary_idSTRING
... and 23 more columns

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • companies__attributes__contact__phones (6 columns)
  • companies__attributes__contact__websites (6 columns)
  • companies__attributes__contact__addresses (11 columns)
  • companies__attributes__tag_list (4 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRING
idSTRING
attributes__typeSTRING
attributes__vatSTRING
attributes__citySTRING
attributes__nameSTRING
attributes__phoneSTRING
attributes__stateSTRING
attributes__addressSTRING
... and 13 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRING
idSTRING
attributes__nameSTRING
attributes__positionFLOAT64
relationships__custom_field__meta__includedBOOL
relationships__organization__data__typeSTRING
relationships__organization__data__idSTRING
_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.
typeSTRING
idSTRING
attributes__descriptionSTRING
attributes__nameSTRING
attributes__globalBOOL
attributes__positionFLOAT64
attributes__requiredBOOL
attributes__sensitiveBOOL
attributes__created_atSTRING
... and 13 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRING
idSTRING
attributes__nameSTRING
attributes__created_atSTRING
attributes__updated_atSTRING
relationships__creator__meta__includedBOOL
relationships__organization__data__typeSTRING
relationships__organization__data__idSTRING
_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.
typeSTRING
idSTRING
attributes__nameSTRING
attributes__color_idFLOAT64
attributes__positionFLOAT64
attributes__status_idFLOAT64
attributes__lost_reason_enabledBOOL
attributes__probability_enabledBOOL
attributes__time_tracking_enabledBOOL
... and 6 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRING
idSTRING
attributes__costFLOAT64
attributes__dateSTRING
attributes__nameSTRING
attributes__budgetBOOL
attributes__numberSTRING
attributes__profitFLOAT64
attributes__expenseFLOAT64
... and 91 more columns

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • deals__attributes__tag_list (4 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRING
idSTRING
attributes__nameSTRING
attributes__localeSTRING
attributes__tax1_nameSTRING
attributes__tax1_valueSTRING
attributes__dual_currencyBOOL
attributes__line_item_taxBOOL
attributes__exportable_type_idFLOAT64
... and 7 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRING
idSTRING
attributes__noteSTRING
attributes__usedSTRING
attributes__pendingSTRING
attributes__end_dateSTRING
attributes__allocatedFLOAT64
attributes__start_dateSTRING
relationships__event__meta__includedBOOL
... and 5 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRING
idSTRING
attributes__nameSTRING
attributes__color_idFLOAT64
attributes__event_type_idFLOAT64
attributes__half_day_bookingsBOOL
attributes__limitation_type_idFLOAT64
attributes__sync_personal_integrationsBOOL
relationships__organization__data__typeSTRING
... and 2 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRING
idSTRING
attributes__dateSTRING
attributes__out_of_dateBOOL
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • exchange_rates__attributes__rates (6 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRING
idSTRING
attributes__dateSTRING
attributes__nameSTRING
attributes__draftBOOL
attributes__amountFLOAT64
attributes__profitFLOAT64
attributes__approvedBOOL
attributes__currencySTRING
... and 42 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRING
idSTRING
attributes__descriptionSTRING
attributes__nameSTRING
attributes__hiddenBOOL
attributes__params__date__eqSTRING
attributes__params__date__gt_eqSTRING
attributes__params__date__lt_eqSTRING
attributes__params__status__eqSTRING
... and 28 more columns

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • filters__attributes__params__assignee_id__eq (4 columns)
  • filters__attributes__params__payment_status__eq (4 columns)
  • filters__attributes__params__workflow_status_category_id__eq (4 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRING
idSTRING
attributes__nameSTRING
attributes__countrySTRING
attributes__autogenerate_holidaysBOOL
relationships__organization__data__typeSTRING
relationships__organization__data__idSTRING
_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.
typeSTRING
idSTRING
attributes__dateSTRING
attributes__nameSTRING
relationships__organization__data__typeSTRING
relationships__organization__data__idSTRING
relationships__holiday_calendar__meta__includedBOOL
_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.
typeSTRING
idSTRING
attributes__amountFLOAT64
attributes__date_toSTRING
attributes__currencySTRING
attributes__amount_defaultFLOAT64
attributes__currency_defaultSTRING
attributes__amount_normalizedFLOAT64
attributes__currency_normalizedSTRING
... and 5 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRING
idSTRING
attributes__noteSTRING
attributes__amountFLOAT64
attributes__numberSTRING
attributes__pay_onSTRING
attributes__paid_onSTRING
attributes__sent_onSTRING
attributes__subjectSTRING
... and 67 more columns

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • invoices__attributes__tag_list (4 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRING
idSTRING
attributes__descriptionSTRING
attributes__amountFLOAT64
attributes__unit_idFLOAT64
attributes__currencySTRING
attributes__positionFLOAT64
attributes__quantitySTRING
attributes__tax_nameSTRING
... and 22 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRING
idSTRING
attributes__nameSTRING
relationships__organization__data__typeSTRING
relationships__organization__data__idSTRING
_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.
typeSTRING
idSTRING
attributes__type_idFLOAT64
attributes__target_typeSTRING
attributes__access_type_idFLOAT64
attributes__dynamic_group_idFLOAT64
relationships__deal__meta__includedBOOL
relationships__page__meta__includedBOOL
relationships__team__meta__includedBOOL
... and 7 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRING
idSTRING
attributes__updated_atSTRING
attributes__preferencesSTRING
attributes__weekly_emailsBOOL
attributes__time_remindersBOOL
attributes__tasks_layout_idFLOAT64
attributes__email_notificationsBOOL
attributes__granular_notification_preferences__deals__emails__appBOOL
... and 268 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRING
idSTRING
attributes__nameSTRING
attributes__weightFLOAT64
attributes__metricsSTRING
attributes__currencySTRING
attributes__due_daysFLOAT64
attributes__email_keySTRING
attributes__time_zoneSTRING
... and 64 more columns

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • organizations__attributes__addons (4 columns)
  • organizations__attributes__working_hours (4 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRING
idSTRING
attributes__created_atSTRING
attributes__updated_atSTRING
attributes__body_snapshotSTRING
attributes__title_snapshotSTRING
relationships__page__meta__includedBOOL
relationships__person__meta__includedBOOL
relationships__organization__data__typeSTRING
... and 2 more columns

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • page_versions__attributes__prosemirror_steps (6 columns)
  • page_versions__attributes__prosemirror_steps__slice__content (5 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRING
idSTRING
attributes__bodySTRING
attributes__titleSTRING
attributes__publicBOOL
attributes__edited_atSTRING
attributes__created_atSTRING
attributes__updated_atSTRING
attributes__version_numberFLOAT64
... and 10 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRING
idSTRING
attributes__nameSTRING
attributes__created_atSTRING
attributes__updated_atSTRING
attributes__default_sequenceBOOL
relationships__creator__meta__includedBOOL
relationships__updater__meta__includedBOOL
relationships__organization__data__typeSTRING
... and 3 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRING
idSTRING
attributes__bodySTRING
attributes__fromSTRING
attributes__subjectSTRING
attributes__created_atSTRING
attributes__updated_atSTRING
attributes__before_due_dateBOOL
attributes__reminder_periodFLOAT64
... and 7 more columns

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • payment_reminders__attributes__cc (4 columns)
  • payment_reminders__attributes__to (4 columns)
  • payment_reminders__attributes__bcc (4 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRING
idSTRING
attributes__noteSTRING
attributes__amountFLOAT64
attributes__paid_onSTRING
attributes__currencySTRING
attributes__amount_defaultFLOAT64
attributes__currency_defaultSTRING
attributes__amount_normalizedFLOAT64
... and 5 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRING
idSTRING
attributes__nameSTRING
attributes__icon_idSTRING
attributes__positionFLOAT64
attributes__created_atSTRING
attributes__updated_atSTRING
attributes__pipeline_type_idFLOAT64
relationships__creator__meta__includedBOOL
... and 4 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRING
idSTRING
attributes__nameSTRING
attributes__rateFLOAT64
attributes__unit_idFLOAT64
attributes__currencySTRING
attributes__quantitySTRING
attributes__updated_atSTRING
attributes__rate_defaultFLOAT64
... and 16 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRING
idSTRING
attributes__watchedBOOL
attributes__created_atSTRING
relationships__person__meta__includedBOOL
relationships__project__meta__includedBOOL
relationships__organization__data__typeSTRING
relationships__organization__data__idSTRING
relationships__favorite_filter__meta__includedBOOL
... and 4 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRING
idSTRING
attributes__nameSTRING
attributes__numberSTRING
attributes__templateBOOL
attributes__created_atSTRING
attributes__sample_dataBOOL
attributes__public_accessBOOL
attributes__time_on_tasksBOOL
... and 14 more columns

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • projects__attributes__task_custom_fields_ids (4 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRING
idSTRING
attributes__nameSTRING
attributes__created_atSTRING
attributes__updated_atSTRING
attributes__prices_countFLOAT64
relationships__company__meta__includedBOOL
relationships__creator__meta__includedBOOL
relationships__organization__data__typeSTRING
... and 2 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRING
idSTRING
attributes__timeFLOAT64
attributes__countFLOAT64
attributes__draftBOOL
attributes__groupSTRING
attributes__mandaysSTRING
attributes__currencySTRING
attributes__end_dateSTRING
... and 34 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRING
idSTRING
attributes__countFLOAT64
attributes__groupSTRING
attributes__friday_timeFLOAT64
attributes__monday_timeFLOAT64
attributes__sunday_timeFLOAT64
attributes__tuesday_timeFLOAT64
attributes__saturday_timeFLOAT64
... and 20 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRING
idSTRING
attributes__costFLOAT64
attributes__noteSTRING
attributes__hoursSTRING
attributes__currencySTRING
attributes__ended_onSTRING
attributes__overheadBOOL
attributes__started_onSTRING
... and 16 more columns

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • salaries__attributes__working_hours (4 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRING
idSTRING
attributes__nameSTRING
attributes__positionFLOAT64
relationships__deal__meta__includedBOOL
relationships__organization__data__typeSTRING
relationships__organization__data__idSTRING
_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.
typeSTRING
idSTRING
attributes__nameSTRING
relationships__assignees__meta__includedBOOL
relationships__organization__data__typeSTRING
relationships__organization__data__idSTRING
_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.
typeSTRING
idSTRING
attributes__costFLOAT64
attributes__nameSTRING
attributes__priceFLOAT64
attributes__profitFLOAT64
attributes__revenueFLOAT64
attributes__unit_idFLOAT64
attributes__billableBOOL
... and 72 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRING
idSTRING
attributes__nameSTRING
attributes__tokenSTRING
attributes__deviceSTRING
attributes__browserSTRING
attributes__last_ipSTRING
attributes__machineBOOL
attributes__user_idFLOAT64
... and 9 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRING
idSTRING
attributes__nameSTRING
attributes__facility_costsFLOAT64
attributes__show_delivery_dateBOOL
attributes__invoice_number_formatSTRING
attributes__facility_costs_defaultFLOAT64
attributes__facility_costs_normalizedFLOAT64
relationships__bill_from__meta__includedBOOL
... and 5 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRING
idSTRING
attributes__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.
typeSTRING
idSTRING
attributes__nameSTRING
attributes__positionFLOAT64
attributes__email_keySTRING
attributes__placementFLOAT64
relationships__board__meta__includedBOOL
relationships__project__meta__includedBOOL
relationships__organization__data__typeSTRING
... and 2 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRING
idSTRING
attributes__descriptionSTRING
attributes__titleSTRING
attributes__closedBOOL
attributes__numberSTRING
attributes__privateBOOL
attributes__type_idFLOAT64
attributes__due_dateSTRING
... and 27 more columns

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • tasks__attributes__tag_list (4 columns)
  • tasks__attributes__repeat_on_weekday (4 columns)
  • tasks__attributes__todo_assignee_ids (4 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRING
idSTRING
attributes__nameSTRING
attributes__primary_component_nameSTRING
attributes__primary_component_valueSTRING
relationships__subsidiary__meta__includedBOOL
relationships__organization__data__typeSTRING
relationships__organization__data__idSTRING
_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.
typeSTRING
idSTRING
attributes__costFLOAT64
attributes__dateSTRING
attributes__noteSTRING
attributes__timeFLOAT64
attributes__approvedBOOL
attributes__currencySTRING
attributes__invoicedBOOL
... and 36 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRING
idSTRING
attributes__eventSTRING
attributes__item_idFLOAT64
attributes__item_typeSTRING
attributes__created_atSTRING
relationships__creator__meta__includedBOOL
relationships__organization__data__typeSTRING
relationships__organization__data__idSTRING
... and 1 more columns

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • time_entry_versions__attributes__object_changes__date (4 columns)
  • time_entry_versions__attributes__object_changes__time (4 columns)
  • time_entry_versions__attributes__object_changes__person_id (4 columns)
  • time_entry_versions__attributes__object_changes__created_at (4 columns)
  • time_entry_versions__attributes__object_changes__creator_id (4 columns)
  • time_entry_versions__attributes__object_changes__approved_at (4 columns)
  • time_entry_versions__attributes__object_changes__billing_point_id (4 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRING
idSTRING
attributes__person_idFLOAT64
attributes__started_atSTRING
attributes__total_timeFLOAT64
relationships__time_entry__meta__includedBOOL
relationships__organization__data__typeSTRING
relationships__organization__data__idSTRING
_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.
typeSTRING
idSTRING
attributes__emailSTRING
attributes__sysadminBOOL
attributes__last_nameSTRING
attributes__time_zoneSTRING
attributes__first_nameSTRING
attributes__preferencesSTRING
attributes__intercom_hashSTRING
... and 7 more columns

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • users__attributes__beta_features (4 columns)
  • users__attributes__sysadmin_permissions (4 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRING
idSTRING
attributes__widthFLOAT64
attributes__heightFLOAT64
attributes__row_positionFLOAT64
attributes__widget_type_idFLOAT64
attributes__column_positionFLOAT64
relationships__filter__meta__includedBOOL
relationships__dashboard__meta__includedBOOL
... and 3 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRING
idSTRING
attributes__nameSTRING
attributes__color_idFLOAT64
attributes__positionFLOAT64
attributes__category_idFLOAT64
relationships__workflow__meta__includedBOOL
relationships__organization__data__typeSTRING
relationships__organization__data__idSTRING
... and 1 more columns
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRING
idSTRING
attributes__nameSTRING
relationships__organization__data__typeSTRING
relationships__organization__data__idSTRING
relationships__workflow_statuses__meta__includedBOOL
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

How the Productive sync works

After the first load, Kaivo keeps your BigQuery warehouse up to date for you. Where Productive 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 Productive?

It depends on how much history is in your Productive 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 Productive'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 Productive, 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 Productive 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 Productive connector in Kaivo and all of its synced data is deleted with it.

Common use cases for Productive data

Project profitability

Use bookings and deals with companies to compare billed work against budgets.

Time and utilisation

Join activities with bookings to measure how time is spent.

Pipeline reporting

Use deals and deal_statuses to track pipeline and conversion.

Use Productive data in your AI and BI tools

Once Productive 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 Productive 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 Productive connector pricing and plan details.

Was this helpful?

Still need help? Share an idea