Embed SDK

Add the TruCustom widget to any website with our JavaScript SDK.

Quick Start

Add the SDK script and a container element to your page:

<!-- Container for the customizer -->
<div id="customizer"
     data-pc-product-id="YOUR_PRODUCT_ID"
     data-pc-store-id="YOUR_STORE_ID">
</div>

<!-- Load the SDK -->
<script src="https://trucustom.net/sdk/product-customizer.js" data-pc-auto-init></script>

Installation Methods

1. Auto-Init (Recommended)

The SDK automatically initializes customizers based on data attributes:

<div data-pc-product-id="prod_123"
     data-pc-store-id="store_456"
     data-pc-mode="inline"
     data-pc-on-finalize="handleFinalize">
</div>

<script src="https://trucustom.net/sdk/product-customizer.js" data-pc-auto-init></script>

<script>
  ProductCustomizer.registerCallback('handleFinalize', function(data) {
    // Add to cart
    console.log('Design:', data.design);
    console.log('Preview:', data.previewUrl);
  });
</script>

2. JavaScript API

For more control, use the JavaScript API:

<div id="customizer"></div>
<script src="https://trucustom.net/sdk/product-customizer.js"></script>

<script>
  const instance = ProductCustomizer.init({
    container: '#customizer',
    storeId: 'store_456',
    productId: 'prod_123',
    mode: 'inline',
    templateId: 'tmpl_789',  // Optional: pre-load template
    variantId: 'var_abc',    // Optional: select variant
    sessionToken: 'token',   // Optional: resume session

    // Callbacks
    onReady: function(instance) {
      console.log('Customizer ready');
    },
    onDesignChange: function(data) {
      console.log('Design changed');
    },
    onFinalize: function(data) {
      addToCart(data.design, data.previewUrl);
    },
    onError: function(error) {
      console.error('Error:', error);
    },
    onClose: function() {
      console.log('Customizer closed');
    }
  });
</script>

3. Button Trigger (Modal)

Open the customizer in a modal when clicking a button:

<button data-pc-open
        data-pc-product-id="prod_123"
        data-pc-store-id="store_456"
        data-pc-mode="modal">
  Customize This Product
</button>

<script src="https://trucustom.net/sdk/product-customizer.js" data-pc-auto-init></script>

Configuration Options

Option Data Attribute Type Description
container - string/element CSS selector or DOM element
storeId data-pc-store-id string Your store ID (required)
productId data-pc-product-id string Product to customize (required)
mode data-pc-mode string "inline", "modal", or "fullscreen"
templateId data-pc-template-id string Pre-load a design template
variantId data-pc-variant-id string Pre-select a product variant
sessionToken data-pc-session string Resume a previous session
locale data-pc-locale string Language code (e.g., "en", "es")
theme - object Custom theming options

Theming

Customize the look of the widget:

ProductCustomizer.init({
  // ... other options
  theme: {
    primaryColor: '#4f46e5',
    primaryHover: '#4338ca',
    fontFamily: 'Inter, sans-serif',
    borderRadius: '8px'
  }
});

Display Modes

Inline

Embed directly in your page layout:

<div id="customizer" style="width: 100%; height: 700px;"></div>
<script>
  ProductCustomizer.init({
    container: '#customizer',
    mode: 'inline',
    // ...
  });
</script>

Modal

Open in a centered modal overlay:

ProductCustomizer.open({
  mode: 'modal',
  productId: 'prod_123',
  storeId: 'store_456',
  onFinalize: function(data) {
    // Handle completion
    ProductCustomizer.close();
  }
});

Fullscreen

Take over the entire viewport:

ProductCustomizer.open({
  mode: 'fullscreen',
  // ...
});

JavaScript API

Methods

Method Description
ProductCustomizer.init(options) Initialize an inline customizer
ProductCustomizer.open(options) Open modal/fullscreen customizer
ProductCustomizer.close(id?) Close a customizer instance
ProductCustomizer.get(id) Get an instance by ID
ProductCustomizer.registerCallback(name, fn) Register a global callback

Events

Event Data Description
onReady instance Customizer is loaded and ready
onDesignChange { design } Design was modified
onFinalize { design, previewUrl } Customer completed customization
onError { message } An error occurred
onClose - Customizer was closed