Skip to main content

Hello Airtable Community,

I'm in the process of designing a custom estimating and service OS for my construction business and have run into a common but complex data architecture challenge. I'd love to get your expert opinion on the current best practice for solving it. Let me preface this post by stating that as someone who is new to Airtable, I used AI to help me craft a clear posting but this problem is real and something I have been struggling with for a few hours now.

 

The Goal:

I want to create a field in my Cost Catalog table that automatically and dynamically looks up the price for an item from its designated "Primary Vendor." This price needs to be used in our estimating templates.

My Table Setup:

I have three core tables involved:

  1. Cost Catalog: My master library of item definitions. Each record is a unique item (e.g., "350 Gallon TES Tank"). It has a linked record field called Primary Vendor which points to the Companies table.

  2. Companies: My master list of all vendors, suppliers, and clients.

  3. Vendor Pricing: A price list table. Each record links a Cost Catalog Item to a Vendor and contains a Net Price and a Status (e.g., "Active").

The Challenge:

In my Cost Catalog table, I want to create a field called Primary Vendor Price. This field needs to look through all the linked Vendor Pricing records for an item and return the Net Price only from the record that meets two conditions:

  1. The Vendor on the Vendor Pricing record must match the Primary Vendor on the Cost Catalog record.

  2. The Status on the Vendor Pricing record must be "Active."

I have tried using both a Lookup and a Rollup field with conditional filters. However, I've discovered that the conditional logic in these fields does not seem to support dynamically comparing a field from the linked table (e.g., Vendor Pricing.Vendor) against a field in the current table (e.g., Cost Catalog.Primary Vendor). The condition seems to only allow for static values.

The "Matching Key" Workaround:

I've researched this and found the classic expert workaround, which involves creating "helper" formula fields in both tables:

  • A Primary Vendor Key in Cost Catalog (e.g., CONCATENATE(RECORD_ID(), "-", {Primary Vendor}))

  • A Matching Key in Vendor Pricing (e.g., CONCATENATE({Cost Catalog Item}, "-", {Vendor}))

  • Then, using a Rollup with a condition that checks if these two keys are an exact match.

My Questions for the Experts:

  1. Is the "Matching Key" formula workaround still the definitive, best-practice solution for this kind of dynamic, conditional lookup in Airtable as of mid-2025?

  2. Has Airtable released a newer, more direct feature to handle this that I might be missing? I want to make sure I'm not building a complex workaround if a simpler native solution now exists.

  3. Bonus Question (Safety Net): My ideal outcome is a field that also acts as an error check. If, due to user error, there are two "Active" prices for the same primary vendor, I would prefer the field to return an #ERROR! or a jumbled text string (like from an ARRAYJOIN) rather than a silently incorrect SUM. Does the "Matching Key" + Rollup with ARRAYJOIN(values) remain the best way to achieve this safety net?

Thank you in advance for your time and expertise. I'm trying to build a robust and scalable foundation, and getting this part right is critical.

Hm, I think if I were you I’d create another linked field between Cost Catalog and Vendor Pricing called ‘Primary Vendor Price’ and populate that with the Vendor Pricing record of the Primary Vendor for that item, and would set up dynamic filtering for that field:

https://support.airtable.com/docs/dynamic-filtering-in-linked-record-fields

That way when I’m selecting the Vendor Pricing record, it’s only ever going to show me the records for this Item

---

In my head this basically replaces the link to the ‘Primary Vendor’ field, instead of selecting the Primary Vendor you just select the Vendor Pricing record immediately, and so the amount of work is the same, does that make sense?


Thank you Adam. The link you sent helped me figure out that Airtable has distinct limitations when it comes to dynamic filtering. I was getting tripped up with this limitation:


The left and right operands must be the same field type, as dynamic filters don't support comparing different types. For example, comparing text fields to linked records, number fields to the text fields, etc., isn't supported.

 

Now that I have that sorted, I was able to solve this issue.