Product Tags & Metafields¶
When Emersoft Books imports or updates a product, it adds Shopify tags for BISAC subject classifications and stores a rich set of book data in Shopify metafields. These give you fine-grained control over how your catalog is organized, filtered, and displayed — both in Shopify Admin and on your storefront.
The Emersoft team will help you configure any of this during your onboarding session.
Video walkthrough
Watch Book metadata and metafields (9 min).
BISAC subject tags¶
When a book is imported, Emersoft Books creates Shopify tags from its BISAC subject classifications. Each tag includes a level number prefix that shows where the subject sits in the hierarchy, making it easy to filter by broad genre or narrow sub-category.
For example, a book classified as Fiction | Romance | Romantic Comedy gets three tags:
| Tag | What it means |
|---|---|
1: Fiction |
Top-level genre |
2: Romance |
Second-level sub-genre |
3: Romantic Comedy |
Third-level sub-category |
You can use these tags in Smart Collections, storefront filters, and Shopify automations. For example:
- Books whose top-level genre is fiction: tag
1: Fiction - Books with romance as a sub-genre: tag
2: Romance - Romantic comedies specifically: tag
3: Romantic Comedy
How the level prefix works¶
BISAC subjects are hierarchical: every BISAC heading is a path that runs from a broad category down to a specific one — for example Fiction | Romance | Romantic Comedy. When the app imports a book, it walks that path and creates one tag per step, prefixing each with its depth — the broadest step becomes 1: …, the next 2: …, then 3: …, and so on.
Two things follow from this:
- A single book usually carries several BISAC subjects, so it ends up with several level-numbered tags — not just three.
- The number is always the subject's position in its path, not a fixed property of the word. The tag text is the exact BISAC label at that step, so
1: Fiction,1: Juvenile Fiction, and1: Young Adult Fictionare three different tags — not variants of one.
These tags are built from Ingram's BISAC subject field (BisacSubject). The raw BISAC codes and full subject strings are also kept in the emersoft.bisac_codes and emersoft.bisac_subjects metafields — but only these level-prefixed labels become Shopify tags.
The same subject can appear at different levels¶
This is the part that most often causes confusion. Because the number reflects position, the same word can land at a different level on different books, depending on how each title is catalogued:
- A novel catalogued as Fiction | Romance | Romantic Comedy gets
1: Fiction— here Fiction is the top-level genre (the book is a work of fiction). - A reference or literary-studies title catalogued as Literary Criticism | Fiction gets
1: Literary Criticismand2: Fiction— here Fiction is a second-level subject (the book is about fiction). - On a title where Fiction sits deeper still in its path, you would see
3: Fiction.
So across your catalogue it is completely normal to see 1: Fiction, 2: Fiction, and 3: Fiction on different books. They are distinct tags, and none of them is wrong — each one tells you precisely at what level that book treats Fiction as a subject. That precision is exactly the benefit: it lets you cleanly separate "this is fiction" (1: Fiction) from "this is about fiction" (2: Fiction / 3: Fiction) — a distinction a single, level-less "Fiction" tag could never make.
Collecting a subject across all levels¶
The trade-off for that precision: to capture every book with a given subject regardless of level, your Smart Collection (or filter) needs one condition per level the subject can appear at.
To grab all Fiction titles no matter where Fiction sits in their path, create a Smart Collection set to Products must match: any condition with three tag conditions:
- Tag is equal to
1: Fiction - Tag is equal to
2: Fiction - Tag is equal to
3: Fiction
BISAC paths are usually up to three levels deep, so three conditions cover almost everything; add a 4: Fiction condition if your catalogue goes deeper. If you only want true works of fiction — and not books about fiction — use the single condition 1: Fiction instead.
Use 'any condition', not 'all conditions'
For "all Fiction at any level," the collection must match any condition (an OR across the three tags). If you leave it on all conditions, Shopify only includes books tagged with 1: Fiction and 2: Fiction and 3: Fiction at the same time — which almost no book is, so the collection comes back empty.
BISAC subject tags are created on both single imports and Bulk Import jobs, and are updated when the metadata sync runs.
Other product tags¶
Besides BISAC subject tags, every book the app imports or updates picks up a handful of descriptive tags drawn from the Ingram Content Group® data, plus one fixed marker tag. Like BISAC tags, these are handy for Smart Collections, storefront filters, and Shopify automations — they surface key book attributes in a form that Shopify's collection rules and theme filters work with natively.
| Tag | Ingram source | Example | When it's added |
|---|---|---|---|
Emersoft Books |
(added by the app) | Emersoft Books |
Always, on every product the app imports. Use it to find — or build a collection of — every book added through Emersoft Books. |
| Audience type | AudienceType |
Juvenile |
When Ingram provides an audience type (e.g. Trade, Juvenile, Young Adult, Academic). |
| Theme | Theme |
Coming of Age |
One tag per theme, when Ingram supplies themes. |
| Format | ProductFormat |
Hardcover |
From the product format, when present. |
| Binding | Binding |
Trade Paperback |
From the binding, when present (may match the format). |
| Feature | Features |
Bestseller |
One tag per feature flag Ingram sets on the title — typically an award or merchandising label, when present. |
Series: <id> |
SeriesID |
Series: 9012345 |
When the title belongs to a series. The value is Ingram's series identifier, so every title in the same series shares the exact tag. |
The Ingram source column is the field in Ingram's catalog data each tag is drawn from — useful if you cross-reference titles with Ingram directly. The exact tag text comes straight from that data, so values vary from title to title and are not a fixed list. Most of these values are also stored as metafields (binding, format, audience type, themes, series): the tag is the convenient hook for Smart Collection rules and theme filters, while the metafield holds the same value for display and structured access.
Your own tags, and what happens on update
You can add your own Global tags to a whole job in Bulk Import — a comma-separated list applied to every product in that job, which is the easiest way to find and manage a batch later. When the app later updates an existing product (a re-import or a metadata sync), it merges its tags with whatever tags are already on the product, so tags you added by hand or through other apps are kept. Bulk Import also offers a Tag merge strategy override — choose Replace existing tags to overwrite a product's tags with only the app's tags instead. The default, Merge with existing tags, is recommended.
Catalog metafields¶
In addition to standard Shopify product fields, Emersoft Books stores a comprehensive set of book data in Shopify metafields. Catalog metadata uses the emersoft namespace on both the product (shared “work” data such as authors and subjects) and each product variant (per-edition data such as binding, publication date, pre-order flag, and wholesale cost). The same namespace also holds lightweight app-tracking fields on the product (imported_by_app, timestamps, etc.). Using a dedicated namespace means these never conflict with metafields you may already have from other apps or manual setup.
Each metafield is only written when the source data is present — if Ingram does not provide a value for a particular field on a title, the metafield is left unset on that product or variant.
Product vs variant in Shopify Admin
Catalog data is split by scope. Work-level data that is the same across every edition of a title — authors, subjects / BISAC, audience, language, publication city, harmonized code, media mail, and choking hazard — is stored on the product. Edition-level data that can differ between formats of the same work — binding, format, pages, dimensions, publication date, pre-order, wholesale cost, availability, and returnability — is stored on each product variant.
The Level column in every table below tells you exactly where each field lives. It matters in two places: in Liquid you read product fields as product.metafields.emersoft.… and variant fields as variant.metafields.emersoft.…; and in Shopify Admin a Product-level field is defined under Settings > Custom data > Products while a Variant-level field is defined under Settings > Custom data > Product variants.
Metafield definitions are created automatically
The app creates Shopify metafield definitions for the emersoft product and product-variant fields during install/reinstall. The list below is the complete catalog of data Emersoft Books captures from Ingram on every imported book. The values are written to the product and/or default variant (see intro above) and remain accessible through the Shopify API and Liquid.
Most booksellers only define a handful — typically things like Authors, Binding, Audience Type, Pages, Language, and Pre-order. Cherry-pick whatever fits how you organize and merchandise your catalog, and ignore the rest. You can always add more definitions later if you find a use for them.
The metafields below are grouped by category to make them easier to navigate. The Key column shows the exact namespace.key you will use in Liquid templates, Smart Collection rules, and the Shopify Admin metafield definition screen. The Name column is a suggested friendly name to use when defining the metafield in Shopify Admin — you can pick any name you like; it does not affect how the app writes data.
Title & identifiers¶
| Name | Key | Level | Type | Description |
|---|---|---|---|---|
| Title | emersoft.title_main |
Product | Single line text | The main title without any leading article |
| Leading Article | emersoft.title_leading_article |
Product | Single line text | Leading article (e.g. "The", "A") split out from the title |
| Title Status | emersoft.title_status |
Variant | Single line text | Distribution status from Ingram (e.g. active, out of print) |
| UPC | emersoft.upc |
Variant | Single line text | UPC barcode, where available |
| Source | emersoft.source |
Product | Single line text | Identifier for where the metadata was sourced |
| Display | emersoft.display |
Product | Single line text | Display category from Ingram |
Authors & contributors¶
| Name | Key | Level | Type | Description |
|---|---|---|---|---|
| Authors | emersoft.authors |
Product | Single line text list | All authors associated with the title |
| Illustrators | emersoft.illustrators |
Product | Single line text list | Illustrators, where applicable |
| Foreword By | emersoft.forewords |
Product | Single line text list | Contributors credited with a foreword |
| Other Contributors | emersoft.other_contributors |
Product | Single line text list | Editors, translators, narrators, and other credits |
Series¶
| Name | Key | Level | Type | Description |
|---|---|---|---|---|
| Series ID | emersoft.series_id |
Product | Single line text | Ingram's internal series identifier |
| Series Number | emersoft.series_number |
Product | Decimal | Position of the title within the series (supports fractional values such as 5.5) |
Subjects & classification¶
| Name | Key | Level | Type | Description |
|---|---|---|---|---|
| BISAC Codes | emersoft.bisac_codes |
Product | Single line text list | BISAC subject codes (e.g. FIC027040) |
| BISAC Subjects | emersoft.bisac_subjects |
Product | Single line text list | Human-readable BISAC subject labels — also exposed as level-prefixed tags (see BISAC subject tags) |
| Library of Congress Subjects | emersoft.lc_subjects |
Product | Single line text list | Library of Congress subject headings |
| Subject Area Subjects | emersoft.sa_subjects |
Product | Single line text list | Ingram Subject Area classifications |
| Subject Area Product Type | emersoft.sa_product_type |
Product | Single line text | Ingram Subject Area product type |
| Ingram Subject | emersoft.ingram_subject |
Product | Single line text | Ingram's primary subject category |
| Themes | emersoft.themes |
Product | Single line text list | Thematic descriptors |
| Dewey Decimal | emersoft.dewey |
Product | Single line text | Dewey Decimal classification |
Looking for the full BISAC, Thema, or Dewey lists?
Ingram is not permitted to share these classification lists directly. If you'd like to look up codes or browse the full taxonomies, you can go to the source:
- BISAC subject codes are available for online viewing at bisg.org. Access is view-only — a subscription is required to download or obtain the full list.
- Thema and Dewey Decimal classifications are managed by their respective organizations, which may provide online access. Fees may apply for use of their full lists.
Audience¶
| Name | Key | Level | Type | Description |
|---|---|---|---|---|
| Audience | emersoft.audience |
Product | Single line text | Audience description |
| Audience Type | emersoft.audience_type |
Product | Single line text | Audience category (e.g. Trade, Juvenile, Young Adult, Academic) |
| Min Age | emersoft.audience_age_min |
Product | Number | Minimum target age in years (children's titles) |
| Max Age | emersoft.audience_age_max |
Product | Number | Maximum target age in years (children's titles) |
| Min Grade | emersoft.audience_grade_min |
Product | Single line text | Minimum US grade level (children's titles) |
| Max Grade | emersoft.audience_grade_max |
Product | Single line text | Maximum US grade level (children's titles) |
| Lexile Level | emersoft.lexile_level |
Product | Number | Lexile reading-level score |
Format & physical attributes¶
| Name | Key | Level | Type | Description |
|---|---|---|---|---|
| Binding | emersoft.binding |
Variant | Single line text | Binding type (e.g. Hardcover, Trade Paperback) |
| Format | emersoft.format |
Variant | Single line text | Detailed product format |
| Media Type | emersoft.media_type |
Variant | Single line text | Media type (e.g. Book, Audio, eBook) |
| Language | emersoft.language |
Product | Single line text | Language of the title |
| Pages | emersoft.pages |
Variant | Number | Page count |
| Height | emersoft.height |
Variant | Dimension | Height of the book |
| Width | emersoft.width |
Variant | Dimension | Width of the book |
| Depth | emersoft.depth |
Variant | Dimension | Spine depth of the book |
| Dimension Unit | emersoft.dimension_unit |
Variant | Single line text | Unit used for height, width, and depth (e.g. inches, cm) |
| Illustrated | emersoft.illustrated |
Variant | True / False | The title contains illustrations |
| Large Print | emersoft.large_print |
Variant | True / False | The title is a large-print edition |
| Abridged | emersoft.abridged |
Variant | True / False | The title is an abridged edition |
Publishing¶
| Name | Key | Level | Type | Description |
|---|---|---|---|---|
| Publication Date | emersoft.publication_date |
Variant | Date | Publication date of the title — used by the pre-order Shopify Flow workflow to determine when to clear Pre-order |
| Publication Date and Time | emersoft.publication_date_time |
Variant | Date and time | Same publication calendar date as Publication Date, at midnight (00:00) in your store's timezone — useful for themes and automations that need a precise datetime |
| Publication City | emersoft.publication_city |
Product | Single line text | City of publication |
| Country of Origin | emersoft.country_of_origin |
Variant | Single line text | Country where the book was published |
| Publisher | emersoft.publisher |
Variant | Single line text | Publisher name from the Ingram catalog. Stored independently of your Shopify Vendor — a bulk-import vendor override changes the Vendor field but not this metafield |
| Publisher Number | emersoft.publisher_number |
Variant | Single line text | Publisher's internal catalog number |
| Imprint ID | emersoft.imprint_id |
Variant | Single line text | Ingram's imprint identifier |
| Pre-order | emersoft.is_preorder |
Variant | True / False | true if the title had a future publication date at the time of import. Used for Smart Collections, storefront pre-order labels, and the Shopify Flow workflow that clears it on publication day |
Availability & inventory¶
| Name | Key | Level | Type | Description |
|---|---|---|---|---|
| Availability | emersoft.availability |
Variant | Single line text | Availability status from Ingram |
| Backorder Allowed | emersoft.backorder |
Variant | True / False | The title can be ordered while temporarily out of stock |
| Returnable | emersoft.is_returnable |
Variant | True / False | The title is returnable to Ingram |
| Print on Demand | emersoft.pod |
Variant | True / False | The title is print-on-demand |
| Strippable | emersoft.strippable |
Variant | True / False | The title is strippable (cover-only return) |
| Carton Quantity | emersoft.carton_quantity |
Variant | Number | Number of units packed per carton |
| Cost | emersoft.cost |
Variant | Decimal | Wholesale cost from Ingram |
Compliance & shipping¶
| Name | Key | Level | Type | Description |
|---|---|---|---|---|
| Harmonized Code | emersoft.harmonized_code |
Product | Single line text | Harmonized System (HS) code for international shipping |
| Media Mail Eligible | emersoft.media_mail |
Product | True / False | The title is eligible for USPS Media Mail rates |
| Choking Hazard | emersoft.choking_hazard |
Product | True / False | Choking hazard warning, where applicable |
App import metadata¶
The emersoft namespace records lightweight tracking data about which products the app has touched. These are all stored on the product, and are mainly used internally — you do not need to interact with them directly — but they can be useful in Smart Collections (for example, to find every product the app has ever imported).
| Name | Key | Level | Type | When set |
|---|---|---|---|---|
| Imported by App | emersoft.imported_by_app |
Product | True / False | When the product was imported through Emersoft Books |
| Import Method | emersoft.import_method |
Product | Single line text | Records how the product was imported (e.g. single import, bulk import) |
| Created At | emersoft.created_at |
Product | Date and time | Timestamp of when the app first created the product |
| Updated At | emersoft.updated_at |
Product | Date and time | Timestamp of the most recent update by the app |
Metafield definitions in Shopify Admin¶
Metafields and their definitions are created automatically by Emersoft Books. You can view them in Shopify Admin under Settings > Custom data > Products and Settings > Custom data > Product variants.
You do not need to manually create definitions for the emersoft fields. During onboarding, the Emersoft team can still help you decide which definitions to expose in Search & Discovery filters, Smart Collections, theme blocks, or custom Liquid.
Once a definition exists, the metafield can appear in Shopify Admin and can be used for Smart Collection rules, storefront filters, and theme blocks depending on Shopify's capabilities for that field type.
What you can do with metafields and tags¶
Smart Collections¶
Use any metafield or tag as a condition in a Shopify Smart Collection. Examples:
- All pre-orders: products where Pre-order is
true - Pre-orders by a specific author: combine Pre-order =
truewith an author tag - Children's books: products where Audience Type contains "Juvenile"
- Large print editions: products where Large Print is
true - Books imported by Emersoft Books: products where Imported by App is
true
Storefront filters¶
Add the free Search & Discovery app by Shopify to your store and configure it to expose emersoft metafields as filterable attributes on your collection and search pages. For example, customers can filter by binding type, language, audience type, or large print. (Variant-scoped filters use variant metafield definitions.)
Theme customization¶
Metafields of type Single line text (such as Language and Audience Type on the product, or Binding on the variant) can be displayed anywhere on your product page template using a standard Text block in the Shopify theme editor — no coding required. Add a Text block to your product template and connect it to the relevant metafield. Watch the Level column when you connect the source: product-level fields are connected to the product, and variant-level fields (such as Binding) to the variant.
More complex metafield types — single line text lists and True/False fields — require Liquid code to display. Remember the same split applies in Liquid: read product-level fields from product.metafields.emersoft.… and variant-level fields from variant.metafields.emersoft.…. The pattern for accessing these values in a Liquid template looks like this:
{% assign authors = product.metafields.emersoft.authors.value %}
{% assign illustrators = product.metafields.emersoft.illustrators.value %}
{% assign forewords = product.metafields.emersoft.forewords.value %}
{% for variant in product.variants %}
{% if variant.metafields.emersoft.is_preorder.value %}
<span class="pre-order-badge">Pre-order</span>
{% endif %}
{% endfor %}
If you need help with complex metafield display, the Emersoft team can assist during onboarding or as part of a theme customization request. See also Book Details Widget for a pre-built block that displays key book data with no setup required.