ShopatchSpecfinder
Setup guide

Set up Specfinder, step by step

This page covers everything the app does: how the data fits together, what each file must look like, every step in the admin and every block in your theme. The steps are the same in every trade. What differs is in the tab for your trade. The admin screenshots come from a real run in a development store, the storefront screenshots from our demo shop Broadstock.

Back to the app page

Before you start

  • An Online Store 2.0 theme such as Horizon or Dawn. Every block is placed in the theme editor; you never touch theme code.
  • Shopify's free Search & Discovery app. It is the only place a storefront filter can be created, so step 9 needs it. Everything else works without it.
  • Your product data as spreadsheets saved as CSV. If you do not have any yet, step 4 shows a result with example data first, and the sample files below give you the exact format.
  • The Full plan for the CSV import, the starter packs and a vehicle picker with more than 50 vehicles. Every block, the data model and the example data are free.
  • Your trade. Pick it in the tabs below: they list the names to choose, the files to import and the blocks that fit, with a complete set of sample files.
Your trade

What is different in your trade

Pick your trade. The tab lists the names to choose in step 5, the files you import in step 6, the filters and blocks that usually make sense, the complete sample set and how the result looks in a real shop.

Auto & vehicle parts

Starter pack sections (step 5)
What’s in the box · Fitting · Approvals & markings · Warranty
Compatibility data (steps 5 and 6)

Called: Vehicle (Make · Model · Model year from · Model year to · Engine)

Product field: Compatible vehicles

Columns in the file:

handle,make,model,year_from,year_to,engine
vw-golf-vii-1-0-tsi,VW,Golf VII,2012,2020,1.0 TSI
Typical specification rows
Part group Brakes · Fitting position Front axle · Material Cast iron · Diameter 300 mm · Thickness 24 mm
Exclusion filters (step 8)
Material, for filters such as “without ceramic”. In the demo store, one property gives eight of them.
Blocks that usually fit (step 10)
Specification table, Compatibility picker above Does it fit?, Part numbers, Documents, Product details, Product finder, Quick view.
Sample set

Download the set as ZIP

Source: 78 vehicles and 244 assignments from Broadstock.

In a real shop (Broadstock)

Specification table of a brake disc
Specification table of a brake disc
Compatibility picker with VW Golf VII 2017 2.0 TDI chosen
Compatibility picker with VW Golf VII 2017 2.0 TDI chosen
Fits your VW Golf VII 2017 2.0 TDI
Fits your VW Golf VII 2017 2.0 TDI
Part numbers: SKU, MPN, barcode, OEM with copy buttons
Part numbers: SKU, MPN, barcode, OEM with copy buttons
Step by step

The twelve steps, in this order

