Skip to main content
Connectors

Mailchimp connector

Set up the Mailchimp 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 Mailchimp 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 survey and email data instead of moving it.

What is the Mailchimp connector

Sync your Mailchimp campaigns, lists, and email activity into BigQuery with Kaivo to analyse email marketing alongside the rest of your data.

CategorySurveys & Email, Marketing & Sales
AuthenticationAPI key
SetupSelf-service

Getting started with the Mailchimp connector

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

Authenticate with your API Key.

FieldDescription
API Key

Mailchimp API Key. See the Mailchimp docs for information on how to generate this key.

Configuring the Mailchimp connector

When you set up the connector, you provide:

FieldDescription
Start Date

Any data before this date will not be fetched.

Tables and columns synced from Mailchimp

Kaivo syncs 12 tables from Mailchimp 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.
create_timeTIMESTAMPThe timestamp when the automation was created
emails_sentFLOAT64The number of emails sent as part of the automation
idSTRINGThe unique identifier for the automation
recipients__list_idSTRINGThe ID of the recipient list
recipients__list_is_activeBOOLIndicates if the recipient list is active
recipients__list_nameSTRINGThe name of the recipient list
recipients__segment_opts__matchSTRINGMatching criteria for segmenting recipients
recipients__segment_opts__saved_segment_idFLOAT64The ID of the saved segment
recipients__store_idSTRINGThe ID of the store associated with recipients
report_summary__click_rateFLOAT64The click-through rate for the automation
report_summary__clicksFLOAT64The total number of clicks generated
report_summary__open_rateFLOAT64The open rate for the automation
report_summary__opensFLOAT64The total number of opens generated
report_summary__subscriber_clicksFLOAT64Number of clicks per subscriber
report_summary__unique_opensFLOAT64Number of unique opens recorded
settings__authenticateBOOLIndicates if authentication is set
settings__auto_footerBOOLAutomatically add footer to emails
settings__from_nameSTRINGSender's name
settings__inline_cssBOOLInclude inline CSS in emails
settings__reply_toSTRINGEmail address for replies
settings__titleSTRINGTitle of the automation
settings__to_nameSTRINGRecipient's name field
settings__use_conversationBOOLEnable conversation tracking
start_timeTIMESTAMPThe timestamp when the automation started
statusSTRINGCurrent status of the automation
tracking__capsule__notesBOOLAdditional notes for capsule tracking
tracking__clicktaleSTRINGClicktale tracking status
tracking__ecomm360BOOLEcommerce tracking status
tracking__goal_trackingBOOLGoal tracking setup status
tracking__google_analyticsSTRINGGoogle Analytics tracking status
tracking__html_clicksBOOLHTML click tracking status
tracking__opensBOOLOpen tracking status
tracking__salesforce__campaignBOOLSalesforce campaign tracking status
tracking__salesforce__notesBOOLAdditional notes for Salesforce tracking
tracking__text_clicksBOOLText click tracking status
trigger_settings__runtime__hours__typeSTRINGType of hourly triggering
trigger_settings__workflow_emails_countFLOAT64Number of emails in the workflow
trigger_settings__workflow_titleSTRINGTitle of the workflow
trigger_settings__workflow_typeSTRINGType of workflow
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: automations__recipients__segment_opts__conditions

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

