Freshpaint
HomeLogin
  • Documentation
    • What is Freshpaint?
    • ⚕️HIPAA Mode
    • 🏗️Building Out Your Account
    • 🌐Overview of Features
    • Guides
      • 📡Add Autotrack to your website to collect data from your users
        • Installing the Freshpaint Javascript SDK
        • Installing the Freshpaint SDK with a Content Security Policy (CSP)
        • Installing the Freshpaint Javascript SDK with Server-Side Rendering (SSR) + React
        • Autocapture + React
        • Configuring a Destination
        • Labeling User Actions
        • How do I install Freshpaint with Typescript?
      • 🔁Send historical data to any destination with Time Machine
      • Next.js Quickstart Guide
      • Android Quickstart Guide
        • Installing the Freshpaint Android SDK
        • Configuring a Destination
        • Instrumenting Your App
      • iOS Quickstart Guide
        • Installing the Freshpaint iOS SDK
        • Configuring a Destination
        • Instrumenting Your App
      • React Native Quickstart Guide
        • Installing the Freshpaint React Native SDK
        • Configuring a Destination
        • Labeling User Actions
        • Configuring Property Capture
    • Setting up Properties
    • Setting up Your Destinations
      • Enabling and Disabling a Destination
      • Deleting a Destination
    • Setting up Your Events
    • User Identification
      • Designated Identify Properties
    • Maps
    • Analytics (Beta)
      • Web Analytics Dashboard
      • Campaigns
      • Service Lines
      • Data Glossary
    • Translations
    • Web Tracker Monitoring
      • Tracker Resolution Types
      • Historical Scans
  • Integrations
    • Destinations
      • Demand Side Platforms (DSPs)
        • Basis
          • Basis Quick Start Guide
          • Basis Reference
        • Google Campaign Manager 360
        • StackAdapt
          • StackAdapt Quick Start Guide
          • StackAdapt Reference
        • theTradeDesk
          • theTradeDesk Quick Start Guide
          • theTradeDesk Reference
          • theTradeDesk with CM360 Configuration Guide
        • Viant
          • Viant Quick Start Guide
          • Viant Reference
      • Direct Response Ads
        • Facebook Conversions API
          • Facebook Conversions API Quick Start Guide
          • Facebook Conversions API Reference
        • Google Ads Conversion API
          • Google Ads Conversion API Quick Start Guide
          • Google Ads Conversions API Reference
        • Google Ads
          • Google Ads Quick Start Guide
          • Google Ads Reference
        • LinkedIn Ads
          • LinkedIn Ads Quick Start Guide
          • LinkedIn Ads Reference
        • Microsoft Ads (formerly Bing Ads)
          • Microsoft Ads Quick Start Guide
          • Microsoft Ads Reference
          • Microsoft Ads Multi-Config Reference
        • Pinterest Ads (Beta)
          • Pinterest Ads Quick Start Guide
          • Pinterest Ads Reference
        • Pinterest Tag
        • Reddit Ads
          • Reddit Ads Quick Start Guide
          • Reddit Ads Reference
        • TikTok Ads
        • Twitter Ads
      • Data Activation
        • ActiveCampaign
          • ActiveCampaign Quick Start Guide
          • ActiveCampaign Reference
        • Amplitude
          • Amplitude Quick Start Guide
          • Amplitude Reference
        • Braze (formerly Appboy)
          • Braze Quick Start Guide
          • Braze Reference
        • Customer.io
          • Customer.io Quick Start Guide
          • Customer.io Reference
        • Freshsales
        • Google Analytics 4 Proxy
          • Google Analytics 4 Proxy Quick Start Guide
          • Google Analytics 4 Proxy Reference
          • Google Analytics 4 Proxy Advanced Tracking Configurations
        • Google Analytics 4 Server-Side
          • Google Analytics 4 Server-Side Quick Start Guide
          • Google Analytics 4 Server-Side Reference
        • Heap
        • Hotjar
        • HubSpot Cloud
        • HubSpot Web
        • impact.com
          • Impact.com Quick Start Guide
          • Impact.com Reference
        • Intercom
          • Intercom Quick Start Guide
          • Intercom Reference
        • Iterable
          • Iterable Quick Start Guide
          • Iterable Reference
        • June
        • Klaviyo
        • Mixpanel
          • Mixpanel Quick Start Guide
          • Mixpanel Reference
        • OneSignal
          • OneSignal Quick Start Guide
          • OneSignal Reference
        • Podscribe (Early Access)
        • Sendinblue
        • Sentry
        • Vero Cloud
        • Webengage
        • Webhooks
        • Woopra
        • Zendesk
      • Data Warehouses
        • Azure Warehouse Setup
        • BigQuery Warehouse Setup
        • Databricks Warehouse Setup
        • Postgres Warehouse Setup
        • Redshift Warehouse Setup
        • S3 Warehouse Setup
        • Snowflake Warehouse Setup
      • Consent Management
        • Osano
        • OneTrust
        • Custom Consent Manager
    • Sources
      • Web
        • Autotrack
        • Precision Tracking
      • CallRail
      • Invoca
      • Customer.io
      • Intercom
      • Mailchimp
      • React Native
      • SendGrid
      • Sendinblue
      • Server-Side
      • iOS
    • 🔷Google Tag Manager integration
      • Google Tag Manager migration
      • Quick Start Guide
    • 📺Freshpaint Video Platform
    • 🖼️Impression Pixel
  • Admin Panel
    • Event Library
      • Event Library Bulk Actions
      • Event Definition Filters
      • Event Tester
      • 🔁Time Machine
      • Visual Tagger
      • Advanced Options
        • Tag Manager
        • Disabling Target Text Capture
        • Cross Domain Tracking
    • Projects & Environments
    • Teams
      • Role-Based Access Control (RBAC)
    • Transformations
      • Standard Events
      • Modify Data
      • Modify User Data
      • SQL Transformations
    • 📈Destination Monitoring
    • 🔎Investigate: Testing and Debugging
      • Live View
      • Event Verification
  • Reference
    • Developer Docs
      • Freshpaint Web SDK Reference
      • Freshpaint Web SDK Options
      • Freshpaint React Native SDK Reference
      • Freshpaint iOS SDK Reference
      • Freshpaint Android SDK Reference
      • HTTP API
    • Frequently Asked Questions
      • How do I circumvent ad blockers?
      • Can Freshpaint track users across domains?
      • Can I install Freshpaint on a Chrome extension?
      • What properties are captured with my events?
      • How Do I Switchover From Segment?
      • How Do I Switch From Native Google Analytics to the Freshpaint Google Analytics Destination?
      • Where do I find my Environment ID?
      • Is Freshpaint GDPR & CCPA Compliant?
      • Can I use transformations to anonymize data for client-side destinations?
      • How do I QA or debug my data?
      • Why Do My Numbers Differ Across Different Tools?
      • Billing: How Does Freshpaint Determine MTUs?
      • Can I Use Freshpaint on Multiple Sites?
      • How Can I Export Data From Freshpaint?
      • How Does Freshpaint Identify Users?
      • How Many Events Should I Create?
      • What Should I Name My Events?
      • How do I track scroll depth?
      • What Data Does Freshpaint Collect?
        • Data Collected on Web
        • Data Collected on React Native
      • Does Freshpaint's Autotrack slow my site down?
      • Running Freshpaint with a Proxy
      • Should my Environment ID be treated as a sensitive key?
      • How Does Freshpaint Determine Session Count?
      • What is the difference between client-side and server-side connection mode?
      • What is a Proxy Integration?
      • Where can I view Freshpaint’s Status?
      • Does Freshpaint provide HIPAA audit logs?
      • Freshpaint Cookie Too Large
      • How does Freshpaint compare to server-side Google Tag Manager?
      • If a user re-installs my app, will Freshpaint generate a new device ID?
      • Why doesn't Freshpaint need a BAA before sending data to Google Ads and Facebook Ads?
      • What Implementation Services Does Freshpaint Offer?
      • Single Sign On (SSO) Setup
