The catalog is what Personyze recommends from: every item a widget can show, with the title, price, image, link and stock it is shown with. The field names in it are the ones widgets, filters and targeting rules refer to. Products and articles work the same way; everything below applies to both.
Where: Settings → Recommendation setup → Product Catalog (or Article Catalog). A recommendation campaign’s Catalog step shows the same screen.
What the screen tells you
The screen answers “is my data in?” by looking, not by importing again. Top to bottom:

| Row | What it tells you |
|---|---|
| Your catalog | How many products there are (click the number to see them), Last successful sync and Last checked. Import products is the main button; Data settings holds field management and the extra tools. |
| Feeds keeping it in sync | The feeds that refresh the catalog, with one status — Healthy, Waiting for first run, Awaiting mapping, Failing or Not running — and whether email alerts are on. Add a feed starts one. |
| Fields the engine uses | How much of the catalog carries each field: In stock, Image, Price, Product link, Category, On sale — with how many items miss it. A field every item needs is flagged below 90%. |
| On-site behaviour | The way to Product Tracking: views, cart adds and purchases. |
| Purchase history | Upload history — past orders, so the engine starts from what already sold together. |
| From your feed | How many categories and interests arrived with the feed, with View categories and View interests (Add interests when there are none). |
| Similar items (AI) | Item-to-item pairs by meaning, computed nightly while the feature is on (Data settings → Similar items (AI)). No pairs yet until the first pass. |
| Manual recommendation rules | View rules opens Manual cross-sell links, Manual up-sell links and System-generated cross-sell (seed data) — see Managed Cross-Sells & Up-Sells. |
Only the catalog itself is required. Everything under Optional, if you want to steer the engine can stay empty — the engine chooses on its own.
Ways to load it
| Route | When |
|---|---|
| URL feed | Your existing product feed — a Google Merchant feed works as it is. Personyze re-reads it on the schedule you set, so stock and prices stay current. The usual choice. |
| Upload a file | CSV, TSV or XLSX. Fine for a first setup or a catalog that rarely changes; upload again to update. |
| SFTP push | Your export job drops products.csv into your SFTP folder and it imports by itself. |
| JSON API | Push items from your backend: products / articles. Records with the same Internal ID are merged, so re-sending is safe. |
| Site crawl | Personyze visits your product pages and builds the catalog from the product data they publish for search engines (schema.org, Open Graph). Data settings → Crawl my site. |
Templates, the format rules, SFTP setup and the mapping step are on Uploading Feeds & Data Files. Shopify and WordPress / WooCommerce stores: see the Shopify and WordPress guides.
Which fields matter
| Field | Why |
|---|---|
| Internal ID | The key everything joins on: the id your tracking sends with views, cart adds and purchases must be this value. With no Internal ID mapped, Personyze derives one from the Product Page URL. |
| Title, Main Image URL, Product Page URL | What a card shows, and where its click goes. |
| Price, Sale Price | Prices and discount badges. A sale price equal to the price shows no discount. |
| Is in Stock | Out-of-stock items are not recommended — and neither is an item with no stock value at all. Use yes / no, true / false, 1 / 0, or “in stock” / “out of stock”. |
| Categories, Brand | Category logic, filters, and the category recommenders. Category values must match what your category tracking sends. |
| Anything else | Every other column can become a field — to print on a card, filter on, or target on. Data settings → Manage fields adds fields at any time. |
Bundle prices: the prices and total a Buy Together widget shows come from this catalog; a discount for buying items together has to be applied by your store.
Two keys, not one
A product can carry two keys — Internal ID and SKU — so on-site events tie back whichever identifier your site happens to send. A tracking push names the key it uses:
(self.personyze=self.personyze||[]).push(['Product Viewed', "PRODUCT_SKU", 'key', 'sku']);
Which column is your Internal ID?
Getting this wrong is the costliest mistake in a feed: the catalog fills, widgets render, and nothing matches what visitors actually viewed. So the mapping step answers it with evidence. Which column is your Internal ID? compares each column with the ids your site already sends and says what it measured — for example “matches 96% of the ids your site already sends” or “none of these values appear in what your site sends”. A label beside the answer says how sure it is:
| Label | Meaning |
|---|---|
| measured | Checked against real events from your site — the answer to trust. |
| from your site | It had no match to measure — no events yet, or none that fit — so it read one of your item pages and found the id published there. |
| best guess | No events and no page to read — a guess from the shape of the file, and it says so: “check it against what your site sends”. |
Check before you import
The last step, Ready to import, can run the import as a dry run that saves nothing: Quick check reads the first 500 rows, Check every row reads them all. It reports how many rows would be new, changed and unchanged, the Fields that would change, and up to five before-and-after examples. (The tracking and user-data import wizards call the same check Preview changes.)
Common pitfalls
- IDs don’t match interactions — the feed’s Internal ID must equal what your interaction tracking sends. SKU vs id is the classic mix-up; if your site sends SKUs, map the SKU column too.
- Relative image URLs — use absolute URLs so widgets can render them anywhere.
- Deleting sold-out items — keep them in the feed marked out of stock. They stop being recommended, and their history stays.
- A feed that silently stops — open the feed and switch on Email me if this feed stops syncing.
Related
- Uploading Feeds & Data Files — import mechanics, templates, SFTP.
- Product Interaction Tracking — the events the catalog is matched against.
- Uploading Past / Offline Transactions — purchase history.
- Managed Cross-Sells & Up-Sells — pairs you state yourself, and seed sets.
- Interests for Recommendations
- Recommendations — Start Here