๐Ÿ“ฆ HubSpot Module Documentation

3D Interactive Packaging Designer

Setup guide, configuration reference, and troubleshooting for the interactive 3D product visualizer module.

Version 1.0 ยท Last updated February 2026 ยท Requires HubSpot CMS Professional or Enterprise
Quick Start Installation Configuration Content Fields Style Fields Product Types Advanced Troubleshooting FAQ

Quick Start

Get the 3D Packaging Designer running on your HubSpot page in under 5 minutes.

1

Install the Module

From the HubSpot Template Marketplace listing, click Install (free modules) or Purchase (paid modules). The module files are automatically added to your Design Manager under Custom Modules.

2

Add to a Page

Open any page in the HubSpot drag-and-drop editor. In the left sidebar, search for "3D Interactive Packaging Designer". Drag it onto your page where you want the visualizer to appear.

3

Configure Products

Click the module on the page to open its settings panel. Under the Content tab, toggle on the product types you want to display. By default all 8 products are enabled โ€” toggle off any you don't need.

4

Customize & Publish

Set your brand colors, upload your logo, customize the heading text, and adjust styles. Click Publish when ready. Your visitors can now interact with the 3D visualizer immediately.

โœ… No third-party accounts required This module runs entirely in the browser using Three.js WebGL. No API keys, no external services, no server-side processing. It works out of the box.

Installation

Requirements

What Gets Installed

The module installs the following files into your Design Manager:

Custom Modules/
  โ””โ”€โ”€ 3d-packaging-designer.module/
      โ”œโ”€โ”€ module.html    โ† HTML + HubL template
      โ”œโ”€โ”€ module.css     โ† Scoped styles (all .tpd-* prefixed)
      โ”œโ”€โ”€ module.js      โ† Three.js scene engine
      โ”œโ”€โ”€ fields.json    โ† 50 configurable editor fields
      โ””โ”€โ”€ meta.json      โ† Module metadata & icon

External Dependencies

The module loads Two JavaScript files from the Cloudflare CDN at page render time via HubL require_js():

LibraryVersionPurposeSize (gzipped)
Three.jsr128WebGL 3D rendering engine~150 KB
OrbitControls.jsr128Mouse/touch rotation & zoom~8 KB
โ„น๏ธ CDN Caching Both files are served from cdnjs.cloudflare.com with aggressive browser caching. After the first page load, subsequent visits load the 3D engine from cache with zero network requests.

Configuration Overview

The module has 50 configurable fields organized across two tabs in the HubSpot page editor:

TabPurposeFields
ContentWhat appears on the page: heading text, brand logo, which products are enabled, default colors per product, feature list~36 fields
StylesHow it looks: fonts, colors, backgrounds, borders, spacing, sidebar width, preview height~14 fields

Every field includes inline help text explaining what it does. No code editing is ever required.

Content Tab Reference

Header Group

FieldTypeDefaultDescription
Heading TextText"Design Your *Perfect* Package"Main heading above the visualizer. Wrap text in asterisks to apply the accent color.

Brand Logo Group

FieldTypeDefaultDescription
Logo ImageImageNoneYour brand logo displayed above the heading. Recommended size: 200px wide, transparent PNG or SVG.

Enabled Products Group

Toggle each product type on or off. Disabled products don't appear in the visitor-facing selector grid.

FieldTypeDefault
Enable PouchBooleanOn
Enable CanBooleanOn
Enable Stick PackBooleanOn
Enable Bar WrapBooleanOn
Enable CartonBooleanOn
Enable BottleBooleanOn
Enable Wine BottleBooleanOn
Enable Drink CanBooleanOn

Product Colors Group

Each product type has 3 color fields that control the default colors visitors see when the page loads. Visitors can change these in real time using the built-in color pickers.