Powered by GitBook
On this page
  • Event Name Conflicts
  • Updating Event Definitions
  • Schema
  • Event Tables
  • Columns
  • Event Table and Column Names
  • The Identifies Table
  • Supported Warehouses

Was this helpful?

  1. Integrations
  2. Destinations

Data Warehouses

Warehouse destinations are the main way of getting direct access to the underlying Freshpaint data. Once you've set up a data warehouse, you can run SQL over the raw Freshpaint data. identify calls will go to the new warehouse automatically. To send events, you'll need to opt-in each event you want to send to the new warehouse destination.

Once configured, Freshpaint will sync data to your data warehouse every six hours.

If you are interested in setting up warehouses, email support@freshpaint.io and we will walk you through the steps to configure a warehouse destination.

Currently you can set up one type of warehouse per Freshpaint environment. If you would like multiple of the same type of warehouse connected to the same Freshpaint environment, let us know at support@freshpaint.io.

Event Name Conflicts

If two event/table or event property/column names normalize to the same value, only one of these will be synced in order to avoid syncing duplicate data. Make sure you name properties and events differently enough that they will not normalize to the same value.

Updating Event Definitions

When changing the name of an event definition, Freshpaint will not rename the table in the warehouse. It is recommended you create a new event definition and sync it to the warehouse instead of updating an old one.

When updating an event definition synced to a warehouse, Freshpaint will not delete the old data out of the warehouse. It is recommended you either delete the old data out of the warehouse before updating the event definition or create a new event definition instead of updating an old one.

Schema

Event Tables

For every event you send to a warehouse, Freshpaint will create a corresponding table. For example, if you send an event, View Homepage to your warehouse, Freshpaint will create a table, view_homepage, and load all the View Homepage events into it.

