{"id":380282,"date":"2026-10-05T04:39:18","date_gmt":"2026-10-05T04:39:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/chemical-structure-search-for-woocommerce\/"},"modified":"2026-10-06T23:22:58","modified_gmt":"2026-10-06T23:22:58","slug":"branching-software-chemical-search","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/branching-software-chemical-search\/","author":23558488,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.1","stable_tag":"1.0.1","tested":"7.1.3","requires":"6.5","requires_php":"7.4","requires_plugins":null,"header_name":"Branching Software Chemical Structure Search for WooCommerce","header_author":"Branching Software LLC","header_description":"Let shoppers draw a chemical structure and find the products that match it. Exact and substructure search, powered by RDKit, rendered through your theme's own product loop.","assets_banners_color":"315b88","last_updated":"2026-10-06 23:22:58","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/branchingsoftware.com\/chemical-structure-search","header_author_uri":"https:\/\/branchingsoftware.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":257,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"branchingsoftware","date":"2026-10-05 04:38:53","revision":3728061},"1.0.1":{"tag":"1.0.1","author":"branchingsoftware","date":"2026-10-06 23:22:58","revision":3731678}},"upgrade_notice":{"1.0.1":"<p>Pasting a MOL file from ChemDraw or an electronic notebook now loads it into the\ndrawing editor instead of finding nothing.<\/p>","1.0.0":"<p>First public release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3728061,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3728061,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3728061,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3728061,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"branching-software\/chemical-structure-search":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"branching-software\/chemical-structure-search","title":"Chemical Structure Search","category":"woocommerce","icon":"search","description":"Let shoppers draw a chemical structure and find the products that match it.","keywords":["chemical","structure","molecule","smiles","search"],"textdomain":"branching-software-chemical-search","supports":{"html":false,"align":["wide","full"],"spacing":{"margin":true,"padding":true},"color":{"background":true,"text":true}},"attributes":{"limit":{"type":"number","default":200},"heading":{"type":"string","default":""},"button":{"type":"string","default":""},"columns":{"type":"number","default":0},"layout":{"type":"string","default":"grid","enum":["grid","list"]},"accent":{"type":"string","default":""},"open":{"type":"boolean","default":false}},"editorScript":"file:.\/editor.js"}},"tagged_versions":["1.0.0","1.0.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3728061,"resolution":"1","location":"assets","locale":"","width":1280,"height":900},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3728061,"resolution":"2","location":"assets","locale":"","width":1280,"height":900},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3728061,"resolution":"3","location":"assets","locale":"","width":1280,"height":1283},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3728061,"resolution":"4","location":"assets","locale":"","width":1280,"height":1173},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3728061,"resolution":"5","location":"assets","locale":"","width":1280,"height":900},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3728061,"resolution":"6","location":"assets","locale":"","width":1280,"height":900}},"screenshots":{"1":"Storefront \u2013 the search drawer: draw a structure, or type a SMILES, InChI, CAS number, catalog number or product name.","2":"Storefront \u2013 results: matching products rendered by the store's own theme, exact matches first, then everything containing the drawn structure.","3":"WooCommerce \u2192 Structure Search \u2013 Index tab: build the structure index in the browser and see the last 30 days of search activity.","4":"WooCommerce \u2192 Structure Search \u2013 Import tab: CSV import that accepts the column names suppliers already use.","5":"Product edit screen \u2013 Chemistry tab: SMILES, CAS number, molecular formula and molecular weight on every product.","6":"Product page \u2013 the structure drawing and identifiers, shown in the theme's own styling."}},"plugin_section":[],"plugin_tags":[284381,284379,164455,284380,38909],"plugin_category":[],"plugin_contributors":[278923],"plugin_business_model":[],"class_list":["post-380282","plugin","type-plugin","status-publish","hentry","plugin_tags-cas-number","plugin_tags-chemical","plugin_tags-chemistry","plugin_tags-molecule","plugin_tags-smiles","plugin_contributors-branchingsoftware","plugin_committers-branchingsoftware"],"banners":{"banner":"https:\/\/ps.w.org\/branching-software-chemical-search\/assets\/banner-772x250.png?rev=3728061","banner_2x":"https:\/\/ps.w.org\/branching-software-chemical-search\/assets\/banner-1544x500.png?rev=3728061","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/branching-software-chemical-search\/assets\/icon-128x128.png?rev=3728061","icon_2x":"https:\/\/ps.w.org\/branching-software-chemical-search\/assets\/icon-256x256.png?rev=3728061","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/branching-software-chemical-search\/assets\/screenshot-1.png?rev=3728061","caption":"Storefront \u2013 the search drawer: draw a structure, or type a SMILES, InChI, CAS number, catalog number or product name."},{"src":"https:\/\/ps.w.org\/branching-software-chemical-search\/assets\/screenshot-2.png?rev=3728061","caption":"Storefront \u2013 results: matching products rendered by the store's own theme, exact matches first, then everything containing the drawn structure."},{"src":"https:\/\/ps.w.org\/branching-software-chemical-search\/assets\/screenshot-3.png?rev=3728061","caption":"WooCommerce \u2192 Structure Search \u2013 Index tab: build the structure index in the browser and see the last 30 days of search activity."},{"src":"https:\/\/ps.w.org\/branching-software-chemical-search\/assets\/screenshot-4.png?rev=3728061","caption":"WooCommerce \u2192 Structure Search \u2013 Import tab: CSV import that accepts the column names suppliers already use."},{"src":"https:\/\/ps.w.org\/branching-software-chemical-search\/assets\/screenshot-5.png?rev=3728061","caption":"Product edit screen \u2013 Chemistry tab: SMILES, CAS number, molecular formula and molecular weight on every product."},{"src":"https:\/\/ps.w.org\/branching-software-chemical-search\/assets\/screenshot-6.png?rev=3728061","caption":"Product page \u2013 the structure drawing and identifiers, shown in the theme's own styling."}],"raw_content":"<!--section=description-->\n<p>Your catalog is searchable by name and CAS number, which works right up until\nthe buyer knows neither. They know the structure. This lets them draw it.<\/p>\n\n<p>A shopper clicks a button, draws a molecule, and gets back the products in your\ncatalog that match \u2014 either the same substance, or every product containing what\nthey drew. Draw a benzene ring and you get everything with a benzene ring in it.<\/p>\n\n<p>Results are rendered with <strong>your theme's own product template<\/strong>, so they look\nlike the rest of your shop: your prices, your badges, your add-to-cart buttons.<\/p>\n\n<h4>Who it is for<\/h4>\n\n<p>Any WooCommerce store that sells by structure: chemical suppliers and\ndistributors, reagent and laboratory supply shops, building-block and\nscreening-compound vendors, custom synthesis and research chemical sellers,\nfine chemical and pharmaceutical intermediate catalogs. If your buyers think\nin molecules, SMILES strings and CAS numbers, this gives them a search box\nthat speaks their language: chemical structure search, substructure search,\nSMILES search, CAS number lookup and plain product name search, all in one\ndrawer on your product pages.<\/p>\n\n<h4>What it does<\/h4>\n\n<ul>\n<li><strong>Exact structure search.<\/strong> Finds the same molecule however it was drawn or\nwritten. Caffeine drawn three different ways finds caffeine all three times \u2014\nand does not find theobromine, which is one methyl group away.<\/li>\n<li><strong>Substructure search.<\/strong> Finds every product containing the drawn fragment.<\/li>\n<li><strong>Similarity search.<\/strong> A checkbox that also returns the products closest to\nwhat was drawn, each scored, so a buyer who cannot find the exact compound\nis shown the nearest thing you do stock.<\/li>\n<li><strong>A drawing editor<\/strong> built into your storefront (JSME, by Peter Ertl and\nBruno Bienfait).<\/li>\n<li><strong>Chemistry fields on every product:<\/strong> SMILES, CAS number, molecular formula,\nmolecular weight \u2014 shown on the product page in your theme's own styling.<\/li>\n<li><strong>Structure images<\/strong> drawn automatically and saved as files.<\/li>\n<li><strong>CSV import<\/strong> that accepts the column names your supplier already uses.<\/li>\n<li><strong>A block and a shortcode<\/strong>, so search goes wherever you want it.<\/li>\n<\/ul>\n\n<h4>It does not slow your site down<\/h4>\n\n<p>The chemistry toolkit is large \u2014 around 10 MB between the structure editor and\nthe chemistry engine \u2014 and none of it is downloaded until a shopper actually\nclicks to open the drawing editor. A page with the search widget on it costs\nabout 11 KB of JavaScript. A page without one costs nothing at all: no scripts,\nno styles, no requests.<\/p>\n\n<p>Searching happens in the shopper's browser against a small index file, so it\nputs no load on your database however many people are searching at once.<\/p>\n\n<h4>Accurate chemistry<\/h4>\n\n<p>Matching is done by <a href=\"https:\/\/www.rdkit.org\/\">RDKit<\/a>, the standard open-source\ncheminformatics toolkit, compiled to WebAssembly. The same code canonicalises\nyour catalog when you build the index and canonicalises what the shopper draws,\nso the two are always comparable. Aromaticity, tautomers, salts, stereochemistry\nand isotopes are handled by RDKit rather than by string matching \u2014 deuterated\nsolvents stay distinct from their ordinary counterparts.<\/p>\n\n<h4>Pro version<\/h4>\n\n<p>Everything described on this page is in this plugin and stays free. A separate\nPro add-on, sold by Branching Software, adds tools for keeping a catalog's\nstructures complete and for seeing what shoppers want:<\/p>\n\n<ul>\n<li><strong>CAS to structure enrichment<\/strong> \u2014 products with a CAS number and no structure\nare looked up on PubChem in the background, and you approve each suggestion\nbefore it is saved.<\/li>\n<li><strong>SDF import<\/strong> \u2014 upload a supplier's SDF, map its fields to SKU or CAS,\npreview exactly what will change, then import.<\/li>\n<li><strong>Search demand report<\/strong> \u2014 the full report over the searches this plugin\nalready records: every structure and query, filters, a daily trend, CSV\nexport and a retention setting.<\/li>\n<\/ul>\n\n<p>The add-on installs as a second plugin and adds its tabs to this plugin's\nscreen. See https:\/\/branchingsoftware.com\/chemical-structure-search\/.<\/p>\n\n<h3>Third-party libraries<\/h3>\n\n<p>This plugin bundles two open-source libraries, both redistributed under their own\nterms with their licence files included:<\/p>\n\n<ul>\n<li><strong>RDKit<\/strong> (<code>assets\/vendor\/rdkit<\/code>), the cheminformatics toolkit that performs\nall structure matching, compiled to WebAssembly.\nBSD 3-Clause. https:\/\/www.rdkit.org\/ \u2014 source:\nhttps:\/\/github.com\/rdkit\/rdkit-js<\/li>\n<li><strong>JSME Molecule Editor<\/strong> (<code>assets\/vendor\/jsme<\/code>), the structure drawing editor,\nby Peter Ertl and Bruno Bienfait.\nBSD 3-Clause. https:\/\/jsme-editor.github.io\/ \u2014 source:\nhttps:\/\/github.com\/jsme-editor\/jsme-editor.github.io<\/li>\n<\/ul>\n\n<p>Neither library contacts any external service. Both run entirely in the\nvisitor's browser, and this plugin makes no outbound requests of its own.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin. WooCommerce 9.0 or newer must be active.<\/li>\n<li>Add SMILES structures to your products \u2014 on each product's <strong>Chemistry<\/strong> tab,\nor in bulk under <strong>WooCommerce \u2192 Structure Search \u2192 Import<\/strong>.<\/li>\n<li>Go to <strong>WooCommerce \u2192 Structure Search<\/strong> and click <strong>Build index<\/strong>. Leave the\ntab open while it runs; the chemistry runs in your browser.<\/li>\n<li>Add the <strong>Chemical Structure Search<\/strong> block to a page, or use the shortcode\n   [chemical_structure_search].<\/li>\n<\/ol>\n\n<p>Rebuild the index after changing product structures. The admin screen tells you\nwhen it has drifted.<\/p>\n\n<h4>Starting open<\/h4>\n\n<p>By default the page shows a button and the drawing editor opens when a shopper\nclicks it, so nothing chemistry-sized downloads until they do. For a page that\nexists for structure search, turn on the block's <strong>Start open<\/strong> toggle, or use\n    [chemical_structure_search open=\"yes\"]: the editor is shown immediately with\nno button. The button and heading text are the block's <strong>Button text<\/strong> and\n<strong>Heading<\/strong> fields, or <code>button=\"...\"<\/code> and <code>heading=\"...\"<\/code> on the shortcode.<\/p>\n\n<h4>Typing instead of drawing<\/h4>\n\n<p>The drawer also has one typed box. A SMILES or InChI is matched by chemistry,\nexactly as a drawing would be, and appears in the editor so it can be adjusted.\nA CAS number, a catalog number or a product name is looked up in the store's\nown product data, which means it also finds products that have a CAS number\nbut no structure yet, and works before the index has been built.<\/p>\n\n<p>The box also takes a structure off the clipboard. Paste a SMILES or an InChI\nand it is matched as typed; paste a MOL file \u2014 what ChemDraw, Signals Notebook\nand most drawing packages give you under <strong>Copy As<\/strong> \u2014 and it is loaded into\nthe drawing editor instead, ready to search or adjust. A structure copied as a\nChemDraw drawing rather than as chemistry cannot be read, and the box says so\ninstead of quietly finding nothing.<\/p>\n\n<h4>Chemistry on any page<\/h4>\n\n<p>Every product's chemistry \u2014 CAS number, molecular formula, molecular weight and\nthe structure image \u2014 is shown on the product page automatically. To put that\nsame panel anywhere else, use <code>[chemical_structure_details]<\/code>, which takes the\nproduct it is placed on, or <code>[chemical_structure_details id=\"123\"]<\/code> to name one.\nRows with nothing in them are left out.<\/p>\n\n<h4>Sizing and layout<\/h4>\n\n<p>The drawing editor fills whatever width it is given. In the block editor, use\nthe block's alignment control to make it wide or full width; the shortcode\ntakes <code>width=\"wide\"<\/code> or <code>width=\"full\"<\/code> for the same thing. With room to spare,\nthe search controls move into a column beside the editor.<\/p>\n\n<p>Results are laid out in a grid of your theme's product cards. The block's\n<strong>Results layout<\/strong> panel, or these shortcode attributes, control it:<\/p>\n\n<ul>\n<li><code>columns=\"3\"<\/code> \u2014 a fixed number of columns, 1 to 6. The default, <code>0<\/code>, fits\nas many as the space allows. Small screens always get fewer.<\/li>\n<li><code>layout=\"list\"<\/code> \u2014 one product per row, thumbnail on the left.<\/li>\n<li><code>limit=\"200\"<\/code> \u2014 the most substructure matches one search will find. Exact\nmatches are always found. Results arrive forty at a time behind a \"Load\nmore\" button however high this is set, so raising it costs the store\nnothing per request.<\/li>\n<\/ul>\n\n<p>For example: <code>[chemical_structure_search width=\"wide\" columns=\"4\"]<\/code>.<\/p>\n\n<h4>Colours<\/h4>\n\n<p><strong>WooCommerce \u2192 Structure Search \u2192 Appearance<\/strong> sets the accent colour,\npanel background, text colour and corner radius, with a live preview and your\ntheme's palette in the picker. Button text switches between white and dark on\nits own so a pale accent stays legible. The block has its own accent setting\nfor one search that should differ, and the shortcode takes\n    accent=\"#b4532a\".<\/p>\n\n<p>Beyond that, every colour and size in the drawer is a CSS custom property a\ntheme can override on <code>.chemsearch<\/code>.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20is%20smiles%3F\"><h3>What is SMILES?<\/h3><\/dt>\n<dd><p>A line notation for chemical structures \u2014 <code>CN1C=NC2=C1C(=O)N(C(=O)N2C)C<\/code> is\ncaffeine. Most catalog systems and suppliers can export it, and PubChem lists it\nfor any compound. It is the one field structure search actually needs.<\/p><\/dd>\n<dt id=\"do%20i%20have%20to%20get%20the%20smiles%20exactly%20right%3F\"><h3>Do I have to get the SMILES exactly right?<\/h3><\/dt>\n<dd><p>No. Any valid way of writing a structure works, because RDKit converts every one\nto a single canonical form before comparing. You do not have to match how anyone\nelse wrote it.<\/p><\/dd>\n<dt id=\"why%20do%20i%20have%20to%20build%20an%20index%3F\"><h3>Why do I have to build an index?<\/h3><\/dt>\n<dd><p>So that searching is instant and costs your server nothing. The index is one\nfile, built once, that shoppers download and search against in their own browser.<\/p><\/dd>\n<dt id=\"why%20does%20the%20index%20build%20happen%20in%20my%20browser%3F\"><h3>Why does the index build happen in my browser?<\/h3><\/dt>\n<dd><p>The chemistry toolkit is WebAssembly. Running it needs a browser or a Node\nprocess, and a WordPress host has neither. Building it in your browser also means\nyour catalog is canonicalised by exactly the same code that will later match\nagainst it \u2014 which is what makes exact search reliable.<\/p><\/dd>\n<dt id=\"how%20big%20a%20catalog%20does%20this%20handle%3F\"><h3>How big a catalog does this handle?<\/h3><\/dt>\n<dd><p>Comfortably into the low thousands of products. Beyond about 10 000 the index\nfile becomes large enough that it should be split into parts, which this version\ndoes not do yet.<\/p><\/dd>\n<dt id=\"will%20it%20work%20with%20my%20theme%3F\"><h3>Will it work with my theme?<\/h3><\/dt>\n<dd><p>Results are rendered by your theme's own product template, so if your shop page\nlooks right, results will too.<\/p><\/dd>\n<dt id=\"does%20it%20send%20my%20catalog%20anywhere%3F\"><h3>Does it send my catalog anywhere?<\/h3><\/dt>\n<dd><p>No. Everything runs on your site and in your shoppers' browsers. The plugin\nmakes no outbound requests at all.<\/p><\/dd>\n<dt id=\"which%20products%20end%20up%20in%20the%20public%20index%3F\"><h3>Which products end up in the public index?<\/h3><\/dt>\n<dd><p>Only products a shopper could reach by browsing: published, not\npassword-protected, and with catalog visibility \"Shop and search results\".\nHidden, draft, private and password-protected products are left out of the\nindex file and are never rendered by the results endpoint, whatever a request\nasks for. Changing a product's visibility marks the index as needing a rebuild.<\/p><\/dd>\n<dt id=\"what%20does%20the%20search%20log%20store%3F\"><h3>What does the search log store?<\/h3><\/dt>\n<dd><p>Each search stores what was asked \u2014 the drawn or typed structure as canonical\nSMILES, or the CAS number, catalog number or name that was typed \u2014 and how\nmany products matched, to the hour, and nothing about who searched: no IP\naddress, account, cookie or browser details. The same visitor repeating the\nsame search within an hour is recorded once. Rows are deleted after the\nretention period (default 90 days), the table is capped in size, and a\nsuggested privacy-policy paragraph is added under Settings \u2192 Privacy \u2192 Policy\nGuide.<\/p>\n\n<p>The Index tab shows the last 30 days: how many searches, by structure or by\nname, how many found nothing, and the five most-wanted things the catalog\ndoes not have.<\/p><\/dd>\n<dt id=\"can%20someone%20overload%20the%20search%20endpoint%3F\"><h3>Can someone overload the search endpoint?<\/h3><\/dt>\n<dd><p>Each client gets a budget of thirty searches at once and thirty a minute after\nthat, and one request renders at most forty product cards. A search that\nmatches more sends the rest a page at a time behind a \"Load more\" button, so\nno single request can ask the store to build more than forty cards however\nmany products matched. Both are filterable (<code>bscs_results_rate_limit<\/code>,\n    bscs_max_results) for stores that need more.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20i%20uninstall%3F\"><h3>What happens when I uninstall?<\/h3><\/dt>\n<dd><p>Deleting the plugin removes its settings, the search log table, its scheduled\ntasks and the index files it wrote to the uploads folder. The chemistry\nfields on your products (SMILES, CAS number, formula, weight) are left in\nplace, because they are your catalog data and you may install the plugin\nagain or export them.<\/p><\/dd>\n<dt id=\"how%20does%20the%20csv%20import%20work%3F\"><h3>How does the CSV import work?<\/h3><\/dt>\n<dd><p>Each row is matched to a product by SKU. A matching product is updated; a\nrow with a new SKU creates a simple product. The file only changes the\ncolumns it carries: a SKU and SMILES file refreshes structures and leaves\nCAS numbers, formulas, weights, names and prices as they were. The column\nnames your supplier uses are accepted (CAS No, Catalog Number, Mol Weight\nand so on). After an import the admin screen asks for an index rebuild,\nsince searching reads the index, not the products.<\/p><\/dd>\n<dt id=\"what%20about%20variable%20products%3F\"><h3>What about variable products?<\/h3><\/dt>\n<dd><p>Structures are set on the parent product, and the parent is what search returns.\nPer-variation structures are not supported.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>A MOL file pasted into the search box now goes to the drawing editor. The box\nis a single line, so the browser strips the newlines out of a pasted MOL file\nand the search could not recognise it; it was looked up as a product name and\nfound nothing. Pasting a SMILES, an InChI, a CAS number or a name is\nunchanged.<\/li>\n<li>A structure copied out of ChemDraw as a drawing rather than as chemistry is\nnow recognised, and the box asks for <strong>Copy As &gt; SMILES<\/strong> or <strong>Copy As &gt; MOL<\/strong>\ninstead of returning no results.<\/li>\n<li>Documented <code>[chemical_structure_details]<\/code>, which puts a product's CAS number,\nformula, weight and structure image on any page.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First public release on wordpress.org.<\/li>\n<li>Exact, substructure and similarity search, matched by RDKit in the\nshopper's browser against an index built in the admin. Nothing is sent\nanywhere.<\/li>\n<li>A drawing editor (JSME) in a drawer that opens on click or, with the\nblock's <strong>Start open<\/strong> toggle or <code>open=\"yes\"<\/code>, is shown immediately.<\/li>\n<li>One typed box: SMILES and InChI go to the chemistry engine; CAS numbers,\ncatalog numbers and product names are looked up in your own product data.<\/li>\n<li>Results rendered through your theme's product loop, in a grid or list,\n1 to 6 columns, wide or full width.<\/li>\n<li>Chemistry fields on every product (SMILES, CAS, formula, weight), a\nChemistry tab on the product page, and a structure image per product.<\/li>\n<li>CSV import that accepts supplier column names.<\/li>\n<li>Appearance tab: accent, panel and text colours and corner radius, with your\ntheme's palette in the picker. The block and shortcode take an <code>accent<\/code>.<\/li>\n<li>Search activity for the last 30 days on the admin screen, recorded with\nno personal data and purged after the retention period.<\/li>\n<li>Rate-limited public endpoints that only ever return products a shopper\ncould reach by browsing.<\/li>\n<\/ul>","raw_excerpt":"Draw a molecule, find the product. Structure, SMILES, CAS and name search for chemical catalogs, rendered with your own theme.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/380282","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=380282"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/branchingsoftware"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=380282"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=380282"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=380282"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=380282"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=380282"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=380282"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}