HubSpot Asset Marketplace Module Requirements

Last updated:

The following requirements need to be met when submitting modules to the Asset Marketplace.

1. Module Restrictions

At this time, modules submitted to the Asset Marketplace may not contain HubDB or calls to Serverless Functions.

2. Module Screenshots

Modules must contain, at minimum, the following screenshots:

  • How the module will appear on the page to front end users.
  • The page-level editor settings of the module.
    • If repeater content is used in the module, you must provide a screenshot of one instance of the repeating item settings.

An example of this can be found in our Accordion Toggle module on the marketplace.

3. Module Name, Labels, Fields, and Help Text

Modules must include descriptive text to accommodate the module in the following:

  • Module Name: Your module name must be descriptive. For example, names such as “Content Card with Link” are descriptive whereas “Card 01” and “CCard” is not.
  • Field Name: Your module fields should include descriptive names to show the intent of the fields. For example, if a text field is meant to include a person’s job title, “Job Title” would be a proper description whereas “Title” is not.
  • Field Default Content: Default content in fields should be present and represent the usage of the module field. We do not recommend simply adding “Lorem Ipsum” content as this doesn’t portray real life use of your module.

The following are optional recommended options for your module.

4. Module Icons

Modules must include an icon assigned to the module. Learn more about module icons in our developer documentation.

5. Module Code Quality

The following requirements must also be met in conjunction with our initial requirements about code quality in our HubSpot Asset Marketplace Compliance, Design, Code Quality, and Disclaimers section. These requirements are specific to modules.

5.1 Modules must be self-contained

All module code must be self-contained and not rely on code located elsewhere. External files utilized inside of modules must use the Linked Files feature.

5.2 Module Styles and JavaScript

Hardcoded inline styles are not allowed inside of modules. We recommend using dynamic inline styles (having fields be able to control the styling) where inline styling is necessary. 

JavaScript should reference DOM elements by module specific classnames to ensure elements outside of the module are not unintentionally affected. Also, all JavaScript must be able to represent multiple instances of a module. JavaScript in the JS Pane will only load once per page, regardless of the number of module occurrences.

When creating modules, you can use a built-in variable called {{name}}. This variable pulls in the module's instance ID (which can be used in the HTML+HubL panel only) to help in CSS and JS markup for complex modules. Learn more about this in our developer documentation.