Columns

Event tables have a column for each custom property you send in your events. When a new custom property is added to an event, a new column will be added to the table for that property.

All event tables also have the following additional columns:

Column
Description

event_name

The name of the event definition matched by the event.

time

The Unix time in seconds the event occurred at.

pageview_id

The id of the pageview the event belongs to. All events performed in the same pageview will have the same pageview_id.

session_id

The id of the session the event belongs to. A session is a group of actions perform in the same time frame. A session ends after 30 minutes of inactivity. All events performed in the same session will have the same session_id.

browser

The name of the web browser.

browser_version

The version of the web browser.

consent

A boolean value indicating whether the user has consented to share data with advertising destinations.

device_id

A Freshpaint generated unique identifier for the device the event was sent from. This is sometimes referred to as the anonymous_id.

host

The domain of the page the event occurred on.

initial_referrer

The full URL of the page that first referred the user to your site.

initial_referring_domain

The domain of the page that first referred the user to your site.

initial_utm_campaign

The value of utm_campaign on the user's first visit.

initial_utm_content

The value of utm_content on the user's first visit.

initial_utm_medium

The value of utm_medium on the user's first visit.

initial_utm_source

The value of utm_source on the user's first visit.

initial_utm_term

The value of utm_term on the user's first visit.

operating_system

The name of the operating system the user was using.

path

The URL path of the page the event was performed on.

referrer

The URL of the page the user was on before the page they performed the event on.

referring_domain

The domain of the page the user was on before the page they perfomed the event on. It may be your own domain.

search_engine

The user's search engine.

screen_height

The height of the user's screen.

screen_width

The width of the user's screen.

url

The full URL of the page the event was performed on.

user_agent

The browser's user agent string containing the browser and operating system information.

user_id

The identity associated with the user through Identify.

utm_campaign

The most recent value of the utm_campaign UTM property.

utm_content

The most recent value of the utm_content UTM property.

utm_medium

The most recent value of the utm_medium UTM property.

utm_source

The most recent value of the utm_source UTM property.

utm_term

The most recent value of the utm_term UTM property.

Event Table and Column Names

Name normalization for event definitions and columns occur prior to syncing data with your warehouse destination.

Events are sent to the warehouse as tables and properties of events become columns of these tables in your destination. The following naming rules are applied to table and column names in the order in which they are listed:

  • Transliterate non-ASCII characters. Transliterations for the following character sets are supported:

    • Han

    • Katakana

    • Arabic

    • Cyrillic

  • Convert any character that is not a letter, digit, or underscore to underscore. A space is considered a character.

  • Divide alphanumeric strings containing letters and numbers into multiple words and numbers joined with underscores. A change from lower-case letter to an upper-case letter and alternation of numbers and letters are recognized as separators. However, two or more adjacent capital letters are considered a part of one word. For example, "anotherName" becomes "another_name", but "ANOTHERName" becomes "anothername". "MyName123" becomes "my_name_123".

  • Convert multiple underscores to a single underscore

  • Convert all upper-case letters to lower-case

  • Prepend names that start with a number with an underscore

  • For table names only, any underscore prefixes are removed if they are followed by a letter

If two event/table or event property/column names normalize to the same value, only one of these will be synced in order to avoid syncing duplicate data. Make sure you name properties and events differently enough that they will not normalize to the same value.

For example, if an event property is created with the name exampleProperty, and then later, it is changed to example_property, there are actually two properties for the event - an exampleProperty with a value and an example_property with a value. In this case, the event occurs after the schema change, exampleProperty will be null and example_property will have a value. However these property values will collide, and only one will sync. So it's possible that example_property in the destination will show as null for some events if the original exampleProperty is the property that is syncing.

A similar situation could occur if two events normalize to the same name. These names will collide, and only one event definition will sync to the destination.

See the table below to see examples of name conversions as a result of these rules being applied.

SOURCE NAME
NAME CONVERSION
NOTES

My_Name

my_name

My Name

my_name

MyName

my_name

mYName

m_yname

MyName123

my_name_123

My123name

my_123_name

My_Name!

my_name_

My_Name____c

my_name_c

1MyName

_1_my_name

!MyName

my_name

In table names

!MyName

_my_name

In column names

The Identifies Table

In addition to any event tables you create, Freshpaint will also create an identifies table with all the identify calls you made.

Column
Description

id

The identity assigned to the user for the given identify call.

anonymous_id

The ID of the device the identify call was performed on.

sent_at

The time the identify call was performed.

The table will also contain any user properties you send in your identify calls.

Supported Warehouses

Freshpaint supports sending data to the following warehouses:

  • Panoply

  • S3

PreviousZendeskNextAzure Warehouse Setup

Last updated 3 months ago

Was this helpful?

Azure
BigQuery
Postgres
Redshift
Snowflake