{"id":353088,"date":"2026-08-19T16:48:13","date_gmt":"2026-08-19T16:48:13","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/submittal-spec-sheet-builder\/"},"modified":"2026-08-20T01:17:55","modified_gmt":"2026-08-20T01:17:55","slug":"submittal-spec-sheet-builder","status":"publish","type":"plugin","link":"https:\/\/cn.wordpress.org\/plugins\/submittal-spec-sheet-builder\/","author":12477640,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.6","stable_tag":"1.1.6","tested":"7.1","requires":"6.2","requires_php":"8.1","requires_plugins":null,"header_name":"Submittal & Spec Sheet Builder","header_author":"Webstuffguy Labs","header_description":"Generate professional submittal and spec sheet PDFs with branding, optional cover pages, and product specification sheets. Perfect for construction submittals and complex product catalogs - serve contractors, distributors, equipment suppliers, and any B2B business with hundreds of SKUs.","assets_banners_color":"192135","last_updated":"2026-08-20 01:17:55","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/webstuffguylabs.com\/plugins\/submittal-spec-sheet-builder\/","header_author_uri":"https:\/\/webstuffguylabs.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":66,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1.5":{"tag":"1.1.5","author":"webstuffguy","date":"2026-08-19 16:47:46"},"1.1.6":{"tag":"1.1.6","author":"webstuffguy","date":"2026-08-20 01:17:55"}},"upgrade_notice":{"1.1.6":"<p>Fixes a bug that could leave the Review step empty after a reload, with Generate PDF disabled and no way to finish your packet. Also corrects specification labels that printed abbreviations like UL as &quot;Ul&quot; in generated PDFs.<\/p>","1.1.5":"<p>Requires WordPress 6.2+ and PHP 8.1+. Updates the bundled PDF libraries, including a dompdf security release. Generated PDFs and backups move to new uploads folders with randomized filenames; links you already shared keep working. Front-end packets are now limited to 100 products by default.<\/p>","1.1.4":"<p>Fixes two Settings controls that did nothing: local autosave now takes effect, and remove-data-on-uninstall can now be enabled. Also stops the Branding and Settings pages from resetting each other&#039;s fields, removes a redundant bundled PDF library, and hardens PDF output.<\/p>","1.1.1":"<p>Fixes an unclosed output buffer in the PDF generation endpoint. No user-facing changes.<\/p>","1.1.0":"<p>Hardens REST API permission checks. Previously public diagnostic endpoints now require admin capabilities. No user-facing changes for legitimate use.<\/p>","1.0.9":"<p>Removes unused vendor library and tightens naming-convention compliance for WordPress.org review. No user-facing changes.<\/p>","1.0.8":"<p>Moves admin-page inline CSS\/JS into admin_enqueue_scripts hooks for reliable enqueuing. No user-facing changes.<\/p>","1.0.7":"<p>Removes legacy licensing\/telemetry code and plugin attribution links to comply with WordPress.org Plugin Directory Guidelines. No functional changes for free-tier users.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3655054,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3655054,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3655054,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3655054,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1.5","1.1.6"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3655054,"resolution":"1","location":"assets","locale":"","width":1600,"height":1123},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3655054,"resolution":"2","location":"assets","locale":"","width":1600,"height":1000},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3655054,"resolution":"3","location":"assets","locale":"","width":1600,"height":1330},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3655596,"resolution":"4","location":"assets","locale":"","width":1600,"height":641},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3655596,"resolution":"5","location":"assets","locale":"","width":1280,"height":1635},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3655596,"resolution":"6","location":"assets","locale":"","width":1280,"height":1635},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3655054,"resolution":"7","location":"assets","locale":"","width":1600,"height":899},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3655054,"resolution":"8","location":"assets","locale":"","width":1600,"height":899},"screenshot-9.png":{"filename":"screenshot-9.png","revision":3655054,"resolution":"9","location":"assets","locale":"","width":1600,"height":899}},"screenshots":{"1":"Product browser \u2013 browse catalog by category and specification.","2":"Selection step \u2013 add items to submittal with live count and visual feedback.","3":"Review screen \u2013 confirm selections, set quantities, and add project details before generating.","4":"Generated PDF \u2013 cover page followed by a spec sheet for each selected product.","5":"Branded cover \u2013 automatically styled with your logo and company details.","6":"Product sheet \u2013 includes detailed specification fields for compliance.","7":"Catalog builder \u2013 manage product hierarchy inside WordPress.","8":"Custom fields \u2013 define the specification fields your models use, with presets for HVAC, Electrical, Plumbing, and Steel.","9":"Add categories, types, and models inline while building out the catalog."}},"plugin_section":[],"plugin_tags":[2777,806,1764,276545,276544],"plugin_category":[50],"plugin_contributors":[276546],"plugin_business_model":[],"class_list":["post-353088","plugin","type-plugin","status-publish","hentry","plugin_tags-catalog","plugin_tags-construction","plugin_tags-pdf","plugin_tags-spec-sheets","plugin_tags-submittals","plugin_category-media","plugin_contributors-webstuffguy","plugin_committers-webstuffguy"],"banners":{"banner":"https:\/\/ps.w.org\/submittal-spec-sheet-builder\/assets\/banner-772x250.png?rev=3655054","banner_2x":"https:\/\/ps.w.org\/submittal-spec-sheet-builder\/assets\/banner-1544x500.png?rev=3655054","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/submittal-spec-sheet-builder\/assets\/icon-128x128.png?rev=3655054","icon_2x":"https:\/\/ps.w.org\/submittal-spec-sheet-builder\/assets\/icon-256x256.png?rev=3655054","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/submittal-spec-sheet-builder\/assets\/screenshot-1.png?rev=3655054","caption":"Product browser \u2013 browse catalog by category and specification."},{"src":"https:\/\/ps.w.org\/submittal-spec-sheet-builder\/assets\/screenshot-2.png?rev=3655054","caption":"Selection step \u2013 add items to submittal with live count and visual feedback."},{"src":"https:\/\/ps.w.org\/submittal-spec-sheet-builder\/assets\/screenshot-3.png?rev=3655054","caption":"Review screen \u2013 confirm selections, set quantities, and add project details before generating."},{"src":"https:\/\/ps.w.org\/submittal-spec-sheet-builder\/assets\/screenshot-4.png?rev=3655596","caption":"Generated PDF \u2013 cover page followed by a spec sheet for each selected product."},{"src":"https:\/\/ps.w.org\/submittal-spec-sheet-builder\/assets\/screenshot-5.png?rev=3655596","caption":"Branded cover \u2013 automatically styled with your logo and company details."},{"src":"https:\/\/ps.w.org\/submittal-spec-sheet-builder\/assets\/screenshot-6.png?rev=3655596","caption":"Product sheet \u2013 includes detailed specification fields for compliance."},{"src":"https:\/\/ps.w.org\/submittal-spec-sheet-builder\/assets\/screenshot-7.png?rev=3655054","caption":"Catalog builder \u2013 manage product hierarchy inside WordPress."},{"src":"https:\/\/ps.w.org\/submittal-spec-sheet-builder\/assets\/screenshot-8.png?rev=3655054","caption":"Custom fields \u2013 define the specification fields your models use, with presets for HVAC, Electrical, Plumbing, and Steel."},{"src":"https:\/\/ps.w.org\/submittal-spec-sheet-builder\/assets\/screenshot-9.png?rev=3655054","caption":"Add categories, types, and models inline while building out the catalog."}],"raw_content":"<!--section=description-->\n<p><strong>Submittal &amp; Spec Sheet Builder<\/strong> helps manufacturers, suppliers, contractors, and distributors create professional submittal packets and product spec sheets in minutes \u2014 right inside WordPress.<\/p>\n\n<p>Whether you're creating construction submittals or managing a complex product catalog with thousands of SKUs (landscape supplies, industrial fasteners, equipment, flooring, etc.), this plugin lets customers browse your catalog and build their own spec sheets.<\/p>\n\n<p>Forget clunky spreadsheets and manual formatting. With this plugin you can:<\/p>\n\n<ul>\n<li>Organize products into categories, types, and models (handle hundreds or thousands of SKUs)<\/li>\n<li>Let visitors select items and instantly <strong>generate polished PDF packets<\/strong><\/li>\n<li>Add your company logo, brand colors, and contact info automatically<\/li>\n<li>Have visitors name their project on the review screen and see it on the packet cover page<\/li>\n<li>Get an optional branded cover page, plus a spec sheet for each selected product<\/li>\n<\/ul>\n\n<h3>Key Features<\/h3>\n\n<ul>\n<li>\ud83e\udde9 <strong>Visual Builder:<\/strong> Browse by category \u2192 product \u2192 type \u2192 model, with inline specifications.<\/li>\n<li>\ud83e\uddfe <strong>PDF Generation:<\/strong> An optional branded cover page followed by one spec sheet per selected product.<\/li>\n<li>\ud83c\udfa8 <strong>Branding Tools:<\/strong> Add your logo, company details, accent color, PDF theme, and cover page for consistent presentation.<\/li>\n<li>\ud83d\udce6 <strong>Product Catalog Manager:<\/strong> Manage all product data inside WordPress \u2014 no developer needed.<\/li>\n<\/ul>\n\n<blockquote>\n  <p>Fast, flexible, and built for the real world \u2014 ideal for construction professionals creating submittals, distributors with complex catalogs (landscape supplies, industrial parts, equipment), and any B2B business with hundreds of products that need professional spec sheets.<\/p>\n<\/blockquote>\n\n<h3>Privacy<\/h3>\n\n<p>This plugin stores all data locally in your WordPress database. Product catalog entries, branding settings, and generated PDFs all stay on your site: none of it is sent to the plugin author, to an analytics or telemetry service, or to any outside processing service. The one outbound request the plugin can make is described at the end of this section \u2014 while a PDF renders, an image you configured (such as your Media Library logo) is fetched by URL from your own site or uploads location.<\/p>\n\n<p>Visitor selections are held in the browser while the visitor browses and reviews. Submittal Builder &gt; Settings has a \"Enable local autosave\" switch: when it is on, a visitor's selections are kept in their own browser's local storage so a reload does not lose their work; when it is off, the plugin writes nothing to local storage and selections last only for the current visit. Browsing and reviewing alone create no draft, record, or database entry on the server.<\/p>\n\n<p>Generating a PDF is different, because a file has to be produced. When a visitor clicks Generate, the project name, the products they selected, and the specification values and per-item notes attached to those products are rendered into the PDF, and that PDF is saved on your server under your WordPress uploads folder (wp-content\/uploads\/sssb\/). It stays there until you delete it. The selections are still not written to the database as a separate record \u2014 the generated PDF is the copy that persists.<\/p>\n\n<p>Each generated PDF is given a randomized, unpredictable filename, so its URL cannot be guessed or arrived at by trying likely project names and dates. It is still an ordinary file in your uploads folder, served like any other upload: anyone holding the link can open it, and no login is required to do so. Treat the link as the credential, and delete old packets you no longer want available.<\/p>\n\n<p>The same Settings page has a \"Remove all plugin data when uninstalling\" switch. It is off by default, so deleting the plugin leaves your branding settings, catalog tables, and generated PDFs in place. Turn it on if you want deleting the plugin to remove them.<\/p>\n\n<p>IP addresses are never stored in plain text. Where an IP address is needed for request rate limiting, only a hashed value is kept.<\/p>\n\n<p>The plugin does not include any analytics or telemetry, sends nothing to the plugin author, performs no remote license validation, and never transmits your catalog, branding, or a visitor's selections to any outside service. PDF generation runs entirely on your own server using a bundled, GPL-compatible PDF library (Dompdf, LGPL). The one outbound request the plugin can make is while building a PDF: images you configured, such as the company logo you picked from your Media Library, are fetched by URL. Those requests are restricted to your own site's address and your WordPress uploads location, so if a plugin or CDN serves your media from another host, that host is included; no other destination is permitted, and nothing a site visitor submits can add one.<\/p>\n\n<p>Project-level notes are a separate case worth stating plainly: the review screen offers a project notes field, and the free plugin does not render it into the generated PDF. It is held in the visitor's browser alongside their selections and is not saved to your database.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin ZIP via Plugins &gt; Add New &gt; Upload Plugin, then activate it.<\/li>\n<li>Create a new page and add the shortcode <code>[sssb_builder]<\/code>.<\/li>\n<li>Configure branding under Submittal Builder &gt; Branding (logo, company details, accent color, PDF theme).<\/li>\n<li>Add or import your products on the Submittal Builder &gt; Product Catalog page.<\/li>\n<li>Test the front-end builder by selecting products, reviewing, and generating a PDF.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20send%20data%20to%20any%20third%20parties%3F\"><h3>Does this plugin send data to any third parties?<\/h3><\/dt>\n<dd><p>No. Your catalog, branding, and visitor selections are stored and processed on your own site, and none of it is sent anywhere else. There is no analytics, no telemetry, and no remote license check. The PDF itself is built on your own server by a bundled library, not by an outside service. The only outbound request the plugin can make is fetching images you configured, such as your Media Library logo, while a PDF renders \u2014 and those requests are limited to your own site and uploads location. See the Privacy section for details.<\/p><\/dd>\n<dt id=\"can%20i%20customize%20the%20pdf%3F\"><h3>Can I customize the PDF?<\/h3><\/dt>\n<dd><p>Yes \u2014 Submittal Builder &gt; Branding controls your company logo, name, address, phone number, and website; the primary brand color; the PDF theme; and whether new submittals include a cover sheet by default. A live preview shows your changes before you save.<\/p><\/dd>\n<dt id=\"can%20i%20import%20or%20reuse%20catalogs%3F\"><h3>Can I import or reuse catalogs?<\/h3><\/dt>\n<dd><p>Yes \u2014 you can import existing data or use pre-made industry packs for faster setup.<\/p><\/dd>\n<dt id=\"is%20it%20compatible%20with%20page%20builders%3F\"><h3>Is it compatible with page builders?<\/h3><\/dt>\n<dd><p>Yes. The shortcode works inside Elementor, Gutenberg, and most other editors.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.6<\/h4>\n\n<ul>\n<li>Fixed the Review step losing your selected products after a page reload. The product tray showed your selection while the Review step said \"No products selected\" and the Generate PDF button stayed disabled, so there was no way to finish the packet. Reloading no longer discards the selection, and a selection can no longer be wiped by simply revisiting the page.<\/li>\n<li>Fixed specification labels that mangled industry abbreviations in generated PDFs. A \"ul_listing\" specification printed as \"Ul Listing\", which reads as \"UI Listing\" on a document you submit for approval. UL, NEMA, AIC, ETL, CSA and IP now print correctly wherever specifications appear, including the sample PDF in Utilities.<\/li>\n<li>Front-end packets can now include a summary page and a table of contents. These are off by default and nothing about your current PDFs changes; the pages are available to add-ons and custom code that request them.<\/li>\n<li>Fixed the table of contents page ignoring your chosen PDF colour scheme. Its heading and divider now use the same accent as the rest of the packet.<\/li>\n<li>Fixed the review screen showing an empty footer and always treating the cover page as switched on, regardless of your Branding settings. It now reads the values you actually saved. Generated PDFs were never affected.<\/li>\n<li>Added a documented way for companion plugins to locate this plugin's admin pages, so an add-on can attach to them without hardcoding internal names that may change.<\/li>\n<li>Updated the \"Tested up to\" version and removed two unused files from the plugin package.<\/li>\n<\/ul>\n\n<h4>1.1.5<\/h4>\n\n<ul>\n<li>Minimum WordPress version is now 6.2, because the plugin uses WordPress's %i SQL identifier placeholder for table names.<\/li>\n<li>PHP 8.1 or newer is now required. The bundled PDF libraries already required PHP 8.1, so the previously advertised PHP 7.4 minimum was not accurate.<\/li>\n<li>Updated the bundled PDF dependencies to current stable releases: dompdf 3.1.6 (a security release) and its CSS parser to 9.4.0.<\/li>\n<li>Strengthened database query preparation throughout, including list-style queries, for full compatibility with WordPress SQL safety checks.<\/li>\n<li>Completed the \"sssb\" naming cleanup for browser storage keys and other persistent identifiers, while still reading previously saved values so existing work is not lost.<\/li>\n<li>Newly generated PDFs are now written to uploads\/sssb\/, and catalog backups to uploads\/sssb-backups\/. Files created by earlier versions are left where they are, so existing links keep working.<\/li>\n<li>Uninstall cleanup now removes only files this plugin generated, leaving anything else in your uploads folder untouched.<\/li>\n<li>Fixed the destructive catalog wipe tool: when a backup is requested, the backup must complete successfully before any catalog data is deleted. If the backup fails, nothing is deleted.<\/li>\n<li>Rebuilt the plugin's internal HTML, CSS, and JavaScript output helpers using ordinary string handling.<\/li>\n<li>Renamed the main plugin file to match the WordPress.org plugin slug.<\/li>\n<li>Tightened permissions on the PDF endpoint. Visitors can still generate PDFs from the front-end builder exactly as before, but the endpoint's separate template mode \u2014 where the caller supplies the catalog items and packet details directly \u2014 now requires a logged-in user with catalog permissions.<\/li>\n<li>Generated PDFs now get a randomized filename instead of project name plus date. Two packets for the same project on the same day no longer overwrite one another, and a packet's URL can no longer be guessed.<\/li>\n<li>Pre-wipe catalog backups get a randomized filename for the same reason. Backups from earlier versions are left exactly where they are.<\/li>\n<li>Tightened PDF rendering: embedded script execution is now disabled, and image fetching is limited to your own site and uploads location.<\/li>\n<li>PDF errors now show a general message and record the details in the site's log instead of returning them to the browser, and a PDF that fails to write to disk is reported as a failure rather than a success.<\/li>\n<li>Request rate limiting now identifies a client by its actual connection address, so the limit can no longer be sidestepped by changing a forwarded-IP header.<\/li>\n<li>Added server-side resource limits to front-end PDF generation, so a hand-crafted request cannot ask the server for an unreasonably large document. A normal packet is unaffected; the product limit can be raised with the sssb_max_public_pdf_products filter.<\/li>\n<li>Front-end PDF generation no longer runs a database schema check on every request. Table creation and updates stay with activation and the admin tools.<\/li>\n<li>Generated PDF and backup filenames now fail safely: if the server cannot produce a secure random name, the operation reports an error instead of falling back to a predictable one, and an existing file is never overwritten.<\/li>\n<li>Improved front-end product list performance on large catalogs.<\/li>\n<li>Uninstall no longer clears the entire site object cache. Removal of this plugin's own options, tables, and files is unchanged.<\/li>\n<li>Corrected the documentation: the packets the front-end builder generates contain a cover page and one spec sheet per product, and project-level notes are not printed into the PDF. Clarified that images configured in Branding are fetched while a PDF renders, and that the paid features described in the Documentation tab live in a separate add-on plugin.<\/li>\n<\/ul>\n\n<h4>1.1.4<\/h4>\n\n<ul>\n<li>The \"Enable local autosave\" setting now controls the front end. It was previously saved but never read, so selections were always written to browser localStorage regardless of the setting. With it turned off, nothing is written to local storage; selections last only for the current visit.<\/li>\n<li>The \"Remove all plugin data when uninstalling\" option now works. Its checkbox was never rendered on the Settings page, and its saved state was not read back, so the option could not be turned on and the uninstall cleanup was unreachable. Both are fixed. The option remains off by default.<\/li>\n<li>Fixed the Branding and Settings pages overwriting each other's fields. Saving Branding reset the autosave setting, and saving Settings reset the logo, company details, primary color, header style, and PDF theme. Each page now saves only the fields it renders.<\/li>\n<li>Removed a redundant bundled PDF library and its vendor-prefixing build layer entirely; dompdf is the sole PDF engine.<\/li>\n<li>Updated the dompdf HTML5 parser dependency (masterminds\/html5) to 2.10.1.<\/li>\n<li>Removed the dedicated Upgrade admin page.<\/li>\n<li>Hardened PDF generation: the REST endpoint now outputs PDF only (removed a fallback that wrote template markup to a file), removed a redundant current-user switch in the generator, and parameterized the last direct table check.<\/li>\n<li>Reduced logging to WP_DEBUG-gated diagnostics only.<\/li>\n<li>Completed the internal prefix cleanup (menu slugs and shortcode).<\/li>\n<\/ul>\n\n<h4>1.1.3<\/h4>\n\n<ul>\n<li>Included composer.json in the distribution so the plugin's dependencies are transparent and reviewable.<\/li>\n<\/ul>\n\n<h4>1.1.2<\/h4>\n\n<ul>\n<li>Removed all trialware\/locked-feature UI: every visible control now functions fully with no upgrade required. Premium capabilities move to a separate add-on plugin.<\/li>\n<li>Renamed the internal code prefix from \"sfb\" to \"sssb\" to meet the WordPress.org four-character prefix guideline (functions, classes, constants, hooks, options, transients, user meta, database tables, REST namespace, and script\/style handles).<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Removed an output buffer that wasn't being closed on success paths in the PDF generation endpoint. All ob_start() calls are now paired with a matching ob_get_clean() \/ ob_end_clean() in the same function scope.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Tightened REST API permission callbacks: \/health, \/ping, \/status, and \/form\/{id} GET now require capability checks instead of being publicly accessible.<\/li>\n<\/ul>\n\n<h4>1.0.9<\/h4>\n\n<ul>\n<li>Tightened naming-convention phpcs annotations and confirmed all functions, classes, hooks, options, and AJAX actions are prefixed.<\/li>\n<\/ul>\n\n<h4>1.0.8<\/h4>\n\n<ul>\n<li>Moved all admin-page inline CSS\/JS attachments into the admin_enqueue_scripts hook so they reliably reach the browser (per WP.org enqueue guidance).<\/li>\n<li>Removed legacy onboarding template (welcome template is now the sole onboarding view).<\/li>\n<\/ul>\n\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>Removed all licensing, telemetry, and remote-service code; plugin is now fully local with no external network requests.<\/li>\n<li>Removed dormant Pro feature scaffolding (watermark, signature block, white-label schema).<\/li>\n<li>Removed plugin attribution from generated PDFs and the public-facing builder.<\/li>\n<li>Updated Privacy and FAQ sections to reflect the no-external-services posture.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<p>Initial WordPress.org release<\/p>\n\n<ul>\n<li>Submittal and spec sheet PDF generation<\/li>\n<li>Visual product catalog builder with category\/product\/model hierarchy<\/li>\n<li>Customizable branding (logo, colors, footer text)<\/li>\n<li>REST API for frontend PDF generation<\/li>\n<li>Internationalization ready (i18n)<\/li>\n<\/ul>","raw_excerpt":"Generate branded submittal packets and spec sheet PDFs from your WordPress product catalog, with a cover page and a spec sheet per product.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/353088","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=353088"}],"author":[{"embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/webstuffguy"}],"wp:attachment":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=353088"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=353088"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=353088"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=353088"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=353088"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=353088"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}