Skip to main content
Connectors

Freshsales connector

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

Written By Lauri Raivio

Last updated 16 days ago

Kaivo is a fully managed data platform that syncs your Freshsales 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 CRM data instead of moving it.

What is the Freshsales connector

Sync your Freshsales CRM data into BigQuery with Kaivo to report on pipeline, accounts, and activity alongside the rest of your data.

CategoryCRM, Marketing & Sales
AuthenticationAPI key
SetupSelf-service

Getting started with the Freshsales connector

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

Authenticate with your API Key.

FieldDescription
API Key

Freshsales API Key. See here. The key is case sensitive.

Configuring the Freshsales connector

When you set up the connector, you provide:

FieldDescription
Domain Name

The Name of your Freshsales domain

Tables and columns synced from Freshsales

Kaivo syncs 12 tables from Freshsales 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.
idINT64
citySTRING
nameSTRING
emailSTRING
phoneSTRING
stateSTRING
avatarSTRING
mediumSTRING
addressSTRING
countrySTRING
keywordSTRING
twitterSTRING
websiteSTRING
zipcodeSTRING
facebookSTRING
linkedinSTRING
owner_idINT64
job_titleSTRING
last_nameSTRING
last_seenSTRING
time_zoneSTRING
created_atSTRING
first_nameSTRING
is_deletedBOOL
lead_scoreINT64
updated_atSTRING
work_emailSTRING
external_idSTRING
recent_noteSTRING
work_numberSTRING
customer_fitSTRING
display_nameSTRING
territory_idINT64
mobile_numberSTRING
annual_revenueFLOAT64
last_contactedSTRING
won_deals_countINT64
business_type_idINT64
industry_type_idINT64
last_assigned_atSTRING
open_deals_countINT64
won_deals_amountSTRING
open_deals_amountSTRING
subscription_typesSTRING
last_contacted_modeSTRING
number_of_employeesINT64
subscription_statusINT64
active_sales_sequencesSTRING
parent_sales_account_idINT64
completed_sales_sequencesSTRING
whatsapp_subscription_statusSTRING
last_contacted_via_sales_activitySTRING
last_contacted_sales_activity_modeSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: accounts__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.
valueJSON
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: accounts__emails

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: accounts__web_form_ids

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: accounts__phone_numbers

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: accounts__team_user_ids

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.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
idINT64
titleSTRING
descriptionSTRING
due_dateSTRING
targetable_idINT64
targetable_typeSTRING
possibleSTRING
owner_idINT64
statusINT64
creater_idINT64
created_atSTRING
updated_atSTRING
outcome_idINT64
task_type_idINT64
updater_idINT64
completed_dateSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: completed_tasks__targetables

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.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
idINT64
citySTRING
emailSTRING
stateSTRING
avatarSTRING
localeSTRING
mcr_idINT64
mediumSTRING
addressSTRING
countrySTRING
keywordSTRING
twitterSTRING
zipcodeSTRING
facebookSTRING
linkedinSTRING
owner_idINT64
job_titleSTRING
last_nameSTRING
last_seenSTRING
time_zoneSTRING
created_atSTRING
first_nameSTRING
is_deletedBOOL
lead_scoreINT64
updated_atSTRING
work_emailSTRING
campaign_idINT64
external_idSTRING
last_mediumSTRING
last_sourceSTRING
recent_noteSTRING
work_numberSTRING
customer_fitINT64
display_nameSTRING
first_mediumSTRING
first_sourceSTRING
territory_idINT64
web_form_idsSTRING
last_campaignSTRING
latest_mediumSTRING
latest_sourceSTRING
mobile_numberSTRING
team_user_idsSTRING
first_campaignSTRING
last_contactedSTRING
last_seen_chatSTRING
lead_source_idINT64
total_sessionsSTRING
first_seen_chatSTRING
latest_campaignSTRING
won_deals_countINT64
last_assigned_atSTRING
open_deals_countINT64
sales_account_idINT64
won_deals_amountSTRING
contact_status_idINT64
open_deals_amountSTRING
lifecycle_stage_idINT64
subscription_typesSTRING
last_contacted_modeSTRING
subscription_statusINT64
unsubscription_reasonSTRING
active_sales_sequencesSTRING
sms_subscription_statusINT64
completed_sales_sequencesSTRING
other_unsubscription_reasonSTRING
whatsapp_subscription_statusINT64
last_contacted_via_sales_activitySTRING
last_contacted_sales_activity_modeSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: contacts__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.
valueJSON
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: contacts__emails

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: contacts__system_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.
valueJSON
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: contacts__phone_numbers

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: contacts__sales_accounts

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.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
_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.
_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.
idINT64
nameSTRING
amountSTRING
currency_idINT64
base_currency_amountSTRING
sales_account_idINT64
deal_stage_idINT64
deal_reason_idINT64
deal_type_idINT64
owner_idINT64
expected_closeSTRING
closed_dateSTRING
lead_source_idINT64
campaign_idINT64
deal_product_idINT64
deal_payment_status_idINT64
probabilityINT64
created_atSTRING
updated_atSTRING
territory_idINT64
deal_pipeline_idINT64
stage_updated_timeSTRING
ageINT64
recent_noteSTRING
completed_sales_sequencesSTRING
active_sales_sequencesSTRING
web_form_idINT64
upcoming_activities_timeSTRING
last_assigned_atSTRING
last_contacted_sales_activity_modeSTRING
last_contacted_via_sales_activitySTRING
expected_deal_valueSTRING
is_deletedBOOL
team_user_idsSTRING
avatarSTRING
forecast_categoryINT64
deal_prediction_last_updated_atSTRING
rotten_daysINT64
has_productsBOOL
productsSTRING
last_deal_predictionSTRING
deal_predictionINT64
freddy_forecast_metricsSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: lost_deals__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.
valueJSON
_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.
idINT64
nameSTRING
amountSTRING
currency_idINT64
base_currency_amountSTRING
sales_account_idINT64
deal_stage_idINT64
deal_reason_idINT64
deal_type_idINT64
owner_idINT64
expected_closeSTRING
closed_dateSTRING
lead_source_idINT64
campaign_idINT64
deal_product_idINT64
deal_payment_status_idINT64
probabilityINT64
created_atSTRING
updated_atSTRING
territory_idINT64
deal_pipeline_idINT64
stage_updated_timeSTRING
ageINT64
recent_noteSTRING
completed_sales_sequencesSTRING
active_sales_sequencesSTRING
web_form_idINT64
upcoming_activities_timeSTRING
last_assigned_atSTRING
last_contacted_sales_activity_modeSTRING
last_contacted_via_sales_activitySTRING
expected_deal_valueSTRING
is_deletedBOOL
team_user_idsSTRING
avatarSTRING
forecast_categoryINT64
deal_prediction_last_updated_atSTRING
rotten_daysINT64
has_productsBOOL
productsSTRING
last_deal_predictionSTRING
deal_predictionINT64
freddy_forecast_metricsSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: open_deals__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.
valueJSON
_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.
idINT64
titleSTRING
descriptionSTRING
due_dateSTRING
targetable_idINT64
targetable_typeSTRING
possibleSTRING
owner_idINT64
statusINT64
creater_idINT64
created_atSTRING
updated_atSTRING
outcome_idINT64
task_type_idINT64
updater_idINT64
completed_dateSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: open_tasks__targetables

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.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
idINT64
from_dateSTRING
dateSTRING
startSTRING
end_dateSTRING
endSTRING
time_zoneSTRING
titleSTRING
descriptionSTRING
creater_idINT64
targetable_idINT64
targetable_typeSTRING
possibleSTRING
locationSTRING
created_atSTRING
updated_atSTRING
is_alldayBOOL
outcome_idINT64
latitudeSTRING
longitudeSTRING
checkedin_atSTRING
checkedout_locationSTRING
can_checkin_checkoutBOOL
checkedout_latitudeSTRING
checkedin_durationSTRING
checkedout_longitudeSTRING
can_checkinBOOL
providerSTRING
checkedout_atSTRING
conference_idSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: past_appointments__appointment_attendees_attributes

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: past_appointments__targetables

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.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
_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.
idINT64
from_dateSTRING
dateSTRING
startSTRING
end_dateSTRING
endSTRING
time_zoneSTRING
titleSTRING
descriptionSTRING
creater_idINT64
targetable_idINT64
targetable_typeSTRING
possibleSTRING
locationSTRING
created_atSTRING
updated_atSTRING
is_alldayBOOL
outcome_idINT64
latitudeSTRING
longitudeSTRING
checkedin_atSTRING
checkedout_locationSTRING
can_checkin_checkoutBOOL
checkedout_latitudeSTRING
checkedin_durationSTRING
checkedout_longitudeSTRING
can_checkinBOOL
providerSTRING
checkedout_atSTRING
conference_idSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: upcoming_appointments__appointment_attendees_attributes

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: upcoming_appointments__targetables

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.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
idINT64
nameSTRING
amountSTRING
currency_idINT64
base_currency_amountSTRING
sales_account_idINT64
deal_stage_idINT64
deal_reason_idINT64
deal_type_idINT64
owner_idINT64
expected_closeSTRING
closed_dateSTRING
lead_source_idINT64
campaign_idINT64
deal_product_idINT64
deal_payment_status_idINT64
probabilityINT64
created_atSTRING
updated_atSTRING
territory_idINT64
deal_pipeline_idINT64
stage_updated_timeSTRING
ageINT64
recent_noteSTRING
completed_sales_sequencesSTRING
active_sales_sequencesSTRING
web_form_idINT64
upcoming_activities_timeSTRING
last_assigned_atSTRING
last_contacted_sales_activity_modeSTRING
last_contacted_via_sales_activitySTRING
expected_deal_valueSTRING
is_deletedBOOL
team_user_idsSTRING
avatarSTRING
forecast_categoryINT64
deal_prediction_last_updated_atSTRING
rotten_daysINT64
has_productsBOOL
productsSTRING
last_deal_predictionSTRING
deal_predictionINT64
freddy_forecast_metricsSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: won_deals__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.
valueJSON
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

How the Freshsales sync works

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

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

Common use cases for Freshsales data

Pipeline reporting

Use open_deals, won_deals, and lost_deals to track pipeline value and win rates over time.

Account view

Join contacts with accounts to understand your customers and where deals sit.

Activity tracking

Bring open_tasks, completed_tasks, and appointments together to see how reps work accounts.

Forecasting

Group deals by stage to build a clearer view of expected revenue.

Use Freshsales data in your AI and BI tools

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

Was this helpful?

Still need help? Share an idea