After Hightouch runs identity resolution (IDR) on your graph, Hightouch outputs lookup tables into your warehouse. These tables live in the hightouch_planner schema (or the schema override for your source) and can be used across your downstream workflows.
While the hightouch_planner schema is generally managed internally by Hightouch, the IDR output tables described on this page are intentionally created for your use. You can safely query them directly, reference them in downstream ETL pipelines, or register them as dbt sources. For long-term stability, we recommend creating a view or derived table that references these outputs rather than transforming them in place.
Your marketing team can use these tables for paid campaigns, your sales team for deduplicating outreach efforts, or your data science team for fraud detection.
The output of IDR can also helpful in constructing models or parent models in Hightouch.
Hightouch creates the following output tables:
- A RESOLVED table (
<output_prefix>_resolved) that labels each row from your input tables with aHT_IDrepresenting a profile. This table tells you all the input rows associated with a profile by itsHT_ID. TheSOURCEis the slug of an input model. ThePRIMARY_KEYis the primary key value from the input model. TheLATEST_TIMESTAMPis the timestamp of the row from the input model.
| HT_ID | SOURCE | PRIMARY_KEY | LATEST_TIMESTAMP |
|---|---|---|---|
| ht1 | earl-s-ecommerce-events | 1 | 2024-08-01 12:00:00.000 |
| ht1 | earl-s-ecommerce-events | 2 | 2024-08-01 12:05:00.000 |
| ht1 | earl-s-ecommerce-events | 3 | 2024-08-01 12:10:00.000 |
| ht1 | earl-s-ecommerce-events | 4 | 2024-08-01 12:15:00.000 |
| ht5 | earl-s-ecommerce-events | 5 | 2024-08-01 12:20:00.000 |
| ht5 | earl-s-ecommerce-events | 6 | 2024-08-01 12:25:00.000 |
| ht5 | earl-s-ecommerce-events | 7 | 2024-08-01 12:30:00.000 |
| ht5 | earl-s-ecommerce-events | 8 | 2024-08-01 12:35:00.000 |
| ht9 | earl-s-ecommerce-events | 9 | 2024-08-01 12:40:00.000 |
| ht9 | earl-s-ecommerce-events | 10 | 2024-08-01 12:45:00.000 |
- A RESOLVED_IDENTIFIERS table (
<output_prefix>_resolved_identifiers) includes all the unique identifiers associated with each profile. Each row represents a unique identifiers associated with a profile.COUNTrepresents the number of times the identifier was seen in an input row, including updated rows if the same row gets seen multiple times due to updates.IDENTIFIERis the type of identifier.VALUEis the identifier value for the profile.
| HT_ID | IDENTIFIER | VALUE | INITIAL_ROW_PK | INITIAL_ROW_SOURCE | FIRST_TIMESTAMP | LAST_TIMESTAMP | COUNT |
|---|---|---|---|---|---|---|---|
| ht1 | user_id | user_003 | 4 | earl-s-ecommerce-events | 2024-08-01 12:15:00.000 | 2024-08-01 12:15:00.000 | 1 |
| ht1 | anonymous_id | anon_125 | 1 | earl-s-ecommerce-events | 2024-08-01 12:00:00.000 | 2024-08-01 12:15:00.000 | 4 |
| ht5 | user_id | user_004 | 8 | earl-s-ecommerce-events | 2024-08-01 12:35:00.000 | 2024-08-01 12:35:00.000 | 1 |
| ht5 | anonymous_id | anon_126 | 5 | earl-s-ecommerce-events | 2024-08-01 12:20:00.000 | 2024-08-01 12:35:00.000 | 4 |
| ht9 | anonymous_id | anon_127 | 9 | earl-s-ecommerce-events | 2024-08-01 12:40:00.000 | 2024-08-01 12:45:00.000 | 2 |
-
A UNRESOLVED table (
<output_prefix>_unresolved) lists all input rows Hightouch couldn't process because the primary key values weren't unique within the originating model. -
GOLDEN_RECORD table (
<output_prefix>_golden_records):
(Optional) Only appears if you enable Golden Record in your IDR project's settings. Golden Record flattens all possible values of each identifier into either:- A single "best" or "primary" value based on survivorship rules (most recent, most frequent, or source priority)
- An array of all unique values when using the array survivorship rule
See our Golden Record doc for more details about survivorship rules and array fields.
Each row corresponds to a single
HT_ID(one identity). For example, a row might look like:{ "ht_id": "ht1", "most_recent_email": "user@example.com", -- using most recent survivorship "all_phone_numbers": ["123-456-7890", "098-765-4321"], -- using array survivorship "primary_user_id": "user_123" -- using source priority survivorship }
State tables
Hightouch also uses the same hightouch_planner schema to manage state tables for each identity graph. These tables, typically prefixed with IDR_... or IDR_BACKUP_..., are used internally to support incremental runs and maintain graph consistency.
These internal tables are managed by Hightouch and shouldn’t be queried directly. Only the output tables (e.g., <output_prefix>_resolved, <output_prefix>_resolved_identifiers, <output_prefix>_golden_records, etc.) are intended for external use.