Overview
The Snowflake integration is in beta and is only available to select users. Want early access? Reach out to join the beta.
Connect Apollo to Snowflake to access Apollo activity, engagement, and CRM mapping data directly in your Snowflake warehouse. The Snowflake integration gives your team direct access to your Apollo data so you can build custom reports, connect Apollo activity to your existing business intelligence (BI) workflows, and analyze go-to-market performance without manually exporting CSVs from Apollo.
Use the Snowflake integration to:
- Report on rep activity across emails, calls, tasks, meetings, and conversations.
- Analyze sequence performance, reply sentiment, contact campaign status, and deliverability trends.
- Join Apollo activity to your CRM data using Apollo IDs, CRM IDs, and mapping tables for custom analysis.
Apollo also shares table freshness with sync status data so you know your reporting reflects the latest available information.
The Snowflake integration shares data directly to your Snowflake environment. Apollo doesn't own, provision, or manage your Snowflake environment.
Check out the following sections to connect and use the Snowflake integration.
Requirements
The Snowflake integration is only available with organization plans on Apollo. If you need access to this integration, upgrade your plan. If you have questions about upgrading, contact sales.
Before you connect Apollo to Snowflake, confirm that you meet the following requirements:
- An organization plan on Apollo.
- A Snowflake account that can receive inbound data shares.
- Permission to create databases from inbound shares in Snowflake.
- The Snowflake account identifier that receives Apollo data.
Connect Apollo to Snowflake
To connect Apollo to Snowflake, reach out to Apollo Support and provide your Snowflake account identifier. This unique ID identifies your Snowflake workspace and consists of your Snowflake organization name followed by the account name, like sumwareorg.sumwaresoftware.
Apollo configures the integration and enables data sharing to your Snowflake account. You can then create a database from the inbound share and begin querying Apollo data directly from your warehouse.
Understand the Shared Data
Apollo shares data with Snowflake across activity, engagement, and CRM integrations. Use the following guide to understand the schema and what's included in the data. Click each table for additional details and column descriptions.
Need the full schema in a portable format? Download the Snowflake schema to review table names, column names, data types, and nullability.
Account stages
The account_stages table contains account stage values.
| Account stages | |
|---|---|
| Column | Description |
_id |
Apollo account stage ID. |
name |
The name of the account stage. |
team_id |
Apollo team ID associated with the account stage. |
Accounts
The accounts table includes Apollo account IDs and the minimum fields needed to join account activity to other Apollo and CRM data.
| Accounts | |
|---|---|
| Column | Description |
_id |
Apollo account ID. |
domain |
Company website domain associated with the account. |
owner_id |
ID of the Apollo user who owns the account. Join to users._id to identify the owner. |
external_ids |
Array of related CRM IDs. |
external_id_names |
Array of CRM ID field names that correspond to the values in external_ids. |
team_id |
Apollo team ID associated with the account. |
created_at |
Date and time in UTC when the account was created in Apollo. |
updated_at |
Date and time in UTC when the account was last updated in Apollo. |
Activity log
The activity_log table contains prospecting activity per contact in Apollo, including stage changes, sequence events, and account reassignments.
| Activity log | |
|---|---|
| Column | Description |
_id |
Apollo activity log ID. |
type_cd |
Activity action type. |
old_contact_stage_id |
Previous Apollo contact stage ID. Join to contact_stages._id. |
contact_stage_id |
Current Apollo contact stage ID. Join to contact_stages._id. |
account_stage_id |
Current Apollo account stage ID. Join to account_stages._id. |
old_account_id |
Previous Apollo account ID. Join to accounts._id. |
new_account_id |
New Apollo account ID. Join to accounts._id. |
new_crm_owner_id |
New CRM owner ID associated with the activity. |
typed_custom_field_changes |
Structured custom field changes associated with the activity. |
user_id |
Apollo user ID associated with the activity. Join to users._id. |
team_id |
Apollo team ID associated with the activity. |
contact_id |
Apollo contact ID associated with the activity. Join to contacts._id. |
account_id |
Apollo account ID associated with the activity. Join to accounts._id. |
emailer_campaign_id |
Apollo sequence ID associated with the activity. Join to sequences._id to identify the sequence. |
emailer_message_id |
Apollo email message ID associated with the activity. Join to email_messages._id. |
created_at |
Date and time in UTC when the activity occurred. |
Contact campaign statuses
The contact_campaign_statuses table shows one row per contact per sequence. Use this table to understand whether contacts are active, paused, finished, or failed through bounces or spam blocks in a sequence. To report on contact status by sequence, aggregate rows in this table rather than relying on sequence-level summary fields.
| Contact campaign statuses | |
|---|---|
| Column | Description |
contact_id |
Apollo contact ID. Join to contacts._id to identify the contact. |
emailer_campaign_id |
Apollo sequence ID. Join to sequences._id to identify the sequence. |
current_step_id |
Current sequence step ID for the contact. Join to sequence_steps._id to identify the sequence step. |
status |
Current sequence status for the contact, such as active, paused, finished, or failed. If failed, see failure_reason. |
failure_reason |
Reason the contact failed in the sequence, such as bounced, spam_blocked, or past_date_failure. |
added_at |
Date and time in UTC when the contact was added to the sequence. |
finished_at |
Date and time in UTC when the contact finished the sequence. |
failed_at |
Date and time in UTC when the contact failed in the sequence. |
paused_at |
Date and time in UTC when the contact was paused in the sequence. |
auto_unpause_at |
Date and time in UTC when the contact is scheduled to automatically resume in the sequence. Apollo only automatically un-pauses contacts when it detects an out of office auto reply and the contact's message includes a return date. |
inactive_reason |
Reason the contact is inactive in the sequence. |
skipped_emailer_step_ids |
Array of sequence step IDs skipped for the contact. Join to sequence_steps._id to identify the steps. |
completed_emailer_step_ids |
Array of sequence step IDs completed by the contact. Join to sequence_steps._id to identify the steps. |
team_id |
Apollo team ID associated with the sequence status record. |
Contact stages
The contact_stages table contains contact stage values used to resolve contact stage IDs into readable names.
| Contact stages | |
|---|---|
| Column | Description |
_id |
Apollo contact stage ID. |
name |
Name of the contact stage. |
team_id |
Apollo team ID associated with the contact stage. |
Contacts
The contacts table includes Apollo contact IDs and the minimum fields needed to join contact activity to other Apollo and CRM data. This table does not include contact email addresses or phone numbers.
| Contacts | |
|---|---|
| Column | Description |
_id |
Apollo contact ID. |
domain |
Company domain associated with the contact. Use this to join contact records to account or CRM data. |
owner_id |
Apollo user ID of the person who owns the contact. Join to users._id to identify the owner. |
account_id |
Apollo account ID associated with the contact. Join to accounts._id to identify the account. |
external_ids |
Array of related CRM IDs, such as Salesforce contact, Salesforce lead, or HubSpot IDs. |
external_id_names |
Array of CRM ID field names that correspond to the values in external_ids. |
team_id |
Apollo team ID associated with the contact. |
created_at |
Date and time in UTC when the contact was created in Apollo. |
updated_at |
Date and time in UTC when the contact was last updated in Apollo. |
Conversations
The conversations table contains conversation intelligence data, including Apollo-calculated metrics such as talk duration, user, and meeting information.
| Conversations | |
|---|---|
| Column | Description |
_id |
Apollo conversation ID. |
state |
Conversation processing state, such as created, downloaded, insights_generated, incomplete_record, failed, or deleted. |
type |
Conversation type, such as internal or external. |
duration |
Conversation duration in seconds. |
start_time |
Date and time in UTC when the conversation recording started. |
meeting_start_time |
Date and time in UTC when the meeting was scheduled to start. |
longest_customer_monologue_duration |
Duration in seconds of the longest customer monologue in the conversation. |
is_private |
Indicates whether the conversation is private. |
failure_code |
Conversation failure code, such as blocked_domain, no_participants, or technical_issue. |
lang_code |
ISO 639-1 language code for the conversation. |
phone_call_id |
Apollo phone call ID associated with the conversation. Join to phone_calls._id. |
calendar_event_id |
Apollo meeting ID associated with the conversation. Join to meetings._id. |
opportunity_stage_during_conversation_id |
Opportunity stage ID associated with the conversation. Join to opportunity_stages._id to identify the opportunity stage. |
user_id |
Apollo user ID associated with the conversation. Join to users._id to identify the user. |
team_id |
Apollo team ID associated with the conversation. |
created_at |
Date and time in UTC when the conversation was created in Apollo. |
updated_at |
Date and time in UTC when the conversation was last updated in Apollo. |
Email message events
The email_message_events table contains email engagement events, such as opens, clicks, replies, bounces, and unsubscribes.
| Email message events | |
|---|---|
| Column | Description |
_id |
Apollo email message event ID. |
type_cd |
Email event type, such as open, click, reply, bounce, or unsubscribe. |
caused_by_email_address |
Email address that caused the event, when available. |
provider_thread_id |
Provider thread ID associated with the event. |
third_party_tracking_service |
Third-party tracking service associated with the event, when available. |
sendgrid_event_reason |
SendGrid event reason associated with the email event, when available. |
bounce_category |
Bounce category for bounce events. |
smtp_code |
SMTP code associated with the event, when available. |
self_caused |
Indicates whether an open or click was likely caused by bot activity rather than real human engagement. Use self_caused = FALSE when reporting on open and click rates to exclude bot opens and clicks. |
actual_created_at |
Date and time in UTC when the event actually occurred. |
contact_id |
Apollo contact ID associated with the event. Join to contacts._id. |
emailer_message_id |
Apollo email message ID. Join to email_messages._id to identify the email message. |
user_id |
Apollo user ID associated with the event. Join to users._id. |
team_id |
Apollo team ID associated with the email message event. |
created_at |
Date and time in UTC when the event record was created in Apollo. |
Email messages
The email_messages table contains email activity generated through Apollo.
| Email messages | |
|---|---|
| Column | Description |
_id |
Apollo email message ID. |
subject |
Subject line for the email message. |
template_subject |
Subject line from the associated email template, when available. |
status_cd |
Email message status, such as sent. |
type_cd |
Email message type. |
surface_cd |
Apollo surface where the email message was created or sent. |
reply_class_cd |
Reply sentiment classification, such as interested, positive, neutral, or negative. |
creation_type_cd |
Creation type for the email message. |
deleted |
Indicates whether the email message was deleted. |
response_to_outbound_email |
Indicates whether the message was a response to an outbound email. |
enable_tracking |
Indicates whether email tracking was enabled for the email message. |
open_tracking_enabled |
Indicates whether open tracking was enabled for the email message. |
click_tracking_enabled |
Indicates whether click tracking was enabled for the email message. |
tracking_disabled_reason_cd |
Reason tracking was disabled for the email message. |
personalized_opener |
Personalized opener used in the email message, when available. |
not_sent_reason_cd |
Reason the email message was not sent, when applicable. |
failure_reason |
Failure reason for the email message, when applicable. |
send_reminder_if_no_reply |
Indicates whether Apollo should send a reminder if there is no reply. |
reminder_sent_at |
Date and time in UTC when the reminder was sent. |
send_reminder_at |
Date and time in UTC when the reminder is scheduled to send. |
followup_resolved_at |
Date and time in UTC when the follow-up was resolved. |
resubscribe_requested_at |
Date and time in UTC when resubscribe was requested. |
provider_thread_id |
Provider thread ID for threading analysis. |
random |
Random value useful for Snowflake sampling. |
contact_id |
Apollo contact ID associated with the email message. Join to contacts._id to identify the contact. |
user_id |
Apollo user ID associated with the email message. Join to users._id to identify the user. |
team_id |
Apollo team ID associated with the email message. |
account_id |
Apollo account ID associated with the email message. Join to accounts._id to identify the account. |
emailer_campaign_id |
Apollo sequence ID associated with the email message. Join to sequences._id to identify the sequence. |
emailer_touch_id |
Apollo sequence touch ID associated with the email message. Join to sequence_touches._id. |
outreach_task_id |
Apollo task ID associated with the email message. Join to tasks._id. |
created_at |
Date and time in UTC when the email message was created in Apollo. |
updated_at |
Date and time in UTC when the email message was last updated in Apollo. |
ID mapping
The id_mapping table maps Apollo record IDs to CRM record IDs for cross-system reporting. This table may be blank if you don't have a CRM integration connected to Apollo.
| ID mapping | |
|---|---|
| Column | Description |
apollo_id |
Apollo record ID. |
object_type |
Object type for the mapped record, such as contact, account, or opportunity. |
salesforce_id |
Salesforce record ID associated with the Apollo record. |
salesforce_type |
Salesforce object type associated with the mapped record, such as Contact, Lead, Account, or Opportunity. |
team_id |
Apollo team ID associated with the mapping. |
created_at |
Date and time in UTC when the mapping was created. |
Job change events
The job_change_events table contains detected job changes for contacts.
| Job change events | |
|---|---|
| Column | Description |
_id |
Apollo job change event ID. |
contact_id |
Apollo contact ID associated with the job change. Join to contacts._id to identify the contact. |
old_title |
Previous job title for the contact. |
new_title |
New job title for the contact. |
new_organization_name |
New organization name for the contact. |
created_at |
Date and time in UTC when Apollo detected the job change. |
team_id |
Apollo team ID associated with the job change event. |
Labels
The labels table contains label definitions available in Apollo.
Meeting identified events
The meeting_identified_events table links meetings to prospecting activities for attribution reporting.
| Meeting identified events | |
|---|---|
| Column | Description |
_id |
Apollo meeting identified event ID. |
last_phone_call_id |
Most recent phone call ID associated with the meeting. Join to phone_calls._id to identify the phone call. |
contact_ids |
Array of Apollo contact IDs associated with the meeting identified event. Join to contacts._id to identify the contacts. |
team_id |
Apollo team ID associated with the meeting identified event. |
created_at |
Date and time in UTC when the meeting identified event was created. |
Meetings
The meetings table contains meeting activity and booking information.
| Meetings | |
|---|---|
| Column | Description |
_id |
Apollo meeting ID. |
status |
Meeting status, such as confirmed, tentative, or cancelled. |
start_time |
Date and time in UTC when the meeting starts. |
end_time |
Date and time in UTC when the meeting ends. |
external_created_at |
Date and time in UTC when the meeting was created in the user's calendar. |
cancelled_or_rescheduled_at |
Date and time in UTC when the meeting was cancelled or rescheduled. |
is_created_by_apollo |
Indicates whether the meeting was booked through Apollo rather than synced from a user's calendar. |
recurrence |
Indicates whether the meeting is a master recurring event. |
sync_match_type |
Sync match type for the meeting. |
salesforce_ids |
Array of Salesforce IDs associated with the meeting. |
in_response_to_emailer_message_id |
Email message ID that the meeting was booked in response to. Join to email_messages._id to identify the email message. |
in_response_to_phone_call_id |
Phone call ID that the meeting was booked in response to. Join to phone_calls._id to identify the phone call. |
emailer_campaign_id |
Apollo sequence ID associated with the meeting. Join to sequences._id. |
account_id |
Apollo account ID associated with the meeting. Join to accounts._id to identify the account. |
contact_id |
Apollo contact ID associated with the meeting. Join to contacts._id to identify the contact. |
user_id |
Apollo user ID associated with the meeting. Join to users._id to identify the user. |
team_id |
Apollo team ID associated with the meeting. |
created_at |
Date and time in UTC when the meeting was created in Apollo. |
updated_at |
Date and time in UTC when the meeting was last updated in Apollo. |
Opportunities
The opportunities table contains Apollo deal records and key deal attributes.
| Opportunities | |
|---|---|
| Column | Description |
_id |
Apollo opportunity ID, referring to deals on Apollo. |
amount |
Deal amount. |
is_closed |
Indicates whether the deal is closed. |
is_won |
Indicates whether the deal was won. |
name |
Deal name. |
external_created_at |
Date and time in UTC when the deal was created. |
external_id |
External CRM opportunity ID, prioritized from Salesforce ID or the first CRM opportunity ID available. |
external_id_name |
External CRM ID field name, such as salesforce_opportunity_id or source opportunity ID. |
account_id |
Apollo account ID associated with the deal. Join to accounts._id to identify the account. |
owner_id |
Apollo user ID for the deal owner. Join to users._id to identify the user. |
opportunity_stage_id |
Apollo deal stage ID. Join to opportunity_stages._id to identify the opportunity stage. |
opportunity_pipeline_id |
Apollo deal pipeline ID. Join to opportunity_pipelines._id to identify the deal pipeline. |
deal_probability |
Close-won probability. |
closed_date |
Date when the deal was closed. |
stage_updated_at |
Date and time in UTC when the deal stage was last updated. |
currency_code |
Currency code for the deal amount. |
created_by_id |
Apollo user ID for the user who created the deal. Join to users._id. |
team_id |
Apollo team ID associated with the deal. |
created_at |
Date and time in UTC when the deal was created in Apollo. |
updated_at |
Date and time in UTC when the deal was last updated in Apollo. |
Opportunity pipelines
The opportunity_pipelines table contains deal pipeline definitions.
| Opportunity pipelines | |
|---|---|
| Column | Description |
_id |
Apollo deal pipeline ID. |
name |
Name of the deal pipeline. |
team_id |
Apollo team ID associated with the deal pipeline. |
Opportunity stages
The opportunity_stages table contains deal stage definitions.
| Opportunity stages | |
|---|---|
| Column | Description |
_id |
Apollo deal stage ID. |
name |
Stage display name. |
opportunity_pipeline_id |
Apollo deal pipeline ID associated with the stage. Join to opportunity_pipelines._id to identify the deal pipeline. |
team_id |
Apollo team ID associated with the deal stage. |
Phone call outcomes
The phone_call_outcomes table contains call outcomes used in Apollo with the dialer.
| Phone call outcomes | |
|---|---|
| Column | Description |
_id |
Apollo phone call outcome ID, referring to call dispositions. |
name |
Name of the call disposition. |
sentiment |
Sentiment of the call disposition, such as positive, neutral, or negative. |
team_id |
Apollo team ID associated with the phone call outcome. |
Phone calls
The phone_calls table contains dialer and call activity data.
| Phone calls | |
|---|---|
| Column | Description |
_id |
Apollo phone call ID. |
inbound |
Indicates whether the call was inbound. |
answered |
Indicates whether the call was answered. |
answered_by |
Entity that answered the call, when available. |
duration |
Call duration in seconds. |
status |
Call status. |
start_time |
Date and time in UTC when the call started. |
end_time |
Date and time in UTC when the call ended. |
from_number |
Phone number the call was placed from. |
to_number |
Phone number the call was placed to. |
from_country |
Country associated with the phone number the call was placed from. |
to_country |
Country associated with the phone number the call was placed to. |
voicemail_dropped |
Indicates whether a voicemail was dropped during the call. |
voicemail_drop_method |
Method used to drop the voicemail. |
logged |
Indicates whether the call was logged. |
quality_rating_cd |
Call quality rating. |
quality_feedback_reasons |
Call quality feedback reasons. |
source_cd |
Source of the phone call. |
completed_day_cd |
Day when the call was completed. |
completed_time_of_day_cd |
Time of day when the call was completed. |
deleted |
Indicates whether the call was deleted. |
external_id |
External CRM call ID, prioritized from Salesforce ID or the first CRM call ID available. |
external_id_name |
External CRM ID field name, such as salesforce_phone_call_id or source phone call ID. |
contact_id |
Apollo contact ID associated with the call. Join to contacts._id to identify the contact. |
user_id |
Apollo user ID associated with the call. Join to users._id to identify the user. |
team_id |
Apollo team ID associated with the call. |
account_id |
Apollo account ID associated with the call. Join to accounts._id to identify the account. |
outreach_task_id |
Apollo task ID associated with the call. Join to tasks._id. |
opportunity_id |
Apollo opportunity ID associated with the call. Join to opportunities._id to identify the deal. |
emailer_campaign_id |
Apollo sequence ID associated with the call. Join to sequences._id. |
emailer_step_id |
Apollo sequence step ID associated with the call. Join to sequence_steps._id. |
phone_call_outcome_id |
Apollo phone call outcome ID, referring to call disposition. Join to phone_call_outcomes._id to identify the disposition. |
created_at |
Date and time in UTC when the phone call was created in Apollo. |
updated_at |
Date and time in UTC when the phone call was last updated in Apollo. |
Sequence steps
The sequence_steps table contains individual steps within Apollo sequences.
| Sequence steps | |
|---|---|
| Column | Description |
_id |
Apollo sequence step ID. |
position |
Step order within the sequence. |
wait_time |
Wait time configured for the sequence step. |
wait_mode |
Wait mode configured for the sequence step. |
exact_datetime |
Exact date and time for the sequence step, when configured. |
auto_skip_in_x_days |
Number of days before Apollo automatically skips the step, when configured. |
max_emails_per_day |
Maximum number of emails allowed per day for the sequence step. |
type_cd |
Sequence step type. |
priority_cd |
Priority configured for the sequence step. |
stats_unique_scheduled |
Number of contacts currently scheduled at this step. |
stats_unique_completed |
Number of contacts who completed this step. |
stats_unique_skipped |
Number of contacts who skipped this step. |
emailer_campaign_id |
Apollo sequence ID. Join to sequences._id to identify the sequence. |
team_id |
Apollo team ID associated with the sequence step. |
created_at |
Date and time in UTC when the sequence step was created in Apollo. |
updated_at |
Date and time in UTC when the sequence step was last updated in Apollo. |
Sequence templates
The sequence_templates table contains email templates used in Apollo sequences.
| Sequence templates | |
|---|---|
| Column | Description |
_id |
Apollo sequence template ID. |
name |
Name of the sequence template. |
subject |
Subject line for the sequence template. |
archived |
Indicates whether the sequence template is archived. |
global |
Indicates whether the sequence template is global. |
creation_type_cd |
Creation type for the sequence template. |
has_ai_variables |
Indicates whether the sequence template includes AI variables. |
last_used_or_created_at |
Date and time in UTC when the sequence template was last used or created. |
user_id |
Apollo user ID associated with the sequence template. Join to users._id to identify the user. |
team_id |
Apollo team ID associated with the sequence template. |
created_at |
Date and time in UTC when the sequence template was created in Apollo. |
updated_at |
Date and time in UTC when the sequence template was last updated in Apollo. |
Sequence touches
The sequence_touches table contains records of sequence touch activity across contacts in a sequence.
| Sequence touches | |
|---|---|
| Column | Description |
_id |
Apollo sequence touch ID. |
type_cd |
Type of sequence touch. |
status_cd |
Status of the sequence touch. |
has_personalized_opener |
Indicates whether the sequence touch includes a personalized opener. |
edited |
Indicates whether the sequence touch was edited. |
template_type_cd |
Template type used for the sequence touch. |
stats_scheduled |
Number of sequence touches scheduled. |
stats_processed |
Number of sequence touches processed. |
stats_delivered |
Number of sequence touches delivered. |
stats_delivered_open_tracked |
Number of delivered sequence touches with open tracking enabled. |
stats_delivered_click_tracked |
Number of delivered sequence touches with click tracking enabled. |
stats_opened |
Number of sequence touches opened, excluding likely bot opens. |
stats_opened_unfiltered |
Number of sequence touches opened, including likely bot opens. |
stats_clicked |
Number of sequence touches clicked, excluding likely bot clicks. |
stats_clicked_unfiltered |
Number of sequence touches clicked, including likely bot clicks. |
stats_replied |
Number of sequence touches that received replies. |
stats_bounced |
Number of sequence touches that bounced. |
stats_hard_bounced |
Number of sequence touches that hard bounced. |
stats_spam_blocked |
Number of sequence touches blocked as spam. |
stats_demoed |
Number of sequence touches associated with demos. |
stats_unsubscribed |
Number of sequence touches that resulted in unsubscribes. |
emailer_template_id |
Apollo sequence template ID. Join to sequence_templates._id to identify the template. |
emailer_step_id |
Apollo sequence step ID. Join to sequence_steps._id to identify the step. |
team_id |
Apollo team ID associated with the touch. |
created_at |
Date and time in UTC when the sequence touch was created in Apollo. |
updated_at |
Date and time in UTC when the sequence touch was last updated in Apollo. |
Sequences
The sequences table contains Apollo sequence definitions and performance metrics.
| Sequences | |
|---|---|
| Column | Description |
_id |
Apollo sequence ID. |
name |
Name of the sequence. |
active |
Indicates whether the sequence is active. |
archived |
Indicates whether the sequence is archived. |
sequence_by_exact_daytime |
Indicates whether the sequence uses exact day and time scheduling. |
last_used_at |
Date and time in UTC when the sequence was last used. |
num_contacts |
Number of contacts in the sequence. |
num_contacts_email_status_extrapolated |
Extrapolated number of contacts by email status for the sequence. |
is_performing_poorly |
Indicates whether Apollo identifies the sequence as performing poorly. |
creation_type_cd |
Creation type for the sequence. |
permissions_cd |
Permission setting for the sequence. |
salesforce_id |
Salesforce ID associated with the sequence, when available. |
stats_unique_scheduled |
Number of unique contacts scheduled in the sequence. |
stats_unique_processed |
Number of unique contacts processed in the sequence. |
stats_unique_delivered |
Number of unique contacts with delivered sequence emails. |
stats_unique_delivered_open_tracked |
Number of unique contacts with delivered sequence emails that had open tracking enabled. |
stats_unique_delivered_click_tracked |
Number of unique contacts with delivered sequence emails that had click tracking enabled. |
stats_unique_opened |
Number of unique contacts who opened sequence emails, excluding likely bot opens. |
stats_unique_opened_unfiltered |
Number of unique contacts who opened sequence emails, including likely bot opens. |
stats_unique_clicked |
Number of unique contacts who clicked sequence emails, excluding likely bot clicks. |
stats_unique_clicked_unfiltered |
Number of unique contacts who clicked sequence emails, including likely bot clicks. |
stats_unique_replied |
Number of unique contacts who replied to sequence emails. |
stats_unique_bounced |
Number of unique contacts with bounced sequence emails. |
stats_unique_hard_bounced |
Number of unique contacts with hard bounced sequence emails. |
stats_unique_spam_blocked |
Number of unique contacts with sequence emails blocked as spam. |
stats_unique_demoed |
Number of unique contacts associated with demos from the sequence. |
stats_unique_unsubscribed |
Number of unique contacts who unsubscribed from the sequence. |
user_id |
Apollo user ID associated with the sequence. Join to users._id to identify the user. |
team_id |
Apollo team ID associated with the sequence. |
label_ids |
Array of Apollo label IDs associated with the sequence. Join to labels._id to identify labels. |
created_at |
Date and time in UTC when the sequence was created in Apollo. |
updated_at |
Date and time in UTC when the sequence was last updated in Apollo. |
Tables status
The tables_status table contains refresh and synchronization information for shared tables.
| Tables status | |
|---|---|
| Column | Description |
name |
Name of the shared table. |
synced_at |
Date and time in UTC when the table was last synced. |
status |
Current sync status for the table, such as in_progress, failed, sync_complete, or not_relevant. |
team_id |
Apollo team ID associated with the table sync status. |
Tasks
The tasks table contains task creation, completion, and due date information.
| Tasks | |
|---|---|
| Column | Description |
_id |
Apollo task ID. |
type_cd |
Task type, such as email, action_item, or linkedin. |
priority_cd |
Task priority. |
status_cd |
Task status, such as open, completed, or skipped. |
due_at |
Date and time in UTC when the task is due. |
completed_at |
Date and time in UTC when the task was completed. |
answered |
Indicates whether a call task was answered. |
auto_skip_at |
Date and time in UTC when Apollo automatically skips the task, when configured. |
comment |
Comment associated with the task. |
contact_timezone_offset |
Timezone offset associated with the contact for the task. |
created_from_cd |
Source that created the task. |
note |
Note associated with the task. |
playbook_autoprospecting_finished |
This is a deprecated field. |
random |
Random value useful for Snowflake sampling. |
contact_timezone |
Timezone associated with the contact for the task. |
associated_object_id |
Associated phone call or email message ID, based on type_cd. |
subject |
Subject associated with the task. |
title |
Task title. |
contact_id |
Apollo contact ID associated with the task. Join to contacts._id to identify the contact. |
account_id |
Apollo account ID associated with the task. Join to accounts._id to identify the account. |
user_id |
Apollo user ID associated with the task. Join to users._id to identify the user. |
team_id |
Apollo team ID associated with the task. |
emailer_campaign_id |
Apollo sequence ID associated with the task. Join to sequences._id. |
emailer_step_id |
Apollo sequence step ID associated with the task. Join to sequence_steps._id. |
opportunity_id |
Apollo opportunity ID associated with the task. Join to opportunities._id. |
creator_id |
Apollo user ID for the user who created the task. Join to users._id. |
created_at |
Date and time in UTC when the task was created in Apollo. |
updated_at |
Date and time in UTC when the task was last updated in Apollo. |
Users
The users table contains Apollo user information and is useful for resolving user IDs throughout the shared dataset.
| Users | |
|---|---|
| Column | Description |
_id |
Apollo user ID. |
first_name |
First name of the Apollo user. |
last_name |
Last name of the Apollo user. |
email |
Email address for the Apollo user. |
team_id |
Apollo team ID associated with the user. |
created_at |
Date and time in UTC when the user was created in Apollo. |
updated_at |
Date and time in UTC when the user was last updated in Apollo. |
Run Sample Queries
Looking for query inspiration? The following sample queries show a few ways you can start analyzing Apollo data in Snowflake. These are only examples — you can write your own queries, adjust filters and date ranges, join across Apollo tables, and connect Apollo activity to your existing Snowflake data for custom reporting.
Before running these queries, update any date ranges or filters to match your goal.
| Sample Queries | |
|---|---|
| Query | Use Case |
| Review sequence performance | Compare sequence delivery, opens, clicks, replies, bounces, and unsubscribes. |
| Check contact status by sequence | Review whether contacts are active, paused, finished, or failed in each sequence. |
| Measure email engagement | Count opens, clicks, replies, bounces, and unsubscribes while filtering likely bot activity. |
| Measure task completion | Track completed tasks and on-time completion by user. |
| Review call outcomes | Summarize calls by outcome and sentiment. |
| Track meetings created from outreach | Count meetings booked from email and phone call activity. |
| Review conversation activity | Report on conversation volume, duration, processing status, and recording details. |
Review sequence performance
Use the sequences table to compare sequence performance across delivered emails, opens, clicks, replies, bounces, and unsubscribes.
SELECT
_id AS sequence_id,
name,
stats_unique_delivered,
stats_unique_opened,
stats_unique_clicked,
stats_unique_replied,
stats_unique_bounced,
stats_unique_unsubscribed,
ROUND(stats_unique_replied / NULLIF(stats_unique_delivered, 0) * 100, 2) AS reply_rate
FROM sequences
ORDER BY stats_unique_delivered DESC;
Check contact status by sequence
Use contact_campaign_statuses to understand how many contacts are active, paused, finished, or failed in each sequence.
SELECT
emailer_campaign_id,
status,
failure_reason,
COUNT(*) AS contacts
FROM contact_campaign_statuses
GROUP BY
emailer_campaign_id,
status,
failure_reason
ORDER BY contacts DESC;
Measure email engagement
Use email_message_events to count opens, clicks, replies, bounces, and unsubscribes. For open and click reporting, filter out likely bot activity with self_caused = FALSE.
SELECT
type_cd,
COUNT(*) AS events
FROM email_message_events
WHERE actual_created_at >= DATEADD(day, -30, CURRENT_DATE())
AND (
type_cd NOT IN ('open', 'click')
OR self_caused = FALSE
)
GROUP BY type_cd
ORDER BY events DESC;
Measure task completion
Use tasks to track completed tasks and on-time completion.
SELECT
user_id,
COUNT(*) AS completed_tasks,
COUNT_IF(completed_at <= due_at) AS completed_on_time
FROM tasks
WHERE status_cd = 'completed'
AND completed_at IS NOT NULL
AND due_at IS NOT NULL
GROUP BY user_id
ORDER BY completed_tasks DESC;
Review call outcomes
Use phone_calls and phone_call_outcomes to summarize call results by outcome and sentiment.
SELECT
pco.name AS outcome,
pco.sentiment,
COUNT(*) AS calls
FROM phone_calls pc
LEFT JOIN phone_call_outcomes pco
ON pc.phone_call_outcome_id = pco._id
WHERE start_time >= DATEADD(day, -30, CURRENT_DATE())
GROUP BY
pco.name,
pco.sentiment
ORDER BY calls DESC;
Track meetings created from outreach
Use meetings to count meetings booked from emails and phone calls.
SELECT
COUNT(*) AS total_meetings,
COUNT_IF(in_response_to_emailer_message_id IS NOT NULL) AS meetings_from_email,
COUNT_IF(in_response_to_phone_call_id IS NOT NULL) AS meetings_from_call
FROM meetings
WHERE created_at >= DATEADD(day, -30, CURRENT_DATE());
Review conversation activity
Use conversations to report on conversation volume, duration, processing status, and recording details by user.
SELECT
user_id,
COUNT(*) AS conversations,
ROUND(AVG(duration), 2) AS avg_duration_seconds,
ROUND(AVG(longest_customer_monologue_duration), 2) AS avg_longest_customer_monologue_duration,
COUNT_IF(state = 'insights_generated') AS conversations_with_insights,
COUNT_IF(is_private = TRUE) AS private_conversations,
COUNT_IF(failure_code IS NOT NULL) AS failed_conversations
FROM conversations
WHERE start_time >= DATEADD(day, -30, CURRENT_DATE())
GROUP BY user_id
ORDER BY conversations DESC;
Next Steps
Want better context for the data Apollo shares with Snowflake? Start with the core Apollo concepts behind the tables.
| Sequences Overview | Get grounded in sequences to understand how emails, calls, tasks, steps, and contact statuses connect across Snowflake tables. |
|---|---|
| Dialer Overview | Planning call reports? Explore Apollo's dialer to understand phone call activity, outcomes, voicemail drops, and call data before analyzing it in Snowflake. |
| Email Tracking Overview | Review email tracking fundamentals to understand opens, clicks, replies, bot filtering, and engagement signals before analyzing email events at scale. |
| Coach Teams with Conversations | If conversations data is part of your reporting, coach teams with conversations to connect call recordings, scorecards, and coaching metrics to rep performance. |
| Salesforce Integration Overview | Need CRM context for your warehouse reports? Connect Salesforce to Apollo to sync prospecting data, align field mapping, and make cross-system reporting more reliable. |