Skip to content
- Follow-up suggestions written for each answer — Ask suggests up to three follow-up questions for each answer, based on what the answer showed and never repeating a question already asked in the chat. The suggestions return when you reopen the chat.
- Equivalents tab shows matches waiting for review — A retailer with unreviewed suggested matches shows how many wait, like “3 to review”, with a Review button that opens the Matches tab and Add beside it. The header count separates “to review” from “no equivalent”.
- Same stores on every product’s Prices and Ranks tabs — The Prices and Ranks tabs list the same stores on every product, with your store first and every competitor after it in A–Z order. A store with no listing shows “Not listed”. In Ranks, a store with no price in the date range shows “No price”.
- More reliable match review and Match Queue — The review queue loads 250 pending matches at a time, keeps the header count current, and ends each batch with a “Load next batch” button. The Match Queue status filter has a Rejected option, and Match Stats shows a Rejected count.
- Market Benchmarks search matches name and brand — Market Benchmarks search matches product name and brand, as its placeholder says.
- Also fixed — The disabled STATUS, All Brands and All Categories dropdowns are removed from Market Benchmarks; the search box and review chips remain.
- Dynamic lists that follow rules — A list can follow rules on brand, category, attribute, availability, price, competitor prices, MAP violations, stock and first-seen date. You can pin or exclude individual products. Membership refreshes within a minute of a data change, and an open list page shows new members within about 1.5 minutes.
- Managing dynamic lists on the Lists pages — The Lists page has All, Dynamic and Fixed filters. A list page shows who is In list, Pinned and Excluded, and you can pin, unpin or exclude several products at once. Edit rules opens the rules on the page, and the list menu has Rename and Make fixed.
- Add products to a list from the Products filters — Save as list, next to Export CSV, turns the Products filters into a list’s rules and shows how many products qualify. Add products on a list opens the Products filters in a dialog, where you can select rows or every matching product.
- Describe a list’s products in words — The rule editor has a Describe the products field. After you stop typing, your words become list rules, each marked as from text. Words that are not understood are named.
- Alert rules can watch a dynamic list — An alert rule can use a dynamic list as its scope. The list picker shows a Dynamic badge and the list’s rule sentence. A product that joins the list is checked, and a product that leaves closes its open alert.
- AI Insights on every Competitors KPI card — Overall Price Index, Underpriced, Inline and Overpriced now each have an AI Insights button that opens AI Insights focused on that number, as Matched Products does.
- Retailers page measures MAP compliance against MAP prices — On the brand Retailers page, the Above MAP, At MAP and Below MAP cards, the MAP Distribution column and the MAP Severity filter now classify each listing against its MAP price. With no MAP prices set, the page links to MAP Configuration.
- Match Stats shows Exact Matches — Match Stats has an Exact Matches card with a line splitting the matches into automatic and manual.
- Brand dashboard shows the real refresh time — “Last refreshed” on the brand dashboard shows when the data was last updated. A workspace with no imported data shows “No data imported yet”.
- Price Position headline counts comparable products — The Price Position headline reads “Cheapest or tied on N of M matched products” and counts only products with a competitor price. Its link opens exactly those products on the Prices page.
- Chat actions show who did them — MAP notices, case status changes and notes made from chat show your name in the case timeline. Match approvals and rejections from chat record your email, as on the Matches page.
- Also fixed — Remove from List is available when you open the products palette right after selecting products. A rule value that contains asterisks or backslashes shows as one bold value on a dynamic list. A dynamic list rejects your own retailer in the competitor out of stock and price position rules. A product first seen exactly 24 hours ago qualifies for a first-seen rule, whatever the time zone. The search menus in workspace settings are as wide as their fields.
- API keys work with workspace endpoints — API keys can now call the products, alerts, lists, dashboard and map endpoints. Send the workspace’s ID in the X-Tenant-ID header with the key. A key reaches only workspaces in its own organization.
- Match traces stay visible across workspaces — A match’s trace stays visible on the Matches page and in chat when another workspace rematches the same listing. Approving or rejecting a trace affects only your own workspace’s queue.
- Also fixed — When an organization’s only admin tries to leave, the error tells them to contact import.io support to make another member an admin, stays on screen, and has a Contact support button that opens an email to support.
- Onboarding continues after an interruption — If a deploy or restart interrupts your onboarding, it now continues from the next unfinished step with the same generated catalog. The progress screen keeps checking through the restart and refreshes every 5 seconds.
- Compare your prices against every competitor in chat — On the retailer side, ask “which products am I most expensive on across all competitors?” or “how many products am I 10-30% above market on?”. You get each competitor’s price, your gap to each and the market average. Filter by price position, competitor, brand, category or search, and ask for a table.
- List and count products by MAP status in chat — On the brand side, ask “which products have no MAP policy?” to get a count for each status (Below, At, Above, No MAP policy) and the matching products, filterable by retailer, brand or category. The Brand Prices MAP status filter also has a No MAP policy option.
- Chat explains matches before you approve or reject them — Ask “why was this matched?” or “what else could it be?” to see the method and evidence behind a match and the other products it was compared against. Chat also names the competitor products a match rule leaves out for lacking a required attribute.
- Faster, more reliable onboarding — Onboarding runs faster for categories with no match in the category taxonomy. A release in progress also leaves a running onboarding alone for up to 25 minutes, so it finishes.
- Consistent store list on Prices and Ranks tabs — A product’s Prices and Ranks tabs list the same stores on every product, with your store first and competitors in A–Z order. A store without a listing shows “Not listed”. In Ranks, a listed store with no price in the date range shows “No price”.
- Open tabs recover after a release — A tab left open across a release reloads once on its own and opens the page you chose.
- Chat works on iPhones and iPads with older iOS — Chat opens on iOS versions older than 16.4 and shows messages with their tables and links. If a message cannot render, only that message appears as plain text.
- Separate sidebars and clearer addresses for settings and Admin — Personal settings, Organization settings and Admin Panel each have their own sidebar, opened from the profile menu, with “Return to <workspace>” at the top. Workspace links include readable organization and workspace names. Create organizations from Your organizations in settings.
- Organization admins can set each workspace’s currency — Organization Settings → Workspaces shows Currency on each row, and workspace settings include a currency field. Choosing a location can fill an empty currency. Prices with no currency of their own use it. The Audit Log lists timezone, location and currency changes.
- One chat on every page, with a new landing — The chat panel and the Ask page share one chat, so live tables, charts and action cards appear in the panel on any page. An empty chat shows area chips with example questions and your recent chats. Ask in the sidebar opens the chat you have open.
- The assistant answers in words unless you ask to see something — “Which products dropped the most?” gets a sentence, and “show me the biggest drops as a table” gets the live movers table. Price comparisons, movers, price history and MAP violations appear as live tables when you ask to see them.
- Alert on a price decrease or a price increase — Price decrease and Price increase are separate triggers that fire when another retailer’s price moves by at least your threshold. The alert names the old price, new price and retailer. Optional filters has “Limit to specific retailers”. The whole-catalog scope is Assortment, with All products or My products.
- A clearer alert dialog — Trigger is the first line of every alert. Market alerts list each retailer’s price on the day last seen and the gap to your price, with your store marked You. Price decrease and increase alerts show each move with a direction arrow in a table. Ended alerts read in the past tense.
- Alert times follow your clock — First seen, last seen and Activity times in the alert list, on a product’s Alerts tab and in the alert dialog use your browser’s timezone, and the hover names it. Email and Slack use the workspace’s timezone and name it in the timestamp.
- The market picked during setup sets the demo workspace currency — Germany, France, Spain, Italy and the Netherlands use euros. The United Kingdom uses pounds, Sweden kronor, Japan yen, Australia Australian dollars and the United States US dollars. Demo Data Top-Up products keep that currency.
- Every page uses the category tree — Dashboard, Prices, Movers, New Products, Competitors and Retailers filter by category with the same searchable tree as Products. In a workspace without categories the filter is disabled and says why. Retailers shows active filters as removable pills.
- Price alert rules compare only the competitors you selected — Competitor cheaper, Overpriced and Margin opportunity rules compare only the competitors you selected, and the market figures on the alert use that same set. A Specific competitors choice with nobody selected does not fire.
- Sorting the alert list covers every page — Product, First seen and Last seen reorder the whole list, and the page is part of the link.
- A product’s Alerts tab lists every open alert — Alerts you have already read stay on the tab. An empty tab says “No open alerts for this product.”
- New alerts appear in the inbox without a reload — Focusing the window or returning to Alerts reloads the list with up-to-date counts.
- Resetting alert triggers does not re-send old alerts — Rebuilding alert triggers from Admin → Projections leaves existing alerts in place and sends no email, Slack or chat messages about earlier events. New events still fire as usual.
- Deleting the only Slack integration covers alert rules created in chat — The confirmation counts chat-created rules with the rules that name the integration. Deleting it turns Slack off on them, and they keep firing in the inbox and by email. Disabling leaves every rule unchanged.
- Movers search is accurate — A product name search matches every mover in the time window, and the count and page navigation follow those matches. The page shows the rows and count for the latest search you typed.
- A chat CSV export capped at 5,000 rows says so — The file has the first 5,000 matching rows, and the assistant points you to the Export button on the Products page for the complete file.
- The chat answers for the window you asked about and flags partial lists — The assistant reads time windows such as month, 30d and 7_days correctly, says when a window isn’t supported, and states the window on MAP violation answers. When it saw only part of a long list, it tells you the answer is partial.
- The chat counts the whole match review queue — “How many matches need review?” includes pending matches, and “approve the top match” picks one still waiting for a decision, in line with the Matches page.
- Links from the assistant keep the category filter — “View on Products”, “View full table” and pages the assistant opens filter by the category it used. If the category is not in the taxonomy, the link leaves it out and the assistant says so.
- Admins can change a listing’s price or availability from a product page — Saving from the right-click menu on the Prices tab works, and admin tools act on the workspace you picked or are viewing.
- Feature Set CSV upload rejects reserved attribute keys — Keys such as price, gtin or brand fail validation with a row error, as in the Attribution editor. Exported configuration files can be uploaded again.
- Generate mappings for one attribute covers every source value — Generating mappings for a single attribute keeps all observed source values for that attribute.
- List counts use the same band as the list table — A price within 1% of the competitor average counts as inline. The chat breakdown on a list matches the Competitive Position column.
- Dashboard Coverage shows your priced catalog with a competitor price — Coverage is the share of your priced catalog that has a competitor price. The figure is hidden when the workspace has no priced products.
- “Below Market” means your price is below the market everywhere — The dashboard card, the price widgets and the chat’s price rankings chart agree with the “Underpriced” status. New Products Pulse counts show real numbers, and the Competitor Intelligence filter reads “Competitor cheaper” and “Competitor pricier”.
- Underpriced and Overpriced agree across Competitors and the dashboard — The Competitors KPI cards, Competitive Price Index widget, dashboard details, AI Insights and the chat’s competitor scorecard report from your side with matching numbers. A Price Index below 100 means you are cheaper.
- Also fixed — Each trigger tile on Choose a trigger in the alert wizard shows an illustration above its title. Labels, dialogs, tooltips, messages and the admin console use “workspace”, and Organization Settings and Admin call the list Workspaces. When confirming a board save, MAP price change, retailer notice or match decision, the assistant asks you to review and confirm in the card. Sign-in and sign-up tell you to use the address that received the invitation email. The count matches the Lists page. Links from dashboards, competitor rows and product lists keep the active organization and workspace, and organization action buttons line up with their table rows.
- Scope an alert rule to a saved product list — Alert rule scope now offers List: pick a saved product list and the rule follows it as products are added or removed. Manage rules shows the list name, and a rule whose list was deleted stays visible as “{list} (deleted)” until you pick another list.
- Set a tenant’s timezone and location — Organization Settings → Tenants shows each tenant’s Location and Timezone, and Settings opens a dialog to change them. Alert first-seen, last-seen, and Activity times follow that timezone.
- Choose Exact or Exact + Equivalent matching for pricing alerts — Competitor-cheaper, overpriced, and margin-opportunity rules can match Exact only or Exact + Equivalent; retailer rules start on Exact only. A brand workspace stays on Exact matching against the nearest relevant retailer listing, and MAP violation rules always match exact listings.
- Creating an alert rule takes three steps — The wizard now asks what to watch for (Trigger), which products (Scope, now called Total assortment), then everything else on one Configure & name step, with an editable suggested name. Online retailers only and Custom rule are removed.
- Alerts and alert rules share one page — The Alerts page has Alerts and Manage rules tabs, a rule count badge, and one Create alert rule button for both. An empty list explains why (no rules, rules disabled, filters, or nothing fired in 7 days) with a next step, and a failed load offers Retry.
- Alert rules are shared across your workspace — Everyone in the workspace can see every alert rule, and anyone can subscribe to email delivery via its menu (Email me / Don’t email me) or by asking the assistant, without changing the rule. Manage rules shows an Email me column, and only the creator or an admin can edit or delete a rule.
- Alerts show how long an issue has been active — Each alert shows First seen and Last seen times (from when the price was observed), whether it’s still active, and days seen, so “last 24 hours” filters catch a MAP violation firing after weeks. Alerts also show an Activity feed of price changes, and MAP violations list every retailer below MAP, deepest first.
- Ask the assistant for a retailer scorecard — On the brand side, asking for a scorecard (e.g. “scorecard for Zalando”) renders a card with MAP compliance, products in violation, severe cases (30%+ below MAP) and their 7-day change, cases awaiting notice, and the retailer’s rank among violators. It links to its violations page and can be saved to a board.
- Set up and manage alert rules from chat — The assistant can create an alert rule with everything the page offers: scope it to a saved product list, add teammate emails or Slack delivery, and start monitoring from a chosen date. It can send a test notification, run a rule’s check now, and created rules deep-link to their settings.
- Export products from chat with the same options as the Products page — Ask the assistant for one row per product and retailer, for minimum, maximum, or average price rather than current price, for specific columns, or for just your selected rows on the Products page (“export my selection”). Each request lands as the same CSV download.
- Review product matches from chat — Ask the assistant to approve or reject a match; it shows an Approve card comparing the listing and suggested product, and applies your decision only on confirm. It can also show or change a category’s matching settings (confidence, price weight, out-of-stock handling), with prior values on hand to revert.
- Manage MAP from chat — On the brand side, ask the assistant to set, change, or remove a MAP price (Approve card), resolve or annotate a MAP-violation case (Undo chip on status change), or send a retailer the compliance notice, marking the case notified. MAP questions open a live, filterable violations view in the workspace.
- Catalog and price-ranking questions render as tables — Asking the assistant to list your highest- or lowest-priced products, or to see your catalog as a table, renders a sortable table (product, brand, your price, market low, market high) in the workspace, with a link back to a sorted Products page. This works for both retailer and brand workspaces.
- See and undo what the assistant changed — When the assistant creates or deletes a list or alert rule, or changes something like your Price Perception KVI selection, a card appears with what happened, an Open button, and an Undo chip. Asking it to open another page gives an “Open in Aperture” card you click when ready.
- A calmer layout for the Ask page — A switcher in the conversation column’s header opens the thread list (today’s brief under Today, recent topics under Recent, archived behind a toggle), with New topic, Rename, and Archive next to it. A drag handle between the conversation column and the workspace lets you resize the split, and it’s remembered.
- Boards replace the Insights dashboard — Boards replace the Insights dashboard. Add charts and views to a board, drag tiles to reorder, resize them (S, M, L, Full), or remove with Undo, and filter a board’s tiles by brand or category. An “Ask about this” button on each tile focuses the assistant on it, and old Insights tabs and widgets carried over.
- Products with the same title show their variant — Product tables, the product header, and the alert product picker show distinguishing finish and material details under the title, for example Tokyo Chair with Steel Foot / Brown Leather, and label the grouping under Brand as Collection.
- Expired invitations are visible — An invitation that expired within the last 30 days lists the organization, expiry date, and inviter so you can ask for a new one; it can’t be accepted or declined and doesn’t block workspace selection. The empty state clearly explains when no invitation exists for the signed-in email.
- Pick the time window for MAP violation KPIs — Every MAP violation figure on the brand dashboard is labelled with its time window, and a 7 / 30 / 90 days control in the MAP Violations card switches them all; the choice carries through to the MAP violations page, which also gains a 90 days filter option.
- MAP alerts and chat-created pricing rules use the right match mode — MAP violation alerts compare exact listings only, without folding in Equivalent Matches. Creating a pricing alert rule from chat for a workspace without a saved company type applies the same Exact + Equivalent default as the wizard.
- Competitor price changes fire pricing alerts right away — Competitor-cheaper, overpriced, and margin-opportunity rules fire on the price change that crosses the threshold. A rule scoped to a saved list also fires correctly, resolving the list’s canonical product to your own listing before comparing prices.
- Daily Brief and alerts land in the right place in the conversation — A Daily Brief or alert pushed into an open conversation appears in order as it arrives, with your later messages following it. A brief tied to one thread’s history doesn’t show up after you switch to another thread.
- Common Products keeps your Exact + Equivalent choice — Opening Common Products from Competitors or Retailers keeps Exact + Equivalent selected, and the retailer Common Products page has the same Exact / Exact + Equivalent control as the competitor page.
- Alert rule notification settings stay accurate when you edit — Editing an alert rule shows the current email recipients right away. Toggling yourself as an email recipient keeps the rule’s Slack integration and other notification settings intact, and chat’s undo for a newly created rule can’t remove a teammate’s rule.
- The alert rule wizard explains load and save failures — A failed save, a rule that fails to load, or a product or Slack list that fails to fetch shows what went wrong with a Retry option. The estimated product count shows a dash until it loads, and a saved threshold of 0 stays 0 when you edit the rule.
- Alert trigger names match everywhere — The wizard, alert list, type filter, rules table, the assistant’s Approve card, and Slack and email messages use the same trigger name, e.g. “Competitor cheaper than us” or “Retailer cheaper than your store.” A MAP rule reads “MAP violation” in the rules table.
- “Out of stock” filter renamed to “No competitor price” — The Prices page price-position filter and its active-filter pill read “No competitor price,” meaning no subscribed competitor has a price above zero, regardless of stock. Clickable prices keep a bordered badge; gray marks only out of stock or an unavailable competitor price.
- Brand dashboard partner-risk card shows real MAP data — The brand dashboard’s partner-risk card is titled “Which partners have the most open MAP violations?” and shows open/notified violation cases for the selected window, with each row linking to that retailer’s MAP violations page. It shows MAP data only; availability lives on the Availability card.
- Products page filters categories with the category tree only — The category tree picker is the only category control on the Products page. Node-based category filters keep working in links, and a ?category= link parameter doesn’t filter the Products page.
- Manage rules counts open alerts correctly — The Open events card and each rule’s Open events column count every alert whose issue hasn’t cleared, regardless of whether you’ve read or postponed it.
- Deleting a Slack integration keeps alert rules working — The confirmation names how many alert rules use that integration. After deletion, those rules stop posting to Slack but stay enabled, keep firing in the inbox, and keep any email delivery they had. Disabling leaves the rules unchanged, so Slack resumes if you re-enable it.
- Renaming a conversation from the header menu works — Choosing Rename from the ⋯ menu next to the conversation name keeps the text box open until you press Enter, press Escape, or click away, so the rename takes effect.
- Equivalents tab flags matches waiting for review — A retailer with unreviewed suggested matches shows a count (“3 to review”) with Review as the primary action, opening the Matches tab, and Add still available. The header count separates “to review” from “no equivalent,” and Match rules keeps a static chevron and your expansion state while filtering.
- Match review works through large queues reliably — The review queue processes 250 pending matches at a time, keeps the header count in step with every approve or reject, and ends each batch with a Load next batch button. The Match Queue status filter gains a Rejected option, and Match Stats shows a Rejected count.
- Alert email and Slack messages send once per alert — An open alert sends email or Slack only once; later imports, price edits, or Check now just refresh its inbox row. Test notification fails honestly when a rule has no eligible chat recipients, and postpone reminders go out over email and Slack only.
- Different products with identical descriptions stay separate — Listings that state conflicting brands or conflicting product numbers stay as separate products, no matter how similar their descriptions are, even when two products from different brands share the exact same generic or manufacturer boilerplate description.
- Also fixed — On the alert rule Configure step, the threshold amount, Percentage, and Currency controls share the same height, with labels centered on the switch. The breadcrumb reads Edit alert rule while the rule loads or fails to load, and quotes the rule’s name, matching the name field, once the form is open. Edit alert rule shows Cancel on every step (leaving the rule unchanged), the notification line reads “Slack not set” when Slack isn’t configured, and Test notifications appears only when you can edit that rule. Competitor prices on Direct price comparison use the same bordered badge as your own prices, with a lower, inline, or higher pill when you open offer details. An inheriting category’s row action reads Edit, matching what it does (it opens the editor), and Override settings inside the editor is what switches that category to custom rules. The breadcrumb and heading on the MAP violations retailer page show the retailer’s display name, carried over from the brand dashboard, with a placeholder shown while cases are still loading without that name. The list detail page’s non-functional Brand filter is gone; search by product name or EAN still works. The Alerts tab on a product page stays underlined and selected when the product has unread alerts.
- List pages show all products — List detail pages now page through every product in a list, 10 at a time, with page controls and a total product count. The search box searches the whole list by product name or EAN.
- Longer AI Assistant wait times — The AI Assistant now waits up to ten minutes for a response, so slow requests have time to complete.
- Accurate onboarding Demo coverage — Onboarding’s market snapshot now shows a Demo coverage score based on the retailers and categories you keep, dropping to 0% if you remove them all. You need at least one retailer or competitor selected to continue, since demo data requires one to generate pricing and MAP violation data.
- Accurate list price and Competitive Position — List pages show a My price column with your price for each product in its observed currency, or an em dash if there is none. Competitive Position compares your price to the average competitor price and shows Higher, Lower, or Inline; hover to see the percentage difference and how many prices were averaged.
- Also fixed — The Attribution Attribute sets table drops the Required column, and the Overview now labels its counts Configured attributes and Missing values. Member rows on the Members tab do not include a disabled Manage button.
- Editable attribute sets in Attribution — The Attribution Attribute sets tab is now editable: rename an attribute, change its type, unit, allowed values, or default value, rewrite its explanation, or add and delete attributes, previewing the effect first. Chat can also list, add, and delete attributes, with a confirmation card before saving.
- Attribute editor fixes — Attribute editors now preserve accented characters in suggested keys, keep pending value edits from being lost, and require confirmation before applying values that are incompatible with existing data. Numeric format errors now let you retry, and attributes with a temporary “new” key reopen correctly.
- Also fixed — The Explanation field in attribute editors now has a clear screen-reader label, with its help text announced separately. Tooltips in the Data Quality category tree describe the attribute lines shown on screen, including each attribute’s value type, scope badge, and configured versus filled counts.
- Apply a validated attribute upload later — Every validated attribute upload with no error rows gets a “Review and apply” button in Upload history, so you can open the stored rows and validation date and apply them anytime, not only right after upload.
- Leaving an org or declining an invitation uses an in-app dialog — Leaving an organization and declining an invitation use an in-app confirmation dialog. A failed leave shows a plain message, and the last-admin case shows “You are the last admin. Make another member an admin before you leave.”
- Product images load faster and more reliably — Product image requests share downloads and reuse cached responses using ETag revalidation. A slow or failed image source times out after three seconds and shows a placeholder.
- Lists load without an Own Retailer — The Lists overview shows list details and product counts even without an Own Retailer configured. The price matrix within a list still requires one.
- Dashboard MAP compliance card compares against the right MAP price — The “Retail pricing state vs MAP guidance” card on the brand dashboard classifies each retailer offer against the MAP price that applies to it, using the same ±1% bands as the MAP Price Matrix. Offers with no applicable MAP price are excluded, and the footer shows only the classification counts.
- AI Insights on Competitors & Retailers reflects your filters — Asking AI Insights for an analysis on the Competitors or Retailers page covers the filtered view you’re looking at, including brand, category, price position, or Exact + Equivalent mode, and the analysis states which view it covers.
- Competitors with no matched products stay visible — A tracked competitor or retailer with zero matched products stays on the list at all times, shown last with 0 matches, a dash for Index, and “No common products” in place of a risk badge.
- Company-wide pricing alerts cover your whole catalog — Competitor-cheaper, overpriced, and margin-opportunity alert rules with company-wide scope evaluate every product in your catalog. A manual check walks the full catalog and reports how many products it checked.
- Alerts keep their original detected time — An open alert keeps its first-detection time when it re-checks; only the trigger details refresh, so a week-old MAP violation stays accurate in the 24-hour view.
- Slack alert rules require a chosen integration — When more than one Slack integration is connected, the alert rule wizard’s Delivery step requires you to pick one before continuing, and Save blocks without a selection. The Review step shows the chosen integration and channel.
- Attribute changes rebuild only the category you previewed — Applying an attribute definition change rebuilds only the products in the category you previewed, matching the count shown before you applied it.
- API Keys tab manages the organization you opened — The API Keys tab lists, creates, and revokes keys for the organization in the URL. A user who isn’t a member of that organization gets a clear refusal, and scripts calling /auth/api-keys keep working on the default organization.
- Product export matches what you see — Exporting the current filtered results applies the same attribute and text filters as the product list, and a quoted search exports only exact matches. Selecting rows preselects “Selected products” but keeps “Current filtered results” and “All products” available too.
- Also fixed — The MAP Price Matrix legend includes a fourth entry, “No MAP policy,” explaining that gray cells mean no MAP price applies to that retailer, currency, or date. A failed Slack “Test connection” shows a plain, readable error message. The “Manage tenants” link in the workspace switcher appears only for organization admins.
- Admins can export an attribution sample for a prospect — The Admin page’s new Experiments section has an “Export with raw specs” tool. Pick a workspace, categories, retailers, and a sample size to get a CSV of the best-attributed products per category and retailer, with per-attribute sources and raw specification keys. Removed after 1 Oct 2026.
- Attribution Overview and Match Review load faster — Attribution Overview and Match Review now load faster on large workspaces, including when you open master-product details or review match candidates.
- Drill-down links keep your Competitors filters — Every drill-down link from the Competitors and Retailers pages, including dashboard widgets, now keeps the active brand, category, node, search, and price-position filters, so the Common Products page matches what you were viewing.
- Adding or requesting a competitor shows a result — Adding or requesting a competitor now shows a success or error message, so you know whether it worked.
- Every price badge opens offer details — Every daily price badge on the product Prices tab now opens the offer details, including days where the price was carried forward unchanged.
- Attribution area filter stays set with Hide empty categories — The Attribution area filter now stays set when you turn on Hide empty categories. If the selected area has no customer attribution, the table says so and tells you to untick Hide empty categories or clear the area filter.
- Competitive Position points the right way — The Competitive Position column on a list now shows the correct direction: ”↗ Higher” when your price is above the competitor average, ”↘ Lower” when it’s below, and ”— Inline” within 1%.
- Market Benchmarks search matches only name and brand — Searching Comparison Sets in Market Benchmarks now matches only product name and brand, as the placeholder says.
- Match Review comparisons are more accurate — A candidate’s SKU is only flagged as different when the master listing has a SKU to compare. Highlighted differences in bundle quantity, weight, net content, and dimensions now compare against the same values shown in the Master Catalog panel.
- Also fixed — The Retailers table’s columns now match the Competitors table. Import skips caused by conflicting attribute columns now show a plain description on the Review and Results steps. The tooltip on a disabled match mode now links to Market Benchmarks.
- More accurate product attribute values — When a retailer’s own value and a value Aperture infers from the listing title disagree for the same attribute, the retailer’s value now wins. Inferred values also clear automatically once the retailer states the attribute.
- Cleaner attributes for bedding and paint categories — Duvet Covers & Sets, Duvets & Pillows, Mattress Toppers, and Emulsion Paint now use the same ‘Feature’ attribute as similar categories, so their attribute coverage reporting reflects reality.
- Product Detail’s Attributes tab is easier to scan — Source Data is now Attributes, opening on editable normalized values (old links still work). Attributes without a value are hidden by default with a toggle to show them, order stays consistent, a Raw view still shows original scraped data, and every tab shows the category with taxonomy path on hover.
- Workspace setup failures are now visible and retryable — If setting up a new workspace is interrupted, it now clearly shows as failed, and organization administrators can retry it. Workspaces still being set up reopen right where progress left off.
- Chat price comparisons pick the right mode — The chat assistant now compares your products against a specific competitor or against the whole market, as asked.
- Smarter product attribute filters — Product attribute filters now use the right control for each type: toggles, unit-aware numeric ranges, and text search, via one searchable picker that hides filters with no results. Filtering is now fast on large catalogues, and you can clear either side of a range independently.
- More accurate product freshness — Product freshness now updates whenever a nightly scrape changes anything about a product - title, packaging, size, specifications, images, or dimensions.
- Derived attribute mappings keep stated data — Deriving one attribute from another (e.g. composition from upholstery material) now keeps the source attribute when it’s part of your vocabulary, and never overwrites a value the product states directly. Retailer values are still recognized as before.
- Internal-only controls are now visually flagged for employees — Screens and controls available only to import.io and Neuralogics employees now show a subtle amber highlight with an explanation on hover, making clear which surfaces aren’t part of the regular customer experience.
- See what’s waiting for review, right from Match rules — Each product group in the Match rules table now shows a Review count of suggested and stale comparable candidates awaiting attention. Clicking the badge jumps straight to Market Benchmarks, pre-filtered to that group and ready for review.
- Attribution: a new home for your category attributes — Attribution replaces Feature Sets as the place to see your configured category attributes across your taxonomy. It adds read-only attribute sets and an upload history with file downloads; uploading and advanced editing still work via the existing Feature Sets workflow.
- Faster, more accurate product search and filtering — Product search is faster, and ‘Related’ results are now capped at the 200 closest matches. Search filters, attribute pickers, and facets now use the same typo-tolerant matching as the product list, show only relevant attributes, and stay in a stable alphabetical order.
- Product freshness and price charts reflect what we observed — Data freshness on a product now reflects the last time we saw the listing, so steady-priced products look as fresh as they are. Price history charts stop drawing a retailer’s line at the last time it was observed.
- Retailer product exports link back to the product page — Every retailer product export now includes a Product URL column, so you can jump straight to the page a listing was captured from to verify a price or attribute. Product-level exports are unchanged.
- Product Export column picker loads faster — The column picker in Product Export now opens quickly even on large catalogues, with the same filters, columns, labels, and counts as before.
- Demo workspaces show which one you’re in — When running multiple demo workspaces at once, each is now clearly labeled as Brand or Retailer — in the workspace picker, on the activation and ready screens, and in the header’s workspace switcher. Older workspaces simply show no mode badge.
- Generate Suggestions is faster, refreshes matches, and won’t time out — Generate Suggestions now refreshes your matches: better matches replace weaker ones, and the dialog reports created, updated, and retired counts; reviewed matches stay untouched. It’s also about three times faster and has a ten-minute time budget.
- Match rules now has its own page — Rule editing for Equivalent Matches has moved out of a tab on the Equivalents page into its own Match rules page under Configuration in the sidebar. Old links still work, and the empty state on a product’s Matches view now links directly to it.
- Demo workspace creation works on every environment — Completing onboarding now creates the demo workspace on older environments too. If workspace creation fails, the failure is reported clearly.
- Product freshness dates are now accurate — The “last observed” date for products that are not scraped any more now stays accurate, and the products list and product page always agree on when a product was last seen. Prices appear only on the days they changed.
- Category filters now have a search box — The category dropdown on Products, Prices, Movers, New Products, and Competitors/Retailers pages now has a search field — type to jump straight to a deep category, or clear it to browse the full tree again.
- Generate Suggestions is reliable on large categories — Generating comparable suggestions in Market Benchmarks now completes reliably on large categories, including ones without equivalence rules yet. Suggestions produced are unchanged.
- Export opens on large filtered product sets — Opening Export after filtering the Products page now works on large, heavily filtered product sets.
- Shared attributes now show under every category in Export — The Export column picker now shows a shared attribute’s checkbox under every category it applies to, and checking it in one place checks it everywhere. It still exports a single column.
- Exports now show a consistent Current Price — Exporting products now picks the lowest current offer as Current Price every time, so repeated exports agree.
- Brand corrections now reach existing products — When a retailer corrects a product’s brand in their feed, already-imported products now pick up the corrected brand on their next import.
- Stable prices stay visible on the product page — A product whose price hasn’t changed in a while now keeps its price in the KPI cards, prices table, and chart in every date range.
- Data freshness now reflects every kind of change — Freshness now advances when a nightly scrape changes a product’s title, packaging, size, specifications, images, or dimensions, not just its price.
- Onboarding now honors brand vs. retailer links reliably — A marketing link naming Brand or Retailer is now applied when you return to onboarding with a saved draft. Clicking your brand/retailer choice now selects it reliably and enables Continue.
- Onboarding now opens the workspace you just built — Finishing onboarding, including running it again to create a second demo workspace, now takes you into the workspace that run created.
- Onboarding suggestions can be retried — Clicking a suggestion again while onboarding is still working on it now returns a suggestion.
- Product exports are faster and skip data quality scans — Large catalogue exports build attribute columns faster and do not trigger a background data quality run while the file is generated. Existing data quality snapshots remain available in history.
- Brand users can now ask chat for a MAP alert — Brand users can now ask chat to create an alert for MAP violations and get the same rule the Alert Rules wizard would create. The confirmation and delete cards for these alerts now read correctly too.
- German product data now reads correctly — German product titles, sizes, stock availability, categories and specification attributes — like upholstery material, seat dimensions and height — now read and display correctly. Already-imported products were corrected too.
- Data Quality now understands German product text — Data Quality gap detection, pack/bundle sizing, and attribute defaults now read German product text as well as English, so German listings are assessed correctly.
- Imports leave unknown market details unset — Products imported without a clear image, currency, or country now show those as unset.
- Material attributes fill in from clear evidence automatically — Material attributes such as fabric composition now fill in automatically when the evidence is clear-cut — a percentage breakdown, or a spec sheet stating “Leather” — even when the AI itself is unsure. Fabric sofas without stated fibre information can fall back to a configured default.
- Attribute fill reads more sources automatically — The attribute fill now runs automatically right after import — including a tenant’s own configured attributes — and re-runs when a product’s images change. It can also read dimensions from product images and from single-string measurement fields some retailers publish outside the spec sheet.
- Price history and freshness reflect what we observed — Data freshness and the price chart now reflect the last time we observed a product, not the last time its price changed, so a steady-priced product looks as fresh as it is. The chart stops at the last observed date and breaks across gaps.
- Chat handles failures more gracefully — The AI Assistant now shows a specific, plain-language message when something goes wrong, and shows no error when you close the chat or navigate away mid-answer. It also switches to another AI provider automatically if the current one fails.