Subtable: automations__trigger_settings__runtime__days

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.
ab_split_opts__from_name_aSTRINGFor campaigns split on 'From Name', the name for Group A.
ab_split_opts__from_name_bSTRINGFor campaigns split on 'From Name', the name for Group B.
ab_split_opts__pick_winnerSTRINGHow we should evaluate a winner. Based on 'opens', 'clicks', or 'manual'.
ab_split_opts__reply_email_aSTRINGFor campaigns split on 'From Name', the reply-to address for Group A.
ab_split_opts__reply_email_bSTRINGFor campaigns split on 'From Name', the reply-to address for Group B.
ab_split_opts__send_time_aTIMESTAMPThe send time for Group A.
ab_split_opts__send_time_bTIMESTAMPThe send time for Group B.
ab_split_opts__send_time_winnerSTRINGThe send time for the winning version.
ab_split_opts__split_sizeINT64The size of the split groups. Campaigns split based on 'schedule' are forced to have a 50/50 split. Valid split integers are between 1-50.
ab_split_opts__split_testSTRINGThe type of AB split to run.
ab_split_opts__subject_aSTRINGFor campaigns split on 'Subject Line', the subject line for Group A.
ab_split_opts__subject_bSTRINGFor campaigns split on 'Subject Line', the subject line for Group B.
ab_split_opts__wait_timeINT64The amount of time to wait before picking a winner. This cannot be changed after a campaign is sent.
ab_split_opts__wait_unitsSTRINGHow unit of time for measuring the winner ('hours' or 'days'). This cannot be changed after a campaign is sent.
archive_urlSTRINGThe link to the campaign's archive version in ISO 8601 format.
content_typeSTRINGHow the campaign's content is put together.
create_timeTIMESTAMPThe date and time the campaign was created in ISO 8601 format.
delivery_status__can_cancelBOOLWhether a campaign send can be canceled.
delivery_status__emails_canceledINT64The total number of emails canceled for this campaign.
delivery_status__emails_sentINT64The total number of emails confirmed sent for this campaign so far.
delivery_status__enabledBOOLWhether Campaign Delivery Status is enabled for this account and campaign.
delivery_status__statusSTRINGThe current state of a campaign delivery.
emails_sentINT64The total number of emails sent for this campaign.
idSTRINGA string that uniquely identifies this campaign.
long_archive_urlSTRINGThe original link to the campaign's archive version.
needs_block_refreshBOOLDetermines if the campaign needs its blocks refreshed by opening the web-based campaign editor. Deprecated and will always return false.
parent_campaign_idSTRINGIf this campaign is the child of another campaign, this identifies the parent campaign. For Example, for RSS or Automation children.
recipients__list_idSTRINGThe unique list id.
recipients__list_is_activeBOOLThe status of the list used, namely if it's deleted or disabled.
recipients__list_nameSTRINGThe name of the list.
recipients__recipient_countINT64Count of the recipients on the associated list. Formatted as an integer.
recipients__segment_opts__matchSTRINGSegment match type.
recipients__segment_opts__prebuilt_segment_idSTRINGThe prebuilt segment id, if a prebuilt segment has been designated for this campaign.
recipients__segment_opts__saved_segment_idINT64The id for an existing saved segment.
recipients__segment_textSTRINGA description of the [segment](https://mailchimp.com/help/create-and-send-to-a-segment/) used for the campaign. Formatted as a string marked up with HTML.
report_summary__click_rateFLOAT64The number of unique clicks divided by the total number of successful deliveries.
report_summary__clicksINT64The total number of clicks for an campaign.
report_summary__ecommerce__total_ordersINT64The total orders for a campaign.
report_summary__ecommerce__total_revenueFLOAT64The total revenue for a campaign. Calculated as the sum of all order totals minus shipping and tax totals.
report_summary__ecommerce__total_spentFLOAT64The total spent for a campaign. Calculated as the sum of all order totals with no deductions.
report_summary__open_rateFLOAT64The number of unique opens divided by the total number of successful deliveries.
report_summary__opensINT64The total number of opens for a campaign.
report_summary__subscriber_clicksINT64The number of unique clicks.
report_summary__unique_opensINT64The number of unique opens.
resendableBOOLDetermines if the campaign qualifies to be resent to non-openers.
rss_opts__constrain_rss_imgBOOLWhether to add CSS to images in the RSS feed to constrain their width in campaigns.
rss_opts__feed_urlSTRINGThe URL for the RSS feed.
rss_opts__frequencySTRINGThe frequency of the RSS Campaign.
rss_opts__last_sentTIMESTAMPThe date the campaign was last sent.
rss_opts__schedule__daily_send__fridayBOOLSends the daily RSS Campaign on Fridays.
rss_opts__schedule__daily_send__mondayBOOLSends the daily RSS Campaign on Mondays.
rss_opts__schedule__daily_send__saturdayBOOLSends the daily RSS Campaign on Saturdays.
rss_opts__schedule__daily_send__sundayBOOLSends the daily RSS Campaign on Sundays.
rss_opts__schedule__daily_send__thursdayBOOLSends the daily RSS Campaign on Thursdays.
rss_opts__schedule__daily_send__tuesdayBOOLSends the daily RSS Campaign on Tuesdays.
rss_opts__schedule__daily_send__wednesdayBOOLSends the daily RSS Campaign on Wednesdays.
rss_opts__schedule__hourINT64The hour to send the campaign in local time. Acceptable hours are 0-23. For example, '4' would be 4am in [your account's default time zone](https://mailchimp.com/help/set-account-defaults/).
rss_opts__schedule__monthly_send_dateFLOAT64The day of the month to send a monthly RSS Campaign. Acceptable days are 0-31, where '0' is always the last day of a month. Months with fewer than the selected number of days will not have an RSS campaign sent out that day. For example, RSS Campaigns set to send on the 30th will not go out in February.
rss_opts__schedule__weekly_send_daySTRINGThe day of the week to send a weekly RSS Campaign.
send_timeTIMESTAMPThe date and time a campaign was sent.
settings__authenticateBOOLWhether Mailchimp [authenticated](https://mailchimp.com/help/about-email-authentication/) the campaign. Defaults to `true`.
settings__auto_footerBOOLAutomatically append Mailchimp's [default footer](https://mailchimp.com/help/about-campaign-footers/) to the campaign.
settings__auto_tweetBOOLAutomatically tweet a link to the [campaign archive](https://mailchimp.com/help/about-email-campaign-archives-and-pages/) page when the campaign is sent.
settings__drag_and_dropBOOLWhether the campaign uses the drag-and-drop editor.
settings__fb_commentsBOOLAllows Facebook comments on the campaign (also force-enables the Campaign Archive toolbar). Defaults to `true`.
settings__folder_idSTRINGIf the campaign is listed in a folder, the id for that folder.
settings__from_nameSTRINGThe 'from' name on the campaign (not an email address).
settings__inline_cssBOOLAutomatically inline the CSS included with the campaign content.
settings__preview_textSTRINGThe preview text for the campaign.
settings__reply_toSTRINGThe reply-to email address for the campaign.
settings__subject_lineSTRINGThe subject line for the campaign.
settings__template_idINT64The id for the template used in this campaign.
settings__timewarpBOOLSend this campaign using [Timewarp](https://mailchimp.com/help/use-timewarp/).
settings__titleSTRINGThe title of the campaign.
settings__to_nameSTRINGThe campaign's custom 'To' name. Typically the first name [merge field](https://mailchimp.com/help/getting-started-with-merge-tags/).
settings__use_conversationBOOLUse Mailchimp Conversation feature to manage out-of-office replies.
social_card__descriptionSTRINGA short summary of the campaign to display.
social_card__image_urlSTRINGThe url for the header image for the card.
social_card__titleSTRINGThe title for the card. Typically the subject line of the campaign.
statusSTRINGThe current status of the campaign.
tracking__capsule__notesBOOLUpdate contact notes for a campaign based on subscriber email addresses.
tracking__clicktaleSTRINGThe custom slug for [ClickTale](https://mailchimp.com/help/additional-tracking-options-for-campaigns/) tracking (max of 50 bytes).
tracking__ecomm360BOOLWhether to enable [eCommerce360](https://mailchimp.com/help/connect-your-online-store-to-mailchimp/) tracking.
tracking__goal_trackingBOOLWhether to enable [Goal](https://mailchimp.com/help/about-connected-sites/) tracking.
tracking__google_analyticsSTRINGThe custom slug for [Google Analytics](https://mailchimp.com/help/integrate-google-analytics-with-mailchimp/) tracking (max of 50 bytes).
tracking__html_clicksBOOLWhether to [track clicks](https://mailchimp.com/help/enable-and-view-click-tracking/) in the HTML version of the campaign. Defaults to `true`. Cannot be set to false for variate campaigns.
tracking__opensBOOLWhether to [track opens](https://mailchimp.com/help/about-open-tracking/). Defaults to `true`. Cannot be set to false for variate campaigns.
tracking__salesforce__campaignBOOLCreate a campaign in a connected Salesforce account.
tracking__salesforce__notesBOOLUpdate contact notes for a campaign based on subscriber email addresses.
tracking__text_clicksBOOLWhether to [track clicks](https://mailchimp.com/help/enable-and-view-click-tracking/) in the plain-text version of the campaign. Defaults to `true`. Cannot be set to false for variate campaigns.
typeSTRINGThere are four types of [campaigns](https://mailchimp.com/help/getting-started-with-campaigns/) you can create in Mailchimp. A/B Split campaigns have been deprecated and variate campaigns should be used instead.
variate_settings__test_sizeINT64The percentage of recipients to send the test combinations to, must be a value between 10 and 100.
variate_settings__wait_timeINT64The number of minutes to wait before choosing the winning campaign. The value of wait_time must be greater than 0 and in whole hours, specified in minutes.
variate_settings__winner_criteriaSTRINGThe combination that performs the best. This may be determined automatically by click rate, open rate, or total revenue -- or you may choose manually based on the reporting data you find the most valuable. For Multivariate Campaigns testing send_time, winner_criteria is ignored. For Multivariate Campaigns with 'manual' as the winner_criteria, the winner must be chosen in the Mailchimp web application.
variate_settings__winning_campaign_idSTRINGID of the campaign that was sent to the remaining recipients based on the winning combination.
variate_settings__winning_combination_idSTRINGID for the winning combination.
web_idINT64The ID used in the Mailchimp web application. View this campaign in your Mailchimp account at `https://{dc}.admin.mailchimp.com/campaigns/show/?id={web_id}`.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: campaigns__recipients__segment_opts__conditions

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

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.

Subtable: campaigns__variate_settings__combinations

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.
content_descriptionINT64The index of `variate_settings.contents` used.
from_nameINT64The index of `variate_settings.from_names` used.
idSTRINGUnique ID for the combination.
recipientsINT64The number of recipients for this combination.
reply_toINT64The index of `variate_settings.reply_to_addresses` used.
send_timeINT64The index of `variate_settings.send_times` used.
subject_lineINT64The index of `variate_settings.subject_lines` used.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: campaigns__variate_settings__contents

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.

Subtable: campaigns__variate_settings__from_names

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.

Subtable: campaigns__variate_settings__reply_to_addresses

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.

Subtable: campaigns__variate_settings__send_times

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

Subtable: campaigns__variate_settings__subject_lines

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.
campaign_idSTRINGThe unique id for the campaign.
list_idSTRINGThe unique id for the list.
list_is_activeBOOLThe status of the list used, namely if it's deleted or disabled.
email_idSTRINGThe MD5 hash of the lowercase version of the list member's email address.
email_addressSTRINGEmail address for a subscriber.
actionSTRINGOne of the following actions: 'open', 'click', or 'bounce'
typeSTRINGIf the action is a 'bounce', the type of bounce received: 'hard', 'soft'.
timestampTIMESTAMPThe date and time recorded for the action in ISO 8601 format.
urlSTRINGIf the action is a 'click', the URL on which the member clicked.
ipSTRINGThe IP address recorded for the action.
_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.
list_idSTRINGThe ID of the list to which this interest category belongs.
idSTRINGThe unique identifier for the interest category.
titleSTRINGThe title or name of the interest category.
display_orderINT64The order in which this interest category should be displayed in the UI.
typeSTRINGThe type of interest category, e.g., 'checkboxes', 'hidden', 'dropdown'.
_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.
category_idSTRINGUnique identifier for the category to which this interest belongs.
list_idSTRINGUnique identifier for the list associated with this interest.
idSTRINGUnique identifier for this specific interest.
nameSTRINGName or label of the interest.
subscriber_countSTRINGNumber of subscribers who have selected this interest.
display_orderINT64Numeric value representing the display order of this interest within its category.
_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.
consents_to_one_to_one_messagingBOOLIndicates if the member has consented to receive one-to-one messaging
contact_idSTRINGThe unique identifier for the contact associated with the member
email_addressSTRINGThe email address of the member
email_clientSTRINGThe email client used by the member
email_typeSTRINGThe type of email address (e.g., html, text)
full_nameSTRINGThe full name of the member
idSTRINGThe unique identifier for the member
ip_optSTRINGThe IP address where the member opted in
ip_signupSTRINGThe IP address where the member signed up
languageSTRINGThe preferred language of the member
last_changedTIMESTAMPThe date and time when the member was last changed
last_note__created_atTIMESTAMPThe timestamp when the note was created
last_note__created_bySTRINGThe user who created the note
last_note__noteSTRINGThe content of the note
last_note__note_idINT64The unique identifier for the note
list_idSTRINGThe unique identifier for the list to which the member belongs
location__country_codeSTRINGThe two-letter country code of the member's location
location__dstoffINT64Daylight saving time offset in seconds
location__gmtoffINT64GMT offset in seconds
location__latitudeFLOAT64The latitude of the member's location
location__longitudeFLOAT64The longitude of the member's location
location__regionSTRINGThe region or area of the member's location
location__timezoneSTRINGThe timezone of the member's location
marketing_permissions__enabledBOOLIndicates if marketing permissions are enabled
marketing_permissions__marketing_permission_idSTRINGThe unique identifier for the marketing permission
marketing_permissions__textSTRINGThe text of the marketing permission
member_ratingINT64The rating score assigned to the member
sourceSTRINGThe source from which the member was added
stats__avg_click_rateFLOAT64Average click rate of the member
stats__avg_open_rateFLOAT64Average open rate of the member
stats__ecommerce_data__currency_codeSTRINGThe currency code used for transactions
stats__ecommerce_data__number_of_ordersFLOAT64Total number of orders placed by the member
stats__ecommerce_data__total_revenueFLOAT64Total revenue generated by the member
statusSTRINGThe subscription status of the member
tags_countINT64The count of tags associated with the member
timestamp_optTIMESTAMPThe timestamp when the member opted in
timestamp_signupTIMESTAMPThe timestamp when the member signed up
unique_email_idSTRINGThe unique email identifier for the member
unsubscribe_reasonSTRINGReason provided by the member for unsubscribing
vipBOOLIndicates if the member is a VIP
web_idINT64The unique identifier for the member on the web
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: list_members__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.
idINT64The unique identifier for the tag
nameSTRINGThe name of the tag
_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.
beamer_addressSTRINGThe list's Email Beamer address.
campaign_defaults__from_emailSTRINGThe default from email for campaigns sent to this list.
campaign_defaults__from_nameSTRINGThe default from name for campaigns sent to this list.
campaign_defaults__languageSTRINGThe default language for this list's forms.
campaign_defaults__subjectSTRINGThe default subject line for campaigns sent to this list.
contact__address1STRINGThe street address for the list contact.
contact__address2STRINGThe street address line 2 for the list contact.
contact__citySTRINGThe city for the list contact.
contact__companySTRINGThe company name for the list.
contact__countrySTRINGA two-character ISO3166 country code. Defaults to US if invalid.
contact__phoneSTRINGThe phone number for the list contact.
contact__stateSTRINGThe state for the list contact.
contact__zipSTRINGThe postal or zip code for the list contact.
date_createdTIMESTAMPThe date and time that this list was created in ISO 8601 format.
double_optinBOOLWhether or not to require the subscriber to confirm subscription via email.
email_type_optionBOOLWhether the list supports multiple formats for emails. When set to `true`, subscribers can choose whether they want to receive HTML or plain-text emails. When set to `false`, subscribers will receive HTML emails, with a plain-text alternative backup.
has_welcomeBOOLWhether or not this list has a welcome automation connected.
idSTRINGA string that uniquely identifies this list.
list_ratingINT64An auto-generated activity score for the list (0-5).
marketing_permissionsBOOLWhether or not the list has marketing permissions (eg. GDPR) enabled.
nameSTRINGThe name of the list.
notify_on_subscribeSTRINGThe email address to send subscribe notifications to.
notify_on_unsubscribeSTRINGThe email address to send unsubscribe notifications to.
permission_reminderSTRINGThe permission reminder for the list.
stats__avg_sub_rateFLOAT64The average number of subscriptions per month for the list (not returned if we haven't calculated it yet).
stats__avg_unsub_rateFLOAT64The average number of unsubscriptions per month for the list (not returned if we haven't calculated it yet).
stats__campaign_countINT64The number of campaigns in any status that use this list.
stats__campaign_last_sentTIMESTAMPThe date and time the last campaign was sent to this list in ISO 8601 format. This is updated when a campaign is sent to 10 or more recipients.
stats__cleaned_countINT64The number of members cleaned from the list.
stats__cleaned_count_since_sendINT64The number of members cleaned from the list since the last campaign was sent.
stats__click_rateFLOAT64The average click rate (a percentage represented as a number between 0 and 100) per campaign for the list (not returned if we haven't calculated it yet).
stats__last_sub_dateTIMESTAMPThe date and time of the last time someone subscribed to this list in ISO 8601 format.
stats__last_unsub_dateTIMESTAMPThe date and time of the last time someone unsubscribed from this list in ISO 8601 format.
stats__member_countINT64The number of active members in the list.
stats__member_count_since_sendINT64The number of active members in the list since the last campaign was sent.
stats__merge_field_countINT64The number of merge vars for this list (not EMAIL, which is required).
stats__open_rateFLOAT64The average open rate (a percentage represented as a number between 0 and 100) per campaign for the list (not returned if we haven't calculated it yet).
stats__target_sub_rateFLOAT64The target number of subscriptions per month for the list to keep it growing (not returned if we haven't calculated it yet).
stats__total_contactsINT64The number of contacts in the list, including subscribed, unsubscribed, pending, cleaned, deleted, transactional, and those that need to be reconfirmed.
stats__unsubscribe_countINT64The number of members who have unsubscribed from the list.
stats__unsubscribe_count_since_sendINT64The number of members who have unsubscribed since the last campaign was sent.
subscribe_url_longSTRINGThe full version of this list's subscribe form (host will vary).
subscribe_url_shortSTRINGOur EepURL shortened version of this list's subscribe form.
use_archive_barBOOLWhether campaigns for this list use the Archive Bar in archives by default.
visibilitySTRINGWhether this list is public or private.
web_idINT64The ID used in the Mailchimp web application. View this list in your Mailchimp account at `https://{dc}.admin.mailchimp.com/lists/members/?id={web_id}`.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: lists__modules

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.
idSTRINGA string that uniquely identifies this campaign.
campaign_titleSTRINGThe title of the campaign.
typeSTRINGThe type of campaign (regular, plain-text, ab_split, rss, automation, variate, or auto).
list_idSTRINGThe unique list id.
list_is_activeBOOLThe status of the list used, namely if it's deleted or disabled.
list_nameSTRINGThe name of the list.
subject_lineSTRINGThe subject line for the campaign.
preview_textSTRINGThe preview text for the campaign.
emails_sentINT64The total number of emails sent for this campaign.
abuse_reportsINT64The number of abuse reports generated for this campaign.
unsubscribedINT64The total number of unsubscribed members for this campaign.
send_timeTIMESTAMPThe date and time a campaign was sent in ISO 8601 format.
rss_last_sendTIMESTAMPFor RSS campaigns, the date and time of the last send in ISO 8601 format.
bounces__hard_bouncesINT64The total number of hard bounced email addresses.
bounces__soft_bouncesINT64The total number of soft bounced email addresses.
bounces__syntax_errorsINT64The total number of addresses that were syntax-related bounces.
forwards__forwards_countINT64How many times the campaign has been forwarded.
forwards__forwards_opensINT64How many times the forwarded campaign has been opened.
opens__opens_totalINT64The total number of opens for a campaign.
opens__unique_opensINT64The total number of unique opens.
opens__open_rateFLOAT64The number of unique opens divided by the total number of successful deliveries.
opens__last_openTIMESTAMPThe date and time of the last recorded open in ISO 8601 format.
clicks__clicks_totalINT64The total number of clicks for the campaign.
clicks__unique_clicksINT64The total number of unique clicks for links across a campaign.
clicks__unique_subscriber_clicksINT64The total number of subscribers who clicked on a campaign.
clicks__click_rateFLOAT64The number of unique clicks divided by the total number of successful deliveries.
clicks__last_clickTIMESTAMPThe date and time of the last recorded click for the campaign in ISO 8601 format.
facebook_likes__recipient_likesINT64The number of recipients who liked the campaign on Facebook.
facebook_likes__unique_likesINT64The number of unique likes.
facebook_likes__facebook_likesINT64The number of Facebook likes for the campaign.
industry_stats__typeSTRINGThe type of business industry associated with your account. For example: retail, education, etc.
industry_stats__open_rateFLOAT64The industry open rate.
industry_stats__click_rateFLOAT64The industry click rate.
industry_stats__bounce_rateFLOAT64The industry bounce rate.
industry_stats__unopen_rateFLOAT64The industry unopened rate.
industry_stats__unsub_rateFLOAT64The industry unsubscribe rate.
industry_stats__abuse_rateFLOAT64The industry abuse rate.
list_stats__sub_rateFLOAT64The average number of subscriptions per month for the list.
list_stats__unsub_rateFLOAT64The average number of unsubscriptions per month for the list.
list_stats__open_rateFLOAT64The average open rate (a percentage represented as a number between 0 and 100) per campaign for the list.
list_stats__click_rateFLOAT64The average click rate (a percentage represented as a number between 0 and 100) per campaign for the list.
ab_split__a__bouncesINT64Bounces for Campaign A.
ab_split__a__abuse_reportsINT64Abuse reports for Campaign A.
ab_split__a__unsubsINT64Unsubscribes for Campaign A.
ab_split__a__recipient_clicksINT64Recipient Clicks for Campaign A.
ab_split__a__forwardsINT64Forwards for Campaign A.
ab_split__a__forwards_opensINT64Opens from forwards for Campaign A.
ab_split__a__opensINT64Opens for Campaign A.
ab_split__a__last_openTIMESTAMPThe last open for Campaign A.
ab_split__a__unique_opensINT64Unique opens for Campaign A.
ab_split__b__bouncesINT64Bounces for Campaign B.
ab_split__b__abuse_reportsINT64Abuse reports for Campaign B.
ab_split__b__unsubsINT64Unsubscribes for Campaign B.
ab_split__b__recipient_clicksINT64Recipients clicks for Campaign B.
ab_split__b__forwardsINT64Forwards for Campaign B.
ab_split__b__forwards_opensINT64Opens for forwards from Campaign B.
ab_split__b__opensINT64Opens for Campaign B.
ab_split__b__last_openTIMESTAMPThe last open for Campaign B.
ab_split__b__unique_opensINT64Unique opens for Campaign B.
share_report__share_urlSTRINGThe URL for the VIP report.
share_report__share_passwordSTRINGIf password protected, the password for the VIP report.
ecommerce__total_ordersINT64The total orders for a campaign.
ecommerce__total_spentFLOAT64The total spent for a campaign. Calculated as the sum of all order totals with no deductions.
ecommerce__total_revenueFLOAT64The total revenue for a campaign. Calculated as the sum of all order totals minus shipping and tax totals.
ecommerce__currency_codeSTRINGThe currency code used for the campaign.
delivery_status__enabledBOOLWhether Campaign Delivery Status is enabled for this account and campaign.
delivery_status__can_cancelBOOLWhether a campaign send can be canceled.
delivery_status__statusSTRINGThe current state of a campaign delivery.
delivery_status__emails_sentINT64The total number of emails confirmed sent for this campaign so far.
delivery_status__emails_canceledINT64The total number of emails canceled for this campaign.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: reports__timewarp

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.
gmt_offsetINT64For campaigns sent with timewarp, the time zone group the member is part of.
opensINT64The number of opens.
last_openTIMESTAMPThe date and time of the last open in ISO 8601 format.
unique_opensINT64The number of unique opens.
clicksINT64The number of clicks.
last_clickTIMESTAMPThe date and time of the last click in ISO 8601 format.
unique_clicksINT64The number of unique clicks.
bouncesINT64The number of bounces.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: reports__timeseries

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.
timestampTIMESTAMPThe date and time for the series in ISO 8601 format.
emails_sentINT64The number of emails sent in the timeseries.
unique_opensINT64The number of unique opens in the timeseries.
recipients_clicksINT64The number of clicks in the timeseries.
_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.
idSTRINGThe unique identifier of the segment member.
email_addressSTRINGThe email address of the segment member.
unique_email_idSTRINGThe unique identifier related to the email address.
email_typeSTRINGThe type of email the segment member receives.
statusSTRINGThe subscription status of the segment member.
stats__avg_open_rateFLOAT64The average open rate of the segment member.
stats__avg_click_rateFLOAT64The average click-through rate of the segment member.
ip_signupSTRINGThe IP address where the segment member signed up.
timestamp_signupTIMESTAMPThe date and time when the segment member signed up.
ip_optSTRINGThe IP address where the segment member opted in.
timestamp_optTIMESTAMPThe date and time when the segment member opted in.
member_ratingINT64The rating assigned to the segment member.
last_changedTIMESTAMPThe date and time when the segment member record was last updated.
languageSTRINGThe preferred language of the segment member.
vipBOOLFlag indicating if the segment member is a VIP.
email_clientSTRINGThe client used by the segment member to access their email.
location__latitudeFLOAT64The latitude coordinate of the location.
location__longitudeFLOAT64The longitude coordinate of the location.
location__gmtoffINT64The GMT offset of the location.
location__dstoffINT64The Daylight Saving Time offset of the location.
location__country_codeSTRINGThe country code of the location.
location__timezoneSTRINGThe timezone of the location.
last_note__note_idINT64The unique identifier of the note.
last_note__created_atTIMESTAMPThe date and time when the note was created.
last_note__created_bySTRINGThe user who created the note.
last_note__noteSTRINGThe content of the note.
list_idSTRINGThe identifier of the list to which the segment member belongs.
segment_idINT64The identifier of the segment the member belongs to.
_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.
idINT64Unique identifier for the segment
nameSTRINGName of the segment
member_countINT64Total number of members in the segment
typeSTRINGType of segment (static, dynamic)
created_atTIMESTAMPThe date and time when the segment was created
updated_atTIMESTAMPThe date and time when the segment was last updated
options__matchSTRINGType of match applied for multiple conditions (all, any)
list_idSTRINGID of the list to which the segment belongs
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: segments__options__conditions

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.
condition_typeSTRINGType of condition applied
fieldSTRINGField to which the condition is applied
opSTRINGOperator used in the condition
_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.
idINT64Unique identifier of the tag.
nameSTRINGName of the tag.
list_idSTRINGIdentifier of the list to which the tag belongs.
_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.
email_idSTRINGThe unique ID of the unsubscribed email.
email_addressSTRINGThe email address of the subscriber who unsubscribed.
vipBOOLIndicates whether the subscriber was a VIP.
timestampTIMESTAMPThe date and time when the subscriber unsubscribed.
reasonSTRINGThe reason provided by the subscriber for unsubscribing.
campaign_idSTRINGThe ID of the campaign associated with the unsubscribe.
list_idSTRINGThe ID of the list from which the subscriber unsubscribed.
list_is_activeBOOLIndicates whether the list is active or inactive.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

How the Mailchimp sync works

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

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

Common use cases for Mailchimp data

Campaign performance

Use reports and email_activity to track opens, clicks, and conversions by campaign.

List growth

Analyse list_members and unsubscribes to monitor subscriber growth and churn.

Segment engagement

Report on segments to see which audiences engage and convert.

Marketing and revenue together

Join Mailchimp activity with order data in BigQuery to connect campaigns to sales.

Use Mailchimp data in your AI and BI tools

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

Was this helpful?

Still need help? Share an idea