Overview & Considerations
Each Inflection object has specific schema requirements for the source data warehouse table, so be sure to read these requirements carefully before connecting. The sources for these objects can be either views or tables in the data warehouse. For the purposes of this document we will refer to the source entities generally as “tables,” although views are equally supported and have the same schema requirements as tables. There is no limit to the number of data warehouse connections. With the exception of Product Activity, each Inflection object can only be connected to one data warehouse table, but each Inflection object can be connected to other sources like Salesforce and Segment, in addition to one data warehouse table. For example, the Inflection Contact can be connected to a Redshift table, Segment, and Salesforce, while the Inflection Org is connected to Snowflake or a second Redshift instance. Product Activity is synced from a single table or view. If your events live in one table per event, point Inflection at a view that unions them. Fields mapped from a data warehouse to Inflection are connected in one direction only: Inflection will read the field from the data warehouse and write it to the mapped Inflection field, but any updates to this field in Inflection will not be written back to the data warehouse. For this reason, we advise treating these fields as data warehouse only fields in Inflection and not updating them from other sources (like Salesforce, forms, etc.). Inflection supports both 1:many and many:many relationships between Contacts and Organizations. Use many:many if a single email address can belong to many different organizations within your product. If an email address can only belong to one organization in your product, then use 1:many. Contact Inflection support (support@inflection.io) for help setting up this mapping.What Data to Send to Inflection
Unlike many other services, Inflection is built to handle massive scale when connecting data sources. We recommend syncing all product users (people using your product) and org data to Inflection. As for Product Activity, we recommend syncing all the product activity data that might someday be used by the marketing, growth, sales, and success teams. Some events, like debugging, logging, or internal engineering events need not be synced and will only clutter the Inflection instance for the GTM teams using Inflection. When in doubt, we recommend syncing more data so the Inflection users can work autonomously and not have to request work from your data or engineering teams.Prerequisites
Before connecting your data warehouse, ensure you have:- Admin access to your Inflection account
- Access credentials for your data warehouse
- Source tables that meet the schema requirements outlined below
Configure Your Data Warehouse Connection
Inflection currently supports importing data from the following data warehouses:- Snowflake Setup and Configuration (using storage integration)
- BigQuery Setup and Configuration
- Databricks Setup and Configuration
- Redshift Setup and Configuration
Mapping Data Warehouse to Inflection Objects
The field requirements below follow the Inflection connection setup wizard, which checks each object’s key fields before the connection can be activated. Every object needs a last modified timestamp; Inflection uses it to sync only rows that changed since the previous run. If that column has no time zone, the wizard asks you which zone it is in.Contacts
Contacts in Inflection represent a person and are unique by email address. Any data warehouse table mapped to Contacts needs to also be unique by email address (no duplicate email addresses in the email column of the data warehouse table). Inflection supports multiple product users to have the same email address across multiple orgs with the Product User object. In addition to uniqueness by email, any data warehouse table that is connected to the Inflection Contact object must have the following schema restrictions:email_addressfield is unique & required. If theemail_addressis null or not a valid email address, Inflection will not sync that row.- must have a
unique id(primary key), non-null and unique per contact - must have a
last modified date(timestamp) - a
created dateis optional and can be mapped as a custom field


Product Activity
Product Activity in Inflection represents the stream of immutable events coming from your product. These Product Activity events are typically generated by a CDP like Segment or Rudderstack, or a product analytics platform like Amplitude, Pendo, or Heap. Inflection can consume this stream of events from the data warehouse using the Product Activity object. Data warehouse tables synced to the Inflection Product Activity object must follow the following schema:- must have a
primary key(id) that is unique per event and up to 100 characters. If your table has no unique event ID, Inflection can generate a composite key. event dateis a required non-nullable field (timestamp) representing when the event happened. It is also the incremental sync cursor.event nameis a required non-nullable field (string,char, orvarchar, up to 200 characters)product user idis a required non-nullable field. It must match theidof a row in the Product User table.

email, and event properties (JSON), for which you choose the source columns that are folded into it. Product Activity is read from one table or view as-is; joins and transforms are not available for this object, so do any reshaping in a view on your side.
Product Users
The Product User object in Inflection represents the person using your product. Every Product User has an associated Contact and optionally can have an Org and Product Activity associated with it. Any data warehouse table that is connected to the Inflection Product User object must have the following schema restrictions:email_addressfield is required & non-nullable- rows with a null or invalid
email_addressare skipped - must have a
unique id(primary key), non-null and unique per product user - must have an
org id: theidof the Org the user belongs to. The Inflection product has specific capabilities around Orgs, and this relationship enables them. - must have a
last modified date(timestamp) - a
created dateis optional and can be mapped as a custom field
First Name and Last Name field which will likely be mapped to the First Name and Last Name on the Inflection Contact object. Additionally, the product may collect a First Name and Last Name in product signup. There are a few options in this case:
- Map the
First NameandLast Namefrom the product sign up to the Product User as custom fields. Journeys, Tokens, personalization, etc. inside Inflection will have access toFirst NameandLast Namefields on both Contact and Product User (and these values can be different). - Map the
First NameandLast Namefrom both the CRM and the product to the same fields on Contact. In this case, the most recent update will “win.” Note that if there is also a bi-directional connection to the CRM setup for theFirst NameandLast Namefields, thenFirst NameandLast Nameupdates from the product (through the DW source table) could cause an update in the CRM First Name field. - Map the
First NameandLast Namefields to the Product User, and use operational campaigns to update theFirst NameandLast Nameon the Contact based on custom business logic.

Organizations
Organizations (or “Orgs”) represent the group of people in your product. Sometimes also referred to as “workspaces” and are distinctly different than Accounts. Data warehouse tables synced to the Inflection Org object must follow the following schema:- must have a
unique id(primary key), non-null and unique per organization - must have a
last modified date(timestamp) - a
created dateis optional and can be mapped as a custom field - strongly recommended to have a
name(string,char, orvarchar) for display in the Inflection UI. Without a name, the Inflection app will show theid

Person Organization Mappings
This mapping represents that a user belongs into an organization or workspace in your product. Mapping is used to represent a many to many relationship in your schema. Data warehouse tables synced to the Inflection Mapping object must follow the following schema:- must have a
unique id(primary key), non-null and unique per membership row - must have a
user idwhich matches a Product Userid - must have an
org idwhich matches an Organizationid - must have a
last modified date(timestamp) emailis optional

Accounts
Accounts represent the Account object in the CRM and are distinct from Orgs which represent the Org (or workspace) in the product. For example, your sales or sales ops teams likely decide what Contacts are connected to what Account in the CRM, but your customers can add whoever they want to the org in your product. So these objects are distinct in Inflection. Most Inflection customers sync Account data from the CRM and not from the data warehouse. Syncing Account data exclusively from data warehouse, or from both data warehouse and CRM is supported. The most common case for syncing Accounts from data warehouse is if you are using a CRM that Inflection does not have a direct API integration with. Contacts are linked to Accounts by matching one Contact field to one Account field (for example, email domain to account website). Inflection support configures this pairing for your instance. Data warehouse tables synced to the Inflection Account object must follow the following schema:- must have a
unique id(primary key), non-null and unique per account. If Salesforce is also connected, this must be the Salesforce Account Id. Inflection merges account records by ID, so a different ID creates a duplicate account. - must have a
last modified date(timestamp) - a
created dateis optional and can be mapped as a custom field - strongly recommended to have a
website (or domain)(string,char, orvarchar) for Contact to Account mapping - strongly recommended to have a
name(string,char, orvarchar) for display in the Inflection UI. Without a name, the Inflection app will show theid