Documentation Index
Fetch the complete documentation index at: https://docs.gocrisp.com/llms.txt
Use this file to discover all available pages before exploring further.
This article explains the two data feeds available in UNFI Insights, why their sales figures differ, and which table to use for each workflow.
Quick takeaway: Use portal tables for general sales reporting and dashboard validation. Use non-portal tables only for category-level workflows, such as Distribution Expansion and Category Performance.
The two UNFI data sources
UNFI provides Crisp with two separate data feeds. Each feed powers different tables in UNFI Insights, and the feeds are not interchangeable. Mixing them is the most common source of confusion when sending UNFI data to a destination.
| Portal tables | Non-portal / category tables |
|---|
| Example table | normalized_unfi_insights_natural_portal_fact_sales | normalized_unfi_insights_natural_fact_sales |
| Data source | UNFI Natural Supplier Portal — the same source UNFI Sales Relationship Managers reference | A secondary data feed sent directly from UNFI to Crisp |
| Best for | General sales dashboards and legacy UNFI sales reporting | Category-level data for Distribution Expansion and Category Performance dashboards only |
Which table should I use?
It depends on the use case:
- Recreating or validating Sales dashboards? Use the portal tables. These align with what customers have historically seen in UNFI reporting.
- Working with category-level data? Use the non-portal / category tables for Distribution Expansion or Category Performance reporting.
Most customers prefer the portal tables because they match legacy UNFI reporting.
Best practices when joining tables
The key rule is simple: portal fact tables must be joined to portal dimension tables, and non-portal fact tables must be joined to non-portal dimension tables. Normalized tables between the two data sets have differing IDs that are not designed to join.
Do not mix portal and non-portal tables. If you join normalized_unfi_insights_natural_portal_fact_sales to normalized_unfi_insights_natural_dim_product, you will encounter mismatches. Always make sure the fact and dimension tables come from the same feed.
Correct portal join example
| ✓ Use this | ✗ Not this |
|---|
normalized_unfi_insights_natural_portal_fact_sales | normalized_unfi_insights_natural_portal_fact_sales |
| joined to | joined to |
normalized_unfi_insights_natural_portal_dim_product | normalized_unfi_insights_natural_dim_product |
You may also see these called “P1” and “P2”
Some internal documentation and support conversations use P1 and P2 as shorthand for the two feeds.
| Term | Same as | Dashboards powered | Recommendation |
|---|
| P1 | Non-portal / category tables | Distribution Expansion, Category Performance, Spoilage Risk | Use for category-level analysis only |
| P2 | Portal tables | Sales dashboard and everything else | Use as the default for sales analysis |
Why P1 and P2 cannot be cross-joined: P1 and P2 have different sales dollar computations and different schemas. For example, P1 has product_code and product_case_quantity fields, while P2 uses a separate pack_size dimension with no product_code field. The two feeds were not built to reconcile with each other, so joining them produces mismatches in both sales figures and UPC data.
Quick reference
| I want to… | Use these tables | Notes |
|---|
| Validate or recreate Sales dashboards | Portal tables (P2) | Matches legacy UNFI reporting |
| Analyze Distribution Expansion or Category Performance | Non-portal tables (P1) | Used in category-level dashboards |
| Join fact tables to dimension tables | Match P1 ↔ P1 and P2 ↔ P2 | Never mix tables when joining |