Do them in this order. The app's Getting started page follows the same order and marks each step Done, Open, Not yet or Cannot tell; it reads your shop, so what is missing there is really missing. The reference part below the steps explains the data model, every field and the import rules in detail.

  1. 01Install and open Getting started

    Install Shopatch Specfinder from the Shopify App Store. It asks for access to products, the online store and custom data, and nothing else.

    Clicking the app's name in your admin opens the overview. Getting started lists every step and links to the page where you do it.

    Shopify install screen: the app needs access to staff data, products, online store and custom data
    Shopify install screen: the app needs access to staff data, products, online store and custom data
    Getting started: Create the fields, Pick your trade, Get values onto your products, Derive the filters
    Getting started: Create the fields, Pick your trade, Get values onto your products, Derive the filters
  2. 02Choose your plan

    Free covers all nine blocks, the data model and the derived filters. Full (29 USD per 30 days) adds the CSV import, the starter packs and a vehicle picker with up to about 1,400 vehicles instead of 50.

    Plan → Subscribe opens Shopify's approval page; the charge appears on your Shopify bill. Cancelling does not need an uninstall, see the end of this guide.

    Plan page with the free tier and Full side by side
    Plan page with the free tier and Full side by side
  3. 03Create the fields

    Setup → Create definitions. One click creates the six record types and seven fields described in the reference part below the steps, thirteen definitions in a fresh shop. They belong to your shop and stay if you remove the app.

    Running it again is safe: what exists is left untouched and reported as already there.

    Setup after Create definitions: every definition marked created
    Setup after Create definitions: every definition marked created
  4. 04See a result first (optional)

    Import → Create example data writes two specification rows and two groups, links them and attaches them to one active product. Look at the product opens it in Shopify's product form, where the Specifications field is filled.

    Remove example data again clears everything. Every example handle contains the word “example”, so nothing of yours is touched.

    Created 4 records and set 4 references, with the button Look at the product
    Created 4 records and set 4 references, with the button Look at the product
    Product form: the pinned Specifications field holds the example groups
    Product form: the pinned Specifications field holds the example groups
    Removed 4 example records
    Removed 4 example records
  5. 05Name your compatibility data and pick a starter pack

    Setup → Name your compatibility data: choose the wording of your trade (see your tab). Make, Model, Engine for vehicles; Make, Series, Model for printers; and so on. Only the labels change; entries, links, filters and shared filter links keep working.

    Setup → Starter pack: choose your trade and click Preview. Untick sections you do not need and rename the ones you want to call differently, then Create starter pack. The sections appear in the Product details block in exactly this order, on every product. Running a pack again never deletes a section; a label you change is replaced. Creating the starter pack needs Full; the preview works on the free tier.

    Renamed: the object, 6 fields and the product field
    Renamed: the object, 6 fields and the product field
    Starter pack preview with one section unticked
    Starter pack preview with one section unticked
    Starter pack created: three sections in a fixed order
    Starter pack created: three sections in a fixed order

    Watch out: Trades without compatibility data skip the naming and go straight to the starter pack.

  6. 06Import your data

    Work through the three sections in order: records, then links between records, then the assignment to your products. The files for your trade are in its tab above. The rules of each section are under “Reference: the three import sections”, the file format under “Reference: CSV format”.

    Import page: Three files, three jobs, section 1 with record type and template
    Import page: Three files, three jobs, section 1 with record type and template

    Section 1: the records

    Choose the record type, check the Template box, pick the file, Start import. Errors appear right below the section. Then scroll to Recent runs and wait until the line says done.

    Row 6: handle occurs more than once; skipped column baujahr
    Row 6: handle occurs more than once; skipped column baujahr
    None of the columns in this file match the selected record type. Nothing was written. These columns match Specification row.
    None of the columns in this file match the selected record type. Nothing was written. These columns match Specification row.
    Recent runs: 10, 20 and 41 rows, all done
    Recent runs: 10, 20 and 41 rows, all done

    Watch out: The record type goes back to the first entry after every import.

    Section 2: links between records

    Pick the file. If its header belongs to another section, the app says so immediately. Leave “Only show, write nothing” ticked, Read assignments, check the numbers, untick, Read assignments again.

    This file starts with product,object. Going by its header row it belongs in section 3 of this page, not here.
    This file starts with product,object. Going by its header row it belongs in section 3 of this page, not here.
    Dry run: 10 records, 70 assignments
    Dry run: 10 records, 70 assignments

    Watch out: “… not found and skipped” means the records do not exist yet. Import them in section 1 first.

    Section 3: the assignment to your products

    Choose the target field, pick the file, untick the dry run once the numbers look right, Read assignments. Repeat for each field: groups, compatibility, documents.

    10 products now carry 104 assignments in total
    10 products now carry 104 assignments in total

    Watch out: The target field starts on the first entry. Check it before every file.

  7. 07Check it in your Shopify admin

    Content → Metaobjects → open a record type to see its entries. Products → a product → Product metafields shows what is attached to it.

    Metaobject entries: 20 vehicles with make, model, years and engine
    Metaobject entries: 20 vehicles with make, model, years and engine
    Product metafields: Compatible vehicles and Specifications filled
    Product metafields: Compatible vehicles and Specifications filled

    Watch out: After a bulk import, the Entries column on the Metaobjects overview can trail behind for hours. Open the record type to see the real list.

  8. 08Derive the filters

    Filters → Make properties filterable → Preview → Create filters. Every row label becomes a filterable field on the product; numbers become ranges, so “at least 120 W” finds 120, 180 and 250. You set no thresholds.

    Exclusion filters: pick a property with few, recurring values, such as Material or Contains, then Preview and create. Shopify cannot filter for what a product does not contain; the app derives a “without …” field from what it does contain.

    When products change later, the Filters page and Getting started say how many properties are affected, and one click derives them again. The app also sends you an email, at most once a day, while something is out of date.

    An exclusion you no longer need is removed under Remove exclusions on the same page: Preview shows what disappears, then the derived field and its values go. Your specifications are not touched.

    Preview of properties: name, type, number of values and key
    Preview of properties: name, type, number of values and key
    18 definitions, 70 values written
    18 definitions, 70 values written
    Preview for Material: without Activated carbon, without Cast iron and six more
    Preview for Material: without Activated carbon, without Cast iron and six more

    Watch out: The compatibility data for the picker is stored automatically after an import; the Filters page confirms it with the number of entries.

  9. 09Add the filters in Search & Discovery

    Storefront filters live in Shopify's free Search & Discovery app, and no app can create them there. The Filters page lists every derived property that has no filter yet, with name and key, a list to copy and a button that opens Search & Discovery.

    In Search & Discovery: Filters → Add filter → source Product metafield → the key from the list → Save. The filter label is yours to choose, the key is not. Add one filter per property you want customers to use.

    The missing filters with keys, Copy the list and Open Search & Discovery
    The missing filters with keys, Copy the list and Open Search & Discovery
    Search & Discovery: filter Material with the source Product metafield
    Search & Discovery: filter Material with the source Product metafield

    Watch out: While your storefront is password protected, the app cannot see which filters arrive and says so rather than guess.

  10. 10Place the blocks

    Getting started → Add the block opens the theme editor with the specification table already on your product page. More blocks are under Add block → Apps. Save when you are done. Every block and its settings are described below.

    For compatibility, place the Compatibility picker above Does it fit?: the answer needs a chosen vehicle or device.

    Quick view is an app embed for the whole theme, not a block. Turn on Quick view opens its switch; save.

    Theme editor: Add block → Apps with every Shopatch Specfinder block
    Theme editor: Add block → Apps with every Shopatch Specfinder block
    App embeds: Quick view switched on
    App embeds: Quick view switched on
  11. 11Check your storefront

    The filters from Search & Discovery appear in your collections, Quick view opens from the product cards, and on the product page the customer picks a vehicle and gets a straight answer.

    Collection filtered by Material: Ceramic, one product
    Collection filtered by Material: Ceramic, one product
    Fits your VW Golf VII 2017 2.0 TDI
    Fits your VW Golf VII 2017 2.0 TDI
    Does not fit your Audi A1 GB
    Does not fit your Audi A1 GB
  12. 12Translate (optional)

    Add a language under Settings → Languages. Filters → Open Localization leads to Shopify's Translate & Adapt: filter labels, record values and everything you typed into the blocks translate like any other shop content.

    Fields you leave empty in a block need no translation: the block shows its own text in the language the customer is reading.

    Translate & Adapt: the filter Material translated to German as Werkstoff
    Translate & Adapt: the filter Material translated to German as Werkstoff

