Documentation
v1.11.0 Get Bossy Pro โ†’
Free + Pro Chapter 12 ยท v1.11.0

Reference

The look-it-up chapter. Glossary, capability requirements, hook reference, file locations, URLs, and a theme compatibility matrix. Skim it for orientation, search it when you need a specific fact fast. Cross-references throughout the rest of the manual point back here.

12.1 Capability requirements

What each Bossy feature requires from WordPress user capabilities. Use this table when granting access to staff, debugging permission errors, or designing custom user roles.

Default WordPress/WooCommerce roles and their Bossy access:

  • Administrator โ€” full access to everything in Bossy, free and Pro. The only role that can save Pro Settings.
  • Shop Manager โ€” full Bulk Editor access, can use Media Manager, Import, and Danger Zone, but CANNOT save changes in the Settings tab.
  • Editor โ€” does not have edit_products by default. No Bossy access.
  • Author / Contributor / Subscriber โ€” no Bossy access.

12.2 WordPress hooks Bossy uses (for developers)

For developers, theme authors, and plugin integrators evaluating Bossy compatibility with custom stacks. These are the WordPress and WooCommerce hooks Bossy attaches to, plus the developer filter hooks you can use to customize Bossy behavior.

Activation and uninstall

register_activation_hook โ€” on plugin activation, creates the bossy_snapshots database table, sets the post-install redirect flag, and resets the variation scan notice if Pro is present.

register_uninstall_hook โ†’ bossy_uninstall_cleanup_all โ€” on plugin delete (not deactivate), drops the bossy_snapshots table and removes all Bossy options from the wp_options table.

Personalization hooks (Pro โ€” Chapter 9)

All six hooks fire only when the personalization field is enabled for a product.

  • woocommerce_before_add_to_cart_button โ€” renders the text input field on the product page (priority 25).
  • woocommerce_add_to_cart_validation โ€” blocks add-to-cart if the field is required and empty (priority 10).
  • woocommerce_add_cart_item_data โ€” saves the customer's input to cart item session data (priority 10).
  • woocommerce_get_item_data โ€” displays the saved input in the cart and checkout summary (priority 10).
  • woocommerce_checkout_create_order_line_item โ€” writes the input to order item meta when the order is placed (priority 10).
  • woocommerce_add_order_item_meta โ€” legacy fallback for older WooCommerce versions that do not fire the hook above (priority 10).
  • woocommerce_single_product_image_gallery_classes โ€” injects the bossy-gallery bossy-gallery-{layout} CSS classes onto the WooCommerce gallery wrapper on classic themes.
  • woocommerce_available_variation โ€” enriches the variation data payload with gallery attachment IDs so the JS switcher can update images on attribute change (priority 25).
  • render_block_data (block themes only) โ€” server-side class injection into the woocommerce/product-gallery block output before HTML is sent to the browser.
  • blocksy:woocommerce:product-view:attr โ€” passes the data-bossy-layout attribute into Blocksy's gallery component (priority 50).
  • blocksy:woocommerce:product-review:has-gallery-zoom-trigger โ€” disables Blocksy's built-in zoom trigger when Bossy's gallery is active (priority 50).
  • body_class โ€” adds bossy-variable-product-shell to variable product pages (priority 99).

Developer filter hooks

