Pull values from a second feed — stock levels, supplier prices, or extra attributes — into your catalog with a lookup. Add the second feed as an Auxiliary feed on the Data sources tab, then, in a field's value editor, add a lookup that matches a value in your feed to a column in the other feed and returns another column.
What a lookup does#
A lookup joins two feeds on a shared value. You give it something your main feed already has — a barcode, a SKU, a brand and part number — and it finds the row in the other feed where that value matches, then hands back a column from that row. Use it to bring in data your main feed doesn't carry: real-time stock from a warehouse feed, cost or margin from a supplier feed, or richer attributes from a secondary export.
A lookup is a value, so it lives wherever you set a field — a row on the Mapping tab or a Set field action in a rule. See Mapping your feed fields and Fixing your feed data with rules.
Step 1: Add the second feed as an auxiliary feed#
Before you can look anything up, the other feed has to exist as a source on this catalog.
- Open the catalog and go to the Data sources tab.
- Click "+ Add auxiliary feed".
- Choose Feed URL… and paste the second feed's URL.
A Mapping table is another source you can add here — a small table you fill in yourself, useful for translating one set of values onto another. See Mapping tables. You can also add a Google Sheet as an auxiliary feed by publishing it to the web — see Connecting a Google Sheet — or upload a file directly if you have an export rather than a URL, see Uploading a feed file.
Once the feed is added, its card carries a download button that fetches the feed the way an import does and saves it as a file — useful for checking which columns the other feed actually carries before you match against it.
Step 2: Add the lookup to a field's value#
Open the value editor for the field you want to fill — for example, a stock or availability field — and add a lookup. You'll see a dialog titled "Look up a value from another feed" (or "Look up from a mapping table" when the source is a mapping table).
The dialog has three parts: pick the source feed or table, tell it how to match, and choose which column to return.
Match pairs: how the two feeds line up#
A match pair says this value in my feed equals this column in the other feed. Your expression on the left, an auxiliary-feed column on the right, joined by equals.
One pair is enough when both feeds share a single reliable key like a barcode. Add another with + Match on another column when no single column is unique — for example, match on brand and MPN together. Multiple pairs are combined with AND, so a row in the other feed has to satisfy every pair to count as a match. This is why a clean barcode is the easiest thing to join on.
Choose how each pair is matched: Smart, Barcode, or Exact#
Each match pair has a matching mode that decides how forgiving the comparison is:
- Smart — the default. Lines values up despite everyday differences like casing and surrounding spaces. Use it unless you have a reason not to.
- Barcode — normalizes barcodes so a leading zero doesn't cause a miss. Reach for this whenever you're matching on GTIN, EAN, or UPC: one feed may store
012345678905and the other12345678905, and only Barcode mode treats those as the same code. - Exact — requires the two values be identical, character for character. Use it when a strict match is essential and you know both feeds format the value the same way.
Pick the column to return#
Finally, choose the Return column — the value the lookup hands back when it finds a match. That's what gets written into your field.
Check the match before you save#
As you build the lookup, a live "matches N / M sampled" chip shows how many of a sampled set of your products found a match in the other feed. It's the fastest confirmation that your match pairs and matching mode line up — if it reads a low number, your key columns probably don't line up, or you need Barcode mode instead of Smart.
There's no conflict setting — stack lookups instead#
A lookup has no "what if it doesn't match" picker. When there's no match, the lookup simply resolves to nothing, and the field falls through to its own fallbacks — the next thing in the value editor's fallback stack.
That's the mechanism you use to try more than one strategy. Say you want to match on GTIN first and fall back to brand + MPN when the GTIN is missing: build one lookup that matches on GTIN, then stack a second lookup as its fallback that matches on brand and MPN. Products with a good barcode resolve on the first lookup; the rest fall through to the second. You compose "try this, then that" by ordering lookups, not by configuring conflict behavior.
Auxiliary feeds refresh on every import#
Renable fetches your auxiliary feeds at import time, so the join always runs against the latest data from both feeds — stock and prices stay current without you doing anything.
One thing to remember: like every catalog edit, a new lookup lives in your draft and doesn't take effect until you Publish, and "Import now" uses your last published configuration. So after adding a lookup, publish before you expect to see its values. The draft-and-publish model is covered in Transforming your feed.
Or ask Aimée#
You don't have to wire this up by hand. Tell Aimée what you want — "pull stock levels from my supplier feed" or "match my products to the warehouse feed on GTIN" — and she can add the auxiliary feed, build the lookup, test that it matches before saving, and publish once you approve.
Where to go next#
- Mapping tables — build a small lookup table by hand to translate one set of values onto another.
- Mapping your feed fields — where field values, including lookups, are set.
- Fixing your feed data with rules — set a field from a lookup as a rule action.
- Transforming your feed — how the draft-and-publish model fits together.