ProductColor 1Color 2Color 3
PouchBody (#0051B3)Zipper (#C0392B)Gusset (#003D8A)
CanBody (#DC2626)Lid (#C0C0C0)Base (#B0B0B0)
Stick PackBody (#2D9E36)Seal (#C0C0C0)Accent (#1A6B3C)
Bar WrapOuter (#8B4513)Inner (#D2691E)Seal (#FFD700)
CartonBody (#FFFFFF)Lid (#E5E7EB)Accent (#0051B3)
BottleBody (#228B22)Cap (#C0C0C0)Label BG (#FFFFFF)
Wine BottleBody (#722222)Foil (#D4A84B)Label BG (#FFF8EB)
Drink CanBody (#1E40AF)Lid (#C0C0C0)Accent (#60A5FA)

Features Group

FieldTypeDescription
Feature ListRepeaterOptional list of feature callouts displayed below the visualizer. Each item has a title and description. Leave empty to hide the section entirely.

Styles Tab Reference

Style fields follow HubSpot marketplace conventions and are ordered: Text โ†’ Background โ†’ Border โ†’ Spacing โ†’ Advanced.

Text Group

FieldTypeDefaultDescription
Heading FontFont pickerSpace GroteskGoogle Font for the main heading. Loaded automatically.
Body FontFont pickerInterGoogle Font for labels, buttons, and UI text.
Accent ColorColor#6366F1Used for active states, buttons, highlighted text, and interactive elements.

Background Group

FieldTypeDefaultDescription
Module BackgroundColor#0F172AOverall module container background color.
Panel BackgroundColor#111827Sidebar controls panel background.
Preview Gradient StartColor#1A1A2ETop color of the 3D preview area gradient.
Preview Gradient EndColor#16162ABottom color of the 3D preview area gradient.

Border Group

FieldTypeDefaultDescription
Border ColorColor#1E293BColor for dividers and component borders.
Border RadiusNumber (px)12Corner rounding on buttons, cards, and the main container.

Spacing Group

FieldTypeDefaultDescription
Module PaddingSpacing24px top/bottom, 0 left/rightOuter padding around the entire module. Adjust to create breathing room from adjacent page sections.

Advanced Group

FieldTypeDefaultDescription
Sidebar WidthNumber (%)45Width of the controls sidebar as a percentage of the total module width. The 3D preview fills the remaining space.
Preview Min HeightNumber (px)650Minimum height of the 3D preview canvas area. Increase for taller product displays.

Product Types Deep Dive

Each product type is a full 3D model built with Three.js geometry, materials, and lighting. Here's what each includes:

Stand-Up Pouch

A flexible packaging pouch with front face, side gussets, and a resealable zipper. The zipper features visible teeth detail. The label area wraps around the front face.

Beverage Can

A standard 355ml (12oz) beverage can with pull-tab lid, cylindrical body, and recessed base. Metallic material with realistic reflections.

Stick Pack

A tall, narrow single-serve sachet with sealed top and bottom edges. Common in powder supplements and drink mixes.

Bar Wrap

A horizontal flow-wrap package with crimped ends, typical of protein bars and chocolate bars.

Folding Carton

A rectangular box with lid, front face, and side panels. Rendered with slight bevel edges for realism.

Bottle

A standard round bottle with screw cap, shoulder taper, and cylindrical body. Label wraps around the center.

Wine Bottle

A Bordeaux-style wine bottle with foil capsule, long neck, sloped shoulders, and a punt base. Glossy dark glass material.

Slim Drink Can

A tall 250ml slim can (Red Bull format) with narrower diameter and taller profile than the standard beverage can.

Advanced Usage

Multiple Modules Per Page

The module is multi-instance safe. You can add multiple 3D Packaging Designer modules to the same page without conflicts. Each instance gets a unique DOM ID and scoped Three.js scene. Typical use case: one visualizer for pouches, another for bottles, on the same product page.

Custom Label Artwork

Visitors can upload label images that wrap onto the 3D product surface. Supported formats:

Recommended label dimensions: 1024 ร— 1024px or 2048 ร— 1024px for best quality on the 3D surface.

โ„น๏ธ Label uploads are client-side only Uploaded images are processed entirely in the visitor's browser using FileReader and Three.js texture mapping. No files are sent to your server or stored anywhere. The label resets when the page is refreshed.

PNG Export

The "Download PNG" button captures the current 3D canvas state as a high-resolution PNG image with a transparent background. The exported image matches the visible canvas size. Visitors can use this for internal reviews, presentations, or mockup approvals.

Surface Textures

TextureDescriptionBest For
Carbon FiberDiagonal weave pattern with subtle reflectivityPremium, tech-forward products
Brushed MetalHorizontal linear grain with anisotropic reflectionsMetallic cans, industrial products
LinenFine woven crosshatch with soft matte feelNatural, organic, artisan products
SpeckleRandom dot pattern (kraft paper aesthetic)Eco-friendly, recycled packaging

Material Finishes

FinishRoughnessMetalnessVisual Effect
Matte0.90.0Flat, no reflections. Clean and modern.
Satin0.50.1Soft sheen with subtle highlights.
Glossy0.150.2Bright reflections, wet-look surface.
Metallic0.30.8Chrome-like reflections. Ideal for cans.

Embedding in Blog Posts

The module works in blog posts and blog listing pages. Simply add the module to your blog template's drag-and-drop areas. It's registered for PAGE, BLOG_POST, and BLOG_LISTING template types.

Performance Notes

Troubleshooting

The 3D preview shows a blank/black area

Most likely cause: WebGL not available This happens in very old browsers, some corporate environments with GPU acceleration disabled, or when using a browser that blocks WebGL (rare). Test with Chrome, Firefox, Safari, or Edge. Visit get.webgl.org to verify WebGL support.

Products appear but colors don't change

Check that JavaScript is enabled and there are no console errors. Open your browser's Developer Tools (F12) and look for any red error messages. The most common cause is a Content Security Policy (CSP) header blocking inline scripts or the CDN domain. Ensure cdnjs.cloudflare.com is allowed in your CSP.

Module doesn't appear in the page editor

Confirm the module was installed successfully by checking Design Manager โ†’ Custom Modules. If it's not listed, try reinstalling from the marketplace. If you see it in Design Manager but not in the page editor's module sidebar, ensure your page template allows custom modules in that zone.

The module looks too small or too large

Adjust the Preview Min Height field in the Styles โ†’ Advanced group. Default is 650px. For full-width hero-style layouts, try 800px or higher. The Sidebar Width percentage also affects the preview area size.

Label upload doesn't work

Label upload uses the browser's File API. It won't work if:

Module works in preview but not on published page

Click Publish changes in Design Manager after making any edits to the module code. Then republish the page itself. HubSpot caches module assets aggressively โ€” you may need to wait 1-2 minutes or clear your browser cache.

Multiple modules on the same page conflict

This shouldn't happen โ€” the module is multi-instance safe. If you experience issues, check that you haven't manually edited the module code and accidentally removed the instance scoping. Each module instance uses a unique data-module-instance attribute to scope all DOM queries.

Frequently Asked Questions

Does this module work with HubSpot CMS Free or Starter?
No. Custom modules require HubSpot CMS Professional or Enterprise. The module will not be available in the page editor on lower-tier plans.
Do visitors need to install anything?
No. Everything runs in the browser using WebGL, which is built into all modern browsers (Chrome, Firefox, Safari, Edge). No plugins, downloads, or accounts needed.
Does this module slow down my page load speed?
Minimal impact. Three.js (~150KB gzipped) loads asynchronously from a CDN with browser caching. The 3D scene only initializes when the module scrolls into view. Your page's text content and layout render first, unblocked.
Can I customize the 3D models beyond color changes?
Through the editor: you can change colors (3 zones per product), surface textures (4 options), material finishes (4 options), and upload custom label artwork. For deeper model modifications (changing geometry), you would need to edit the module.js source in Design Manager.
Are uploaded labels stored on my server?
No. Label uploads are processed entirely client-side using the browser's FileReader API. The image is loaded into the Three.js texture memory and never sent to any server. When the visitor refreshes the page, the label resets.
Can I use this on a landing page with a form?
Yes. The module works alongside any other HubSpot modules on the same page, including forms, CTAs, video, rich text, and more. A popular layout is: hero section โ†’ 3D Packaging Designer โ†’ contact form CTA.
Does this work on mobile?
Yes. The layout automatically stacks (3D preview on top, controls below) on viewports under 768px. Touch controls replace mouse: drag to rotate, pinch to zoom. Shadow quality is reduced on mobile for smooth 60fps performance.
Can I white-label this module (remove branding)?
The module contains no third-party branding. The "3D" badge and "Drag to rotate" hint text can be removed by editing the module.html source in Design Manager. Your brand logo and heading text are fully customizable from the page editor.
What happens if the CDN goes down?
Three.js is loaded from Cloudflare's CDN (cdnjs.cloudflare.com), which has 99.99% uptime across 300+ global data centers. In the extremely unlikely event of a CDN outage, the page still loads normally โ€” only the 3D preview area would show a fallback message.
How do I get support?
Email support@twotreesppc.com with your HubSpot portal ID and a description of the issue. Include a screenshot or screen recording if possible. We typically respond within 1 business day.

3D Interactive Packaging Designer with Product Visualizer

Built by Two Trees PPC ยท Sacramento, CA ยท support@twotreesppc.com

ยฉ 2026 Two Trees PPC LLC. All rights reserved.