How the data fits together

Specfinder stores your data as Shopify metaobjects and product metafields. That sounds technical, but the idea is simple: small records that point at each other, and a product that points at the records that describe it.

Specification rowSpecification groupCompatibility targetDocumentDetail sectionProduct detailProductOE · MPNShoprowsspecs.groupsfitment.vehiclesdetails.documentsslotdetails.slotsdetails.shared · Order of the sections
Section 1 createsSection 2 linksSection 3 attachesText fields on the product: OE number, manufacturer number

A specification row is one line of the table: label, value, unit, such as “Diameter · 300 · mm”. Rows are grouped into a specification group, such as “Dimensions”. The product points at its groups. That is why the order matters: the rows must exist before a group can list them, and the groups must exist before a product can point at them.

A compatibility target is one thing a product fits: a vehicle, a printer, a device. The product points at every target it fits. The compatibility picker and “Does it fit?” read exactly these links.

A document is a data sheet, a declaration or a manual, as an uploaded file or a link. The product points at its documents.

Detail sections are the headings of text blocks such as Warranty or Shipping & returns, with an optional text that applies to every product. A product detail is the text of one section for one product. The product points at its product details. The starter pack creates the sections for you.

Part numbers (OE number and manufacturer number) are plain text fields on the product. SKU and barcode come from the product's variant, as in any Shopify shop.

Why the order matters

  1. Records first (import section 1): rows, groups, compatibility targets, documents. Nothing can point at a record that does not exist yet.
  2. Then links between records (import section 2): which rows belong to which group. Skip this and a product shows an empty specification table.
  3. Then links to products (import section 3): which groups, targets and documents belong to which product. Only now does anything appear in your shop.
  4. Then the filters (step 8), because they are derived from the values the products now carry.

The record types

Six record types, created in step 3. Four of them come from a CSV file in import section 1. The other two are text blocks and are maintained in your admin. The column names in a file are the field keys in the first column below, written exactly like this, in lower case.

Specification row sp_spec_row

What it is
One line of the specification table: a label, a value and a unit. Kept as its own record so the finder can filter on it and the comparison can line rows up across products.
Used by
Specification table, Product finder, Comparison table, Quick view, and the derived filters.
Display name
Created automatically as “Diameter: 300 mm”.
How to fill it
CSV, import section 1, record type Specification row.
Sample file
s1-spec-rows.csv
Field (column)RequiredFormatNotes
handlerequiredtext, uniqueYour own ID for the row. Lower case, digits and hyphens work best, for example sp-row-brake-disc-300-diameter.
labelrequiredtextWhat the row is called, such as Diameter. Rows with the same label across products become one filter.
valuerequiredtextThe value, such as 300. Write numbers without the unit; a number becomes a range filter (“at least 120”).
unitoptionaltextThe unit, such as mm. It appears after the value and in the filter name, for example Diameter (mm).
nameoptionaltextLeave it out. The app writes “Label: value unit” itself. A name column of your own always wins.

Specification group sp_spec_group

What it is
A named block of rows, such as General or Dimensions. The groups form the sections of the specification table.
Used by
Specification table, Comparison table.
Display name
The label.
How to fill it
CSV, import section 1, record type Specification group. Then import section 2 for the rows.
Sample file
s1-spec-groups.csv
Field (column)RequiredFormatNotes
handlerequiredtext, uniqueYour own ID for the group, for example sp-grp-brake-disc-300-dimensions.
labelrequiredtextThe heading shown above the rows, such as Dimensions & fitting.
rowsoptionallinks to rowsLeave this column out. The rows of a group are linked in import section 2 (record,object).

Compatibility target sp_vehicle

What it is
One thing a product fits: a vehicle, a printer, a device. Renamed in step 5 to the word of your trade (Vehicle, Printer, Device). Only the labels change; the keys stay the same in every trade.
Used by
Compatibility picker, Does it fit?
Display name
Created automatically, for example “VW Golf VII 2.0 TDI (2012–2020)”.
How to fill it
CSV, import section 1, record type Vehicle (or the name you chose in step 5).
Sample file
s1-compatibility-targets.csv
Field (column)RequiredFormatNotes
handlerequiredtext, uniqueYour own ID, for example vw-golf-vii-2-0-tdi.
makerequiredtextLevel 1 of the picker: Make, Brand or Manufacturer.
modelrequiredtextLevel 2: Model, Series, Battery system or Range, depending on your trade.
year_fromoptionalwhole numberLevel 3 is a range: the first year (or version) this target covers, such as 2012.
year_tooptionalwhole numberThe last one, such as 2020. Leave it empty for “still current”.
engineoptionaltextLevel 4, an exact match: Engine, Model or Device.
nameoptionaltextLeave it out. The app writes “Make Model Engine (from–to)” itself.

Document sp_document

What it is
A data sheet, a declaration of conformity, a manual or a certificate, as an uploaded file or as a link.
Used by
Documents block.
Display name
The title.
How to fill it
CSV, import section 1, record type Document, or by hand in your admin.
Sample file
s1-documents.csv
Field (column)RequiredFormatNotes
handlerequiredtext, uniqueYour own ID, for example drill-18v-manual.
titlerequiredtextWhat the customer reads, such as Operating instructions.
urloptionalfull addressA link instead of a file, starting with https://. The easiest way to bring documents in by CSV.
fileoptionalShopify file IDAn uploaded file. In a CSV it needs the file's ID (gid://shopify/GenericFile/…); simpler to attach the file in your admin (Content → Metaobjects → Document).
kindoptionaltextThe type of document, such as Declaration of conformity. Shown next to the title.
languageoptionaltextLanguage code such as en or de. Shown next to the title.
issuedoptionaldate, YYYY-MM-DDThe issue date, such as 2025-09-12. The block can show it.
versionoptionaltextSuch as 2.0.

Detail section sp_slot

What it is
The heading of a text block in the Product details block, such as Warranty or Shipping & returns, with an optional text that applies to every product.
Used by
Product details.
Display name
The label.
How to fill it
The starter pack creates them (step 5). Edit or add more in your admin under Content → Metaobjects → Detail section. Rich text cannot come from a CSV.
Field (column)RequiredFormatNotes
labelrequiredtextThe heading, such as Warranty.
bodyoptionalrich textShop-wide text. A product with its own text for this section overrides it.

Product detail sp_detail

What it is
The text of one detail section for one product, such as this product's warranty terms.
Used by
Product details.
Display name
Section and product.
How to fill it
In your admin: Content → Metaobjects → Product detail, then attach it to the product in the Product metafields card (field Detail sections). Most shops only need the shop-wide texts.
Field (column)RequiredFormatNotes
slotrequiredlink to a detail sectionWhich section this text belongs to.
bodyoptionalrich textThe text for this product.

The product fields

Step 3 also creates these fields. The product fields are pinned, so they appear on every product in your admin under Product metafields.

FieldShown in the admin asPoints atSet byRead by
specs.groupsSpecificationsSpecification groupsImport section 3, or by handSpecification table, Comparison table, Quick view, derived filters
fitment.vehiclesCompatible vehicles (or your trade's word)Compatibility targetsImport section 3, or by handCompatibility picker, Does it fit?
details.documentsDocumentsDocumentsImport section 3, or by handDocuments
details.slotsDetail sectionsProduct detailsImport section 3, or by handProduct details
partno.oemOE numberTextBy hand, bulk editor, or Shopify's product CSVPart numbers
partno.mpnManufacturer numberTextBy hand, bulk editor, or Shopify's product CSVPart numbers
details.shared (shop)Detail sections (order)Detail sectionsThe starter pack, or by handProduct details: the order of the sections

The filters derived in step 8 add more fields under specs (f_… for properties, x_… for exclusions). They are written by the app; you never fill them yourself.

The three import sections

The import page has one section per kind of file. The header row of your file decides which section it belongs to; the app reads it as soon as you pick the file and tells you if it belongs somewhere else.

Section 1: the records themselves

handle,label,value,unit (and so on)

One row per record. The first column is always handle; the other columns are the field keys of the chosen record type. You choose the record type in the list above the file field, and the Template box below shows the exact columns with two example rows.

  • The record type goes back to the first entry of the list after every import. Choose it again before the next file.
  • Import is repeatable. A handle that already exists is updated, a new handle is created.
  • An empty cell leaves the stored value as it is. To clear a value, edit the record in your admin.
  • A column the record type does not know is skipped and named after the import. If none of the columns match, nothing is written and the app names the record type the file belongs to.
  • A repeated handle or an empty handle stops the import with the row number.
  • Large files run as a Shopify bulk operation. The line under Recent runs updates itself until it says done, and it shows how many rows were imported and how many failed.

Section 2: links between records

record,object

One row per link. record is the handle of the record that points, object the handle of the record it points at. Choose the target field in the list: sp_spec_group.rows links groups to their rows, sp_detail.slot links a product detail to its section.

  • A record that appears in the file gets exactly the links listed in the file. To add one row to a group, the file must list all rows of that group. Records that do not appear stay as they are.
  • Several rows for the same record are collected; the order in the file is the order in the table.
  • “Only show, write nothing” is ticked by default. Read the numbers of the dry run, then untick it and send the same file again.
  • Handles that do not exist yet are named (“… not found and skipped”). Import them in section 1 first.

Section 3: the assignment to your products

product,object

One row per link. product is the product's handle or the SKU of one of its variants, object the handle of a record. Choose the target field: specs.groups, fitment.vehicles, details.documents or details.slots. The list starts on the first entry, so check it before every file.

  • A product that appears in the file gets exactly the records listed in the file for this field. To add one vehicle to a product, the file must list all of its vehicles. Products that do not appear stay as they are.
  • The dry run works as in section 2.
  • Unknown products and unknown records are named, never skipped silently.
  • Only after this step does anything show in your shop.

CSV format

The app reads what Excel, Numbers, LibreOffice and Google Sheets write. These are the rules it applies.

EncodingUTF-8. A byte order mark at the start is fine; the sample files have one so Excel opens umlauts and accents correctly.
SeparatorComma or semicolon. The app detects it from the header row, so German Excel files work as they are.
Header rowThe first line holds the column names, exactly as listed above: lower case, no spaces. For sections 2 and 3 the German names produkt, datensatz and objekt are accepted too.
QuotesA value containing a comma, a semicolon or a line break must be in double quotes. A quote inside is doubled. Spreadsheet programs do this for you.
Empty linesSkipped.
Numbersyear_from and year_to are whole numbers. In specification rows, write the value without its unit; decimals use a point (1.4).
DatesYYYY-MM-DD, for example 2025-09-12.
LinksFull addresses starting with https://.
HandlesUnique within a file, never empty. Lower case letters, digits and hyphens are the safe choice. Keep them stable: they are how a second import finds the same record again.
Products in section 3The product handle (the last part of the product's address) or a variant SKU.
SizeSection 1 files of several thousand rows are fine, they run as a bulk operation. Sections 2 and 3 look up up to 10,000 records per record type.

Sample files

Every file on this page has been read with the app's own parser and passes its checks: known columns, required fields filled, unique handles, and every link in sections 2 and 3 points at a handle from section 1. The file names start with the import section they belong to.

One template per kind of upload

Small files that show the format of each upload with two or three rows.

All templates as ZIP

A complete set for your trade

The full data of ten products per trade from our demo shop Broadstock, the same data you see in the storefront screenshots. The sets are in the tab for your trade.

Watch out: The product handles in section 3 files are Broadstock's. In your shop, replace them with your own handles or SKUs, otherwise the app reports them as not found.

The theme blocks

Eight blocks and one app embed. All of them are added in the theme editor under Add block → Apps, and each reads the fields described above. Every setting is listed with its options; the defaults are marked.

Specification table

What it shows
The specification table of the product: its groups with their rows, and optionally a “Save for later” button for the comparison.
Where it goes
Product pages.
What it needs
specs.groups filled on the product (import sections 1 to 3).
Specification table with two groups
Specification table with two groups
The same block with collapsible groups
The same block with collapsible groups

Settings

SettingOptionsWhat it does
Headingfree text
Heading levelH2 (default) · H3Part of the document outline, not decoration. If the section around this block already has a heading, pick H3: two H2s in a row are an outline error, and only a screen reader shows it.
Sourcefree text (default: specs.groups)Where the specifications live, as namespace.key. Leave it as it is unless you keep them somewhere else.
Show unitson / off (default: on)
Row orderAs maintained (default) · Alphabetical“As maintained” keeps the order you gave the rows, usually the meaningful one.
Groups
Show group titleson / off (default: on)
Groups can be collapsedon / off (default: off)Worth it from about six groups on. Works without JavaScript, and everything stays reachable by keyboard.
Open the first groupon / off (default: on)
Presentation
DensityRegular (default) · Compact
When there is no dataHide the block (default) · Keep the spaceHiding is the default: an empty box in a finished shop looks like a fault, a missing block is at most a gap.
Comparison table
Show “Save for later” buttonon / off (default: on)Adds the product to a comparison the customer can open elsewhere.
Button alignmentLeft (default) · Centred · Right · Full width
Comparison pageaddressWhere the “View comparison” link goes. Without it the link stays hidden, because a link to nowhere is worse than none.

Product details

What it shows
The detail sections of the product, such as Warranty and Shipping & returns, as accordion, tabs or open list. Shop-wide texts fill in where a product has none of its own.
Where it goes
Product pages.
What it needs
Detail sections from the starter pack; optionally product details in details.slots.
Product details as accordion
Product details as accordion
As tabs
As tabs
As open list
As open list

Settings

SettingOptionsWhat it does
Headingfree text
Heading levelH2 (default) · H3Part of the document outline, not decoration. If the section around this block already has a heading, pick H3: two H2s in a row are an outline error, and only a screen reader shows it.
LayoutAccordion (default) · Tabs · Open list
Open the first sectionon / off (default: on)Applies to the first section that actually has content. It never stays shut just because a section is empty on this product.
Fall back to shop-wide texton / off (default: on)Sections like Returns or Warranty read the same on every product. Write them once on the section itself; a product with its own text still wins.

Documents

What it shows
The product's documents with title, kind, language, version, date and file type. PDFs open in a new tab, images in a dialog.
Where it goes
Product pages.
What it needs
details.documents filled on the product.
Two documents
Two documents
One type approval
One type approval

Settings

SettingOptionsWhat it does
Headingfree text
Heading levelH2 (default) · H3Part of the document outline, not decoration. If the section around this block already has a heading, pick H3: two H2s in a row are an outline error, and only a screen reader shows it.
Metafieldfree text (default: details.documents)Where the documents live, as namespace.key, for example details.documents. The block works out the shape behind it on its own. If the links show file names instead of names: give the file an alt text under Content → Files and it becomes the label. The shop takes a few minutes to pick it up while the theme editor shows it right away, so do not look too early.
Show the issue dateon / off (default: on)
Open images in a dialogon / off (default: on)An image in a new tab sits on a grey background and looks like a fault. PDFs and links to elsewhere still open in a new tab. There the browser does more than we could rebuild.

Part numbers

What it shows
SKU, manufacturer number, OE number and barcode, each with a copy button if you like. Labels can be renamed per trade.
Where it goes
Product pages.
What it needs
SKU and barcode from the variant; partno.mpn and partno.oem on the product.
One per row with copy buttons
One per row with copy buttons
Compact with copy icons
Compact with copy icons

Settings

SettingOptionsWhat it does
Headingfree text
Heading levelH2 · H3 (default)Part of the document outline, not decoration. If the section around this block already has a heading, pick H3: two H2s in a row are an outline error, and only a screen reader shows it.
Fields
Leave a label empty and the standard wording is used. Overriding is how one block serves many trades: “OEM” is “Manufacturer number” for printers and “Order number” in spare parts.
Show SKUon / off (default: on)
Label for SKUfree text
Show MPNon / off (default: on)
Label for MPNfree text
Show OEMon / off (default: on)
Label for OEMfree text
Show barcode (EAN/UPC)on / off (default: off)
Label for barcodefree text
Presentation
LayoutOne per row (default) · Compact“Compact” puts label and number on one line. Good for a single number, cramped for four.
Show copy buttonson / off (default: on)
Copy button styleLabel (default) · IconAs an icon they sit more quietly next to long lists of numbers.

Does it fit?

What it shows
Answers whether this product fits what the customer picked, and lists everything it fits.
Where it goes
Product pages, below the Compatibility picker.
What it needs
fitment.vehicles filled on the product, and a Compatibility picker on the same page or earlier in the visit.
Before a pick: Pick yours above
Before a pick: Pick yours above
Fits your VW Golf VII 2017 2.0 TDI
Fits your VW Golf VII 2017 2.0 TDI

Settings

SettingOptionsWhat it does
Answers whether this product fits what the customer picked. The two sentences are yours to write, and that is what makes one block serve vehicles, printers and power tools alike.
When it fitsfree textWrite {ziel} where the customer’s pick should appear. Leave it out and the pick is appended.
When it does not fitfree textWrite {ziel} where the customer’s pick should appear. Leave it out and the pick is appended.
Before the customer has picked
Say something anywayon / off (default: on)An empty spot looks like a fault. A short invitation to pick usually reads better than silence.
Text before a pickfree text
Presentation
StyleLine of text (default) · Badge
Show everything this fitson / off (default: on)
List starts openon / off (default: off)Good for a short list. With many entries an open list pushes everything below it off the screen, and the count in the line above already answers most of the question.
Longest list5–100 (default: 25)A truncated list always says how many are left. Without that, a customer reads “fits these 20” and concludes theirs is not among them.

Compatibility picker

What it shows
The step-by-step picker: up to four levels, the third a range such as model years. In Show fit mode it answers on the product page; in Search mode it shows the products that match.
Where it goes
Any page: product pages, collections, a landing page.
What it needs
Compatibility targets; for Search mode a collection and a Search & Discovery filter on fitment.vehicles.
Empty picker
Empty picker
Picker with VW Golf VII 2017 2.0 TDI
Picker with VW Golf VII 2017 2.0 TDI

Settings

SettingOptionsWhat it does
Headingfree text
Levels
The picker narrows down step by step. Name the steps for what you sell: Make → Model → Year → Engine for vehicles, Brand → Series → Model for printers, Brand → Battery system → Tool for power tools. Levels 3 and 4 can be switched off below if your data has no such step.
Level 1free text
Level 2free text
Show level 3on / off (default: on)The range level: its records hold a “from” and a “to” value, like a model year, and the picker offers every step in between. Off = the picker stops after level 2.
Level 3: a rangefree textWhat customers read above this step. Leave it empty and it follows your shop’s language.
Show level 4on / off (default: on)One more level with an exact match. Off = the picker stops after level 3.
Level 4free textWhat customers read above this step. Leave it empty and it follows your shop’s language.
Behaviour
ModeShow fit on this product (default) · Search: show matching products“Show fit” answers whether this product fits what the customer picked. “Search” shows the products that match their pick.
Collection to searchchoose a collectionOnly used in Search mode. The results come from this collection, filtered to the customer’s pick. Needs a matching filter in Search & Discovery.
Button labelfree textOnly used in Search mode.
Show results right hereon / off (default: on)Keeps the customer on this page, so a new selection simply replaces the old one. Off = jump to the collection page.
Remembering the pick
Remember across pageson / off (default: on)Kept in the browser only, so it is functional and needs no consent banner. Turn it off for shared devices, or if you would rather store nothing at all. The picker still works, it just forgets on the next page.
Line showing the pickfree textWrite {ziel} where the customer’s pick should appear. Leave it out and the pick is appended.
Presentation
Heading levelH2 · H3 (default)Part of the document outline, not decoration. If the section around this block already has a heading, pick H3: two H2s in a row are an outline error, and only a screen reader shows it.

Product finder

What it shows
A guided search over your derived filters: one dropdown per property, number fields as “at least”, “without …” checkboxes, an optional price range, and the results right below.
Where it goes
Any page, typically a collection or a landing page per trade.
What it needs
Derived filters (step 8) and the matching filters in Search & Discovery.
The finder before a choice
The finder before a choice
Part group: Brakes, 3 products match, shown right in the block
Part group: Brakes, 3 products match, shown right in the block
With exclusion checkboxes
With exclusion checkboxes

Settings

SettingOptionsWhat it does
Headingfree text
Heading levelH2 (default) · H3Part of the document outline, not decoration. If the section around this block already has a heading, pick H3: two H2s in a row are an outline error, and only a screen reader shows it.
Collection to searchchoose a collectionWhere the results come from. Leave it empty and the finder searches the collection of the page it stands on, or all products if there is none. Needs one filter per property in Search & Discovery.
Button labelfree text
Offer a price rangeon / off (default: off)Adds two number fields. Shopify filters the price itself, so this needs no index and no setup. Leave it off if your theme already shows its own price filter, otherwise it stands there twice.
LayoutAdapts to the space (default) · All fields the same width · Always one below the otherThe block measures its own width, so it already stacks in a narrow column or on a phone. Pick “always” if you want the stacked shape even where there is room. A side column is possible in Horizon, which lets apps sit inside its layout groups. Dawn does not offer that place, so the block sits above or below the grid there.
Step of the price fieldsnumberHow much the little arrows move per click. Leave it empty and the block derives it from the price range of the collection, so a shop selling at 30 gets other steps than one selling at 3000.
Show the number of matcheson / off (default: on)Themes usually count in the results themselves. If the number then stands there twice, switch this off. Messages such as “Without Material there would be 4” stay in either case.
Show results right hereon / off (default: on)Keeps the customer on this page, so a new selection simply replaces the old one. Off = jump to the collection page.
Numbers mean “at least”on / off (default: on)On: picking 120 W also shows 180 W and 250 W. Off: only the exact value.
Hide values below this many productsnumber (default: 2)A value that only one product carries is not a filter, it is a link to that product. 2 hides them. 1 shows everything. Counted within the target collection, not across the whole shop. A value that every product in the collection carries is always hidden: it cannot narrow anything.
Offer exclusionson / off (default: on)Adds “without …” checkboxes for every exclusion you derived in the app. Off if you would rather keep them in the theme’s own filter bar only.
Show the collection right awayon / off (default: on)On loading, the block already shows every product of its target collection; narrowing comes after. Turn it off if a product grid of your own sits below it, otherwise the same products stand there twice.

Comparison table

What it shows
Products side by side, row by row. Customers add products with “Save for later” in the specification table or with the search box.
Where it goes
Product pages or a comparison page of its own.
What it needs
specs.groups on the products you compare.
Three products compared
Three products compared
On a page of its own, with search
On a page of its own, with search

Settings

SettingOptionsWhat it does
Headingfree text
Heading levelH2 (default) · H3Part of the document outline, not decoration. If the section around this block already has a heading, pick H3: two H2s in a row are an outline error, and only a screen reader shows it.
Always include the current producton / off (default: on)On a product page, this product is always the first column. Saving another product then shows both side by side straight away.
Only show differenceson / off (default: off)Hides rows where every product has the same value.
Let customers pick products hereon / off (default: on)Adds a search box, so the block works on its own, without saving a product somewhere first.

Quick view

What it shows
A button on every product card that opens the product's specifications right in the list, below the card or as a dialog.
Where it goes
The whole theme: App embeds in the theme editor.
What it needs
The specification table block on your product template, because that is where the values come from.
Quick view opened below a row of product cards
Quick view opened below a row of product cards
The app embed with its settings
The app embed with its settings

Settings

SettingOptionsWhat it does
Shows a product’s specifications straight in the list, without leaving the page. Needs the specification block on your product template, because that is where the values come from.
Button on the cardfree text
Button styleYour theme’s button (default) · Plain outline · Small ⓘ“Your theme’s button” simply adds the theme’s own button class, so it looks like every other button in your shop.
Which theme buttonSecondary (default) · PrimaryOnly used with your theme’s button style. Anywhere but below the card it is trimmed down, because your theme’s buttons are full-size call-to-actions and would swallow the card.
Where it sitsOn the image, top right · On the image, top left · On the image, bottom right · On the image, bottom left · Next to the price (default) · Below the card
How it opensBelow the card (default) · As a dialog“Below the card” spans the full row, so nothing shifts sideways. If your theme’s grid doesn’t allow it, the dialog is used instead, automatically and with no setting needed.

Done, and how to cancel

When nothing is open, the overview says so: Fully set up.

Cancelling does not need an uninstall. Plan → Switch back to Free ends Full at once; the unused part of the period is credited. Your definitions and values stay in your shop, every block keeps working, and you can subscribe again at any time. If you uninstall the app, the fields and their content stay in your shop too.

Overview: Fully set up, nothing is open
Overview: Fully set up, nothing is open
Plan: back on the free tier, Full has ended, the data stays
Plan: back on the free tier, Full has ended, the data stays

If something does not look right

The import said “Import started”, but nothing arrived.

Look at the line under Recent runs. “0 imported” with errors usually means the record type did not match the file. The Template box shows the columns the chosen type expects.

“None of the columns in this file match the selected record type.”

The file is at the wrong target and nothing was written. The message names the record type it belongs to. Choose that type and send the same file.

“Row …: handle occurs more than once” or “is empty”.

Every row needs its own handle. Fix the row named in the message and import again.

“Skipped columns: …”

These columns are not fields of the chosen record type and were ignored. Usually a typo in the header or a column for another record type.

“… not found and skipped” in section 2 or 3.

The file names records or products that do not exist. Import the records in section 1 first; check product handles and SKUs for typos.

A product lost links after an import in section 3.

Section 3 sets exactly the list from the file for every product in it. Include all links of that product in the file.

The specification table on the product is empty.

The groups are attached but have no rows. Run section 2 (groups to rows).

A filter does not show in my shop.

It needs to exist in Search & Discovery (step 9) with the source Product metafield and exactly the key from the app's list.

“Does it fit?” says “Pick yours above”.

The customer has not chosen a vehicle or device yet. Place the Compatibility picker above the block, or anywhere the customer visits first; the pick is remembered across pages.

Quick view shows nothing.

The values come from the specification table block. Add it to your product template.

The Entries column shows fewer entries than I imported.

Shopify updates that count with a delay after bulk imports. Open the record type under Content → Metaobjects to see the real list.

“Are the filters live in the shop?” says Cannot tell.

Your storefront is password protected, so the app cannot read it. Once the password is off, the check shows which filters arrive.

Getting started says properties have changed since the last run.

Products were edited after the filters were derived. Filters → Make properties filterable → Preview → apply brings them up to date.

Still stuck?

Write to us with your shop address and what you see on screen. We answer in English and German.

Contact