These apply_filters() calls are the supported extension points. Use them in your theme's functions.php or a custom plugin.

  • bossy_docs_url โ€” override the docs link Bossy shows in the admin header.
  • bossy_support_url โ€” override the support link in the admin header.
  • bossy_gallery_storefront_enabled โ€” programmatically force the gallery feature on or off regardless of the Settings toggle.
  • bossy_gallery_product_pages_enabled โ€” fine-grained gate for gallery rendering on product pages.
  • bossy_variation_gallery_max_slides_per_variation โ€” cap slides per variation gallery. Default: 12.
  • bossy_gallery_thumb_skeletons โ€” enable skeleton placeholder thumbnails while gallery loads. Default: false.
  • bossy_variation_gallery_lazy_threshold โ€” number of variations above which the lazy gallery bootstrap is used instead of inline rendering. Default: 15.
  • bossy_blocksy_woo_gallery_template โ€” point Bossy at a custom Blocksy-compatible gallery template file on non-standard stacks.
  • bossy_import_tags_replace_underscores โ€” when true, underscores in imported tag names are replaced with spaces. Default: true.
  • bossy_import_generate_subsizes โ€” when true, generates all registered thumbnail sizes on import sideload (slower; uses more server resources). Default: false.
  • bossy_import_block_private_hosts โ€” blocks sideload requests to private/local hostnames. Default: true. Disable only if importing from an internal server.
  • bossy_import_block_private_resolved_ips โ€” also block URLs that resolve to private IPs (SSRF protection). Default: false.
  • bossy_import_media_inline_max_items โ€” maximum media items to process inline during a single import chunk request. Default: 25.
  • bossy_import_http_request_timeout โ€” HTTP timeout in seconds for media sideload requests. Default: 30. Range: 5โ€“90.
  • bossy_import_media_max_attempts โ€” maximum retry attempts per media URL in the background queue. Default: 3.
  • bossy_pro_variation_create_chunk_size โ€” Pro number of variations Generate All Variations creates per AJAX request before looping to the next chunk. Default: 50.
  • bossy_pro_generate_all_variations_cap โ€” Pro upper bound (ceiling) on the per-request create-chunk size. Generation is chunked with no total-combination cap; this only clamps how large a single chunk may go. Default: 200.
  • bossy_pro_generate_all_trash_obsolete_variations โ€” Pro when true, stale variations whose attribute combination no longer exists are auto-trashed during generation. Default: true.
  • bossy_pro_generate_all_preserve_variation_fields โ€” Pro when true, price/SKU/stock/image data is transferred to matching regenerated variations. Default: true.

12.3 AJAX endpoint reference

Bossy registers WordPress AJAX actions (wp_ajax_{action} for logged-in users). All actions verify the bossy_nonce nonce and check edit_products capability. Undo restore actions also check edit_post per item. Three gallery endpoints register wp_ajax_nopriv_{action} as well so they fire for logged-out shoppers on the storefront.

Core endpoints (Free + Pro)

  • bossy_load โ€” load the product grid (paginated, with filters).
  • bossy_save โ€” save inline field edits for one product.
  • bossy_undo_list โ€” fetch the snapshot list for the undo bar (up to 40 active batches).
  • bossy_undo_restore โ€” restore a snapshot batch (locked, verified, partial-aware).
  • bossy_undo_snapshot_capture โ€” capture-up-front: snapshot the full before-state of an action in one request and return the batch ID; the write then runs prebatched so it does not re-snapshot.
  • bossy_undo_chunk_begin โ€” open a chunked undo batch and return a token, so the many writes from a single save can be grouped together.
  • bossy_undo_chunk_commit โ€” commit the chunked batch into one snapshot row, producing a single undo entry per save (parent + variations grouped) instead of one entry per field.
  • bossy_undo_chunk_abort โ€” discard a chunked batch without writing a snapshot.
  • bossy_save_var_fields โ€” save variation inline field edits (price, stock, SKU, etc.).
  • bossy_save_var_image โ€” save a variation's main image.
  • bossy_save_var_gallery โ€” save a variation's gallery (image set).
  • bossy_delete_variation โ€” remove a single variation card.
  • bossy_trash_product โ€” trash one product.
  • bossy_trash_products โ€” trash multiple selected products (bulk).
  • bossy_apply_price โ€” bulk price action.
  • bossy_apply_sale_dates โ€” bulk sale dates action.
  • bossy_apply_package โ€” bulk package / bundle settings.
  • bossy_apply_dimensions โ€” bulk dimensions (weight, L/W/H).
  • bossy_apply_stock_qty โ€” bulk stock quantity.
  • bossy_apply_schedule_publish โ€” bulk schedule publish date.
  • bossy_apply_short_from_long โ€” auto-generate short description from long description.
  • bossy_apply_sku_scheme โ€” bulk SKU scheme assignment.
  • bossy_apply_cats โ€” bulk categories.
  • bossy_apply_tags โ€” bulk tags.
  • bossy_apply_shipping โ€” bulk shipping class.
  • bossy_apply_featured โ€” bulk set/unset Featured flag. (New in 1.11.0)
  • bossy_apply_menu_order โ€” bulk menu-order value. (New in 1.11.0)
  • bossy_apply_tax_class โ€” bulk tax class. (New in 1.11.0)
  • bossy_change_product_type โ€” change product type (simple โ†” variable).
  • bossy_variation_gallery_payload โ€” variation gallery attachment data for the storefront switcher. Also registered as nopriv (fires for logged-out shoppers).
  • bossy_variation_gallery_flexy_batch โ€” Flexy classic-theme gallery batch render. Also nopriv.
  • bossy_variation_gallery_bootstrap โ€” lazy gallery HTML fetch for products above the 15-variation threshold. Also nopriv.

Pro-only endpoints

  • bossy_apply_find_replace โ€” find & replace in text fields across selected products.
  • bossy_export_csv โ€” export selected products as a Bossy-format CSV.
  • bossy_clone_products โ€” clone selected products.
  • bossy_pro_add_variation_with_attribute โ€” submit the Add Variation inline form; creates the attribute value and generates cartesian combinations.
  • bossy_pro_generate_all_variations โ€” generate all variations for a product, chunked: creates up to the chunk size (default 50) per call and is called repeatedly by the JS runner until every combination exists. All passes commit to one grouped undo batch, and existing combinations are skipped or updated in place rather than duplicated.
  • bossy_media_load โ€” load the Media Manager attachment grid.
  • bossy_media_save โ€” save edits to a single attachment.
  • bossy_media_save_batch โ€” batch-save attachment edits (80 per batch).
  • bossy_media_rename_exclusive โ€” rename an attachment filename with collision detection.
  • bossy_media_save_attachment_meta โ€” save alt text and other attachment metadata.
  • bossy_import_parse_csv โ€” parse an uploaded CSV, detect source profile (Etsy, generic, etc.), and return column preview.
  • bossy_import_run โ€” run one import chunk (15 rows); called repeatedly by the JS runner until the file is consumed.
  • bossy_import_media_run โ€” drain the background media download queue for one batch.
  • bossy_import_save_preset โ€” save a column mapping preset for reuse.

Non-AJAX: admin_post_bossy_import_clear_media_diag โ€” clears the media diagnostics log (standard form POST, not AJAX).

Variations tab endpoints (Pro)

  • bossy_load_variations โ€” load the Variations tab flat grid (all variations across the catalog).
  • bossy_apply_var_price โ€” bulk variation price. Undo label: bulk_apply_var_price.
  • bossy_apply_var_stock_qty โ€” bulk variation stock quantity. Undo label: bulk_apply_var_stock.
  • bossy_apply_var_shipping โ€” bulk variation shipping class and dimensions. Undo label: bulk_apply_var_shipping.
  • bossy_apply_var_sale_dates โ€” bulk variation sale price and dates. Undo label: bulk_apply_var_sale_dates.
  • bossy_apply_var_image โ€” bulk variation main image. Undo label: bulk_apply_var_image.
  • bossy_apply_var_gallery_replace โ€” bulk variation gallery replace, chunked (25 variations per chunk, max 500 per operation). Undo label: bulk_apply_var_gallery_replace.
  • bossy_add_variation โ€” add a blank variation from the Variations tab (distinct from bossy_pro_add_variation_with_attribute used in the inline form).

Undo labels above are the action strings stored in the bossy_snapshots table. They appear in the undo bar dropdown as the batch name for each Variations tab bulk operation.

12.4 Database schema

Bossy creates one custom table on activation. All other Bossy data lives in WordPress core tables (postmeta, options, term relationships).

Table: {$wpdb->prefix}bossy_snapshots (typically wp_bossy_snapshots)

Payload format: versioned JSON object โ€” { v: 1, items: [...] } where each item contains an entity type (attachment, product, variation, etc.) and the full before-state for that entity.

Retention behavior:

  • 50 batches per user per blog (Chapter 7.2 truth #1)
  • Undo list endpoint returns up to 40 active (not-restored) batches by default
  • Restored batches stay in the table until they age out of the 50-batch quota
  • Plugin uninstall drops the table and removes all Bossy options

12.5 Bossy import template โ€” column reference

The Bossy template is a 58-column CSV available via the Download Bossy template button on the Import tab. The columns below are the exact headers in the template file (templates/bossy-import-template.csv), in order.

โ„น๏ธ
Columns 54โ€“58 (bossy_var_gallery and the bossy_custom_* fields) are Bossy-native. No other WooCommerce importer can consume these columns because the underlying features โ€” variation galleries and customer personalization โ€” do not exist outside Bossy.

Product Core (cols 1โ€“4): id, type, sku, parent_sku

id โ€” WordPress post ID. Provide to update an existing product; leave blank to create new. type โ€” simple, variable, variation, external, or grouped. sku โ€” WooCommerce SKU (must be unique). parent_sku โ€” for variation rows: the SKU of the parent variable product.

Product Identity (cols 5โ€“9): name, slug, status, featured, catalog_visibility

status โ€” publish / draft / private. featured โ€” yes/no. catalog_visibility โ€” visible / catalog / search / hidden.

Pricing (cols 10โ€“15): regular_price, sale_price, date_on_sale_from, date_on_sale_to, tax_status, tax_class

Dates use YYYY-MM-DD format. tax_status โ€” taxable / shipping / none.

Inventory (cols 16โ€“21): manage_stock, stock_qty, stock_status, backorders, low_stock_amount, sold_individually

stock_status โ€” instock / outofstock / onbackorder. backorders โ€” no / notify / yes. Boolean fields use yes/no.

Shipping (cols 22โ€“27): shipping_class, weight, length, width, height, reviews_allowed

Dimensions use your store's configured unit. shipping_class accepts a slug or name.

Content (cols 28โ€“31): categories, tags, description, short_description

categories and tags are comma-separated. HTML is accepted in description fields.

Misc / Admin (cols 32โ€“33): purchase_note, virtual

Digital Products (cols 34โ€“37): downloadable, downloads, download_limit, download_expiry

downloads โ€” pipe-separated list of file URLs. download_expiry โ€” days; -1 for never.

Linked Products / External (cols 38โ€“42): external_url, button_text, upsells, cross_sells, grouped_products

upsells, cross_sells, grouped_products โ€” comma-separated SKUs of linked products.

Media (cols 43โ€“44): image_url, variation_image_url

image_url โ€” comma-separated URLs or attachment IDs; first becomes the featured image, remainder become the gallery. variation_image_url โ€” variation rows only: the main image for this variation.

Variation Attributes (cols 45โ€“48): var_attr_1_name, var_attr_1_value, var_attr_2_name, var_attr_2_value

For variation rows: the attribute name (e.g. Color) and value (e.g. Red) that identify this specific variation. Supports up to 2 attribute pairs in the template; the import UI's mapping supports up to 10.

Product Attributes (cols 49โ€“53): attr_1_name, attr_1_values, attr_1_visible, attr_1_global, attr_1_default

attr_1_values โ€” pipe-separated list of all values. attr_1_visible โ€” yes/no. attr_1_global โ€” yes/no (taxonomy vs. custom attribute). attr_1_default โ€” the value pre-selected on the product page. The template includes one attribute column set; the mapping UI supports up to 10.

Bossy Extras (cols 54โ€“58 โ€” Bossy-native, Pro only): bossy_var_gallery, bossy_custom_enabled, bossy_custom_required, bossy_custom_label, bossy_custom_placeholder

bossy_var_gallery โ€” variation rows only: comma-separated image URLs or attachment IDs for the variation's gallery. bossy_custom_enabled / bossy_custom_required โ€” yes/no. bossy_custom_label / bossy_custom_placeholder โ€” the text shown to shoppers on the product page personalization field.

The five gallery layouts available in the Settings tab. The UI name is what you see in the dropdown; the internal slug is used by filter hooks and CSS classes (bossy-gallery-{slug}). The description is what each layout produces on the product page.

UI nameInternal slugLayout description
ClassiceditorialMain image above, thumbnails in a row below. Default layout.
Side LeftledgeThumbnail rail on the left, main image to the right.
Side Rightledge-reverseThumbnail rail on the right, main image to the left.
FilmstripfilmstripHorizontal scrolling strip of thumbnails below the main image. Uses WooCommerce Interactivity API on block themes.
Tiled CollagequiltGrid/mosaic layout showing multiple images simultaneously without a main-plus-thumbs hierarchy.

Classic (editorial) is the fallback if the stored layout slug is invalid or the Settings toggle is off. On classic themes, all five layouts are delivered via the Flexslider + Flexy adapter stack. On block themes (Twenty Twenty-Five and other FSE themes), the block-gallery adapter injects layout classes server-side via the render_block_data filter.

12.7 Theme compatibility status

Bossy has been actively tested against five themes. Other WooCommerce-compatible themes generally work โ€” see Chapter 6.7 for the full cross-theme architecture notes.

ThemeTypeNotes
StorefrontClassicOfficial WooCommerce theme. Full support via Flexslider + Flexy adapter.
AstraClassicFull support via Flexslider + Flexy adapter.
KadenceClassicFull support via Flexslider + Flexy adapter.
BlocksyClassicFull support. Bossy integrates directly with Blocksy's Flexy gallery component via the blocksy:woocommerce:product-view:attr filter.
Twenty Twenty-FiveBlock (FSE)Full support via the block-gallery adapter. Server-side class injection via render_block_data; Filmstrip uses WooCommerce Interactivity API.
โ„น๏ธ
Bossy admin features (Bulk Editor, Media, Import, Variations) work with any WooCommerce-compatible theme โ€” they run entirely inside WP admin. The storefront gallery features in Pro are the only place where theme template overrides can cause conflicts.

12.8 URLs and resources

Both the docs URL and support URL are filterable by developers via bossy_docs_url and bossy_support_url (see section 12.2).

12.9 Glossary

Plain-English definitions of terms used throughout this manual.

Bulk action

An operation that affects multiple selected products at once. Run from the control deck panels in the Bulk Editor.

Control deck

The stack of bulk action panels above the Bulk Editor grid. Each panel handles one type of bulk operation (price, tags, etc.).

Dirty row

A row in the grid with unsaved inline edits. Visually marked. The Save All Changes count tracks dirty rows.

Drag-source strip / image pool

The sticky image strip in the variation panel containing images attached to the current product. Used as a drag source for drag-and-drop image assignment to variations.

Etsy SKU Fixer

Free browser tool at bossyplugins.com/tools that cleans up Etsy CSV exports with sequential SKUs before import.

Featured (column / bulk action)

WooCommerce's Featured flag, surfaced in 1.11.0 as a grid column with a star toggle (hollow = off, filled yellow = on) and a matching Bulk Featured panel with Set / Unset actions. Featured products are what many themes pull into featured blocks and the [featured_products] shortcode.

Floating Save All dock

A second Save All button that appears in the corner of the screen when you scroll the main toolbar out of view and have unsaved changes. Stays synchronized with the toolbar Save All.

Force overwrite generated SKU

Import option that ignores SKUs in your CSV entirely and generates fresh sequential SKUs for every row.

Generate missing SKUs

Import option that fills in blank SKU cells with generated sequential SKUs. CSV rows with existing SKUs are left alone.

LQS (Listing Quality Score)

Term used in Etsy context โ€” relevant for Etsy migration discussions in Chapter 5.

Mapping preset

A saved CSV import column mapping that can be loaded for future imports of similar files. Saves manual mapping work on repeat imports.

Master switch (Settings)

The "Use Bossy gallery on product pages" toggle in the Settings tab. The most important toggle in Chapter 6.

Menu order

WooCommerce's manual sort weight for products (lower sorts first), added in 1.11.0 as a grid column and a Bulk Menu Order panel. Only affects the visible order when the shop or category is set to Custom / Default sorting.

parent_sku

A CSV column that variation rows use to explicitly point to their parent product's SKU. Recommended way to link variations to parents during import (Chapter 5.13).

Personalization

Shopper-typed text input on a product page that travels with the order to fulfillment. Four fields per product: On checkbox (enables personalization), Req checkbox (makes it mandatory), Label, and Placeholder. The column picker exposes these via three toggles โ€” Custom Field (contains On + Req), Label, and Placeholder. See Chapter 9.

Resume image sync

Import recovery button that picks up image attachment from where an interrupted import left off, without re-importing product data.

Sheet toolbar

The control row sitting above the product grid containing search, filters, Save All Changes, Undo Changes, status indicator, and column picker.

SKU collision

When two products attempt to use the same SKU. WooCommerce requires unique SKUs. Most common cause of failed saves, failed imports, and failed undo restores.

Snapshot / batch

A record in the bossy_snapshots table capturing the before-state of every item touched by a Bossy operation. Used for the undo system.

Source profile (Import)

Bossy's detection of what kind of CSV you uploaded (Etsy, generic, etc.). Suggests which Auto-map button to use.

Sticky variation header

The header at the top of the variation panel that stays visible while scrolling through long variation lists. Contains variation count, search, Add Variation (Pro), and Expand/Collapse All.

Tax class

The WooCommerce tax class that decides which tax-rate table applies at checkout (Standard plus any custom classes). Added in 1.11.0 as a grid column and a single-action Bulk Tax Class panel.

Trash (grid trash)

Bossy's selection-based product trash action (Chapter 2.9). Select rows, then use the toolbar "Trash selected" button or the floating dock button that appears when the toolbar is scrolled out of view. Moves products to WordPress Trash (recoverable). Never permanently deletes.

Undo bar

The snapshot list at the top of the Bulk Editor and Media Manager. Shows recent snapshots and lets you restore them.

Variations tab

A Pro-only tab in Bossy showing every product_variation in the catalog as a flat, filterable list. Supports attribute filtering (by Color, Size, etc. across the entire catalog) and variation-specific bulk actions (price, stock, sale dates, image, gallery, shipping). Documented in Chapter 13.

Variable product / Variation

A WooCommerce product type where one parent product has multiple variations (different sizes, colors, etc.). Bossy expands variations inline in the grid.

Variation gallery

A set of images specifically tied to one variation. Pro feature. Shown on the storefront when a shopper selects that variation's attribute combination.

12.10 Import performance benchmarks

Measured on Bluehost Basic shared hosting โ€” destructive import tests (full wipe, then re-import). Product success rate was 100% at all sizes. Image success rate at 10,000 was 99.94% (remainder recoverable via Resume image sync).

Performance on VPS, managed WordPress, or cloud hosting will be faster. The bottleneck at scale is server resources (CPU, RAM, PHP workers, MySQL), not Bossy logic.

12.11 Shared hosting performance architecture

Bossy is not a plugin that tolerates shared hosting โ€” it is a plugin designed for it. Every mechanism that touches time, memory, or network was built with a 30-second PHP max_execution_time and a single-threaded MySQL in mind. Here is what that looks like in practice.

Chunked CSV import

The CSV importer never tries to process an entire file in one request. It works in chunks of 15 rows per HTTP round-trip. If a chunk fails due to a network hiccup, it halves the chunk size (down to a minimum of 5 rows) and retries up to three times with exponential backoff before flagging the row as failed. When images are causing timeouts, a media safe mode is available that skips image attachment for the run and lets you sync images separately afterward via Resume image sync.

Deferred media queue

Image downloads during import do not happen inline. URLs go into a queue backed by a transient with a 6-hour TTL. A background processor โ€” WooCommerce Action Scheduler when available, wp_cron otherwise โ€” drains the queue in adaptive batches: it starts at 10 images per batch, grows to 20 when batches complete cleanly, and drops to 2 when one fails. Each URL gets up to three retry attempts; after the third, it is cached as failed for 30 minutes before being eligible again. The queue is bounded: at most 25 items flush inline per page request, and the system caps queue depth to prevent unbounded memory growth. This is why image sync continues working correctly even on hosts that kill long-running processes mid-import.

Import sideload optimization

When Bossy downloads and attaches an image during import, it skips generating intermediate thumbnail sizes that are not needed for the import itself. It also disables WordPress's "big image" downscaling step that normally fires on every upload. Both optimizations are controllable by developers via filter hooks if your workflow requires them. The net effect is roughly 40โ€“60% less server time per image on typical setups. Per-request static caching for attachment ID lookups prevents redundant database queries when the same image URL appears across multiple products or variations.

Paginated bulk editor grids

The bulk editor loads 50 products per page by default (the Variations tab caps at 100 rows for the same reason). You can change the page size in Settings, but 50 is the tested sweet spot for shared hosting. Search is debounced so typing does not fire a query on every keystroke, and if you change a filter or page before the previous request finishes, the in-flight request is aborted rather than queued behind it.

Bounded bulk writes

Bossy limits concurrent outbound saves to 4 at a time, regardless of how many rows are selected. The media manager processes images in batches of 80. Variation gallery writes chunk at 25 variations per pass with a ceiling of 500 variations per operation. Undo snapshots are pruned to the last 50 per user automatically, so the snapshot table does not grow without bound on large catalogs. These ceilings exist specifically because shared hosts have low MySQL connection limits and per-process memory caps.

Lazy variation galleries

For products with 15 or more variations, Bossy does not load variation gallery HTML in the initial page render. Instead it sends only a list of attachment IDs and a flag telling the browser to fetch the rendered gallery HTML in the background โ€” in batches of 8 variations per request โ€” after the page is already interactive. The rendered HTML for each variation's gallery is cached server-side for 24 hours, so repeat page loads (or the next shopper) get the cached version instantly. Slides per gallery are capped at 12. On a product with 50 variations, this approach avoids generating and transmitting ~50 gallery HTML blocks on every page load.

Frontend rendering discipline

The storefront-side scripts Bossy loads (gallery, variation switcher) are written in vanilla JavaScript โ€” no jQuery dependency on the front end. Critical layout CSS ships in the <head> so the gallery never causes a layout shift as the page loads. Variation image maps are computed once and memoized rather than recalculated on every attribute change. Script loading uses single-enqueue guards so the same asset cannot be registered twice by competing hooks.

Transient-backed session state

Import sessions โ€” which row the importer is on, which SKUs have been seen, which media URLs are queued, which parent products have been created โ€” are stored in WordPress transients with scoped keys and automatic expiration. Nothing lives in PHP memory across requests. This means you can close the browser mid-import, come back hours later, and Resume from where it stopped โ€” the state survives because it was never in the process, it was always in the database.

Chapter 12 recap

  • Capability requirements: edit_products for all admin features, manage_options for saving Pro Settings, delete_post for trash and undo restore.
  • Bossy uses 5 standard WooCommerce hooks for personalization plus 1 legacy fallback hook.
  • All AJAX endpoints check nonce + capability + per-product permissions where relevant.
  • One custom database table (bossy_snapshots) holds the undo data. Dropped on plugin delete.
  • The Bossy import template has 58 columns covering every WooCommerce product field plus bossy_var_gallery and the four personalization columns โ€” the only WooCommerce import format that includes these Bossy-specific fields. See section 12.5 for the full column reference.
  • Five gallery layouts: Classic (default), Side Left, Side Right, Filmstrip, Tiled Collage. Names shown in Settings UI; internal slugs map to editorial/ledge/ledge-reverse/filmstrip/quilt.
  • Bossy is specifically engineered for shared hosting: 15-row chunked CSV import with adaptive retry, deferred media queue with Action Scheduler, lazy variation galleries above 15 variations, 4-concurrent save cap, and transient-backed session state that survives a closed browser mid-import.
  • Free + Pro both keep all your data โ€” Bossy never modifies WooCommerce's own tables.