---
title: Use the WoodsPortal JavaScript SDK and WoodsCLI
description: Build WoodsPortal experiences with the ESM JavaScript SDK and use WoodsCLI to scaffold, preview, build, and upload HubSpot modules or themes.
---

[WoodsPortal Resources](https://woodsportal.digitalwoods.io/en/resources)

# [Use the WoodsPortal JavaScript SDK and WoodsCLI](https://woodsportal.digitalwoods.io/en/resources/docs/use-the-woodsportal-javascript-sdk-and-woodscli)

 Written by [Admin](https://woodsportal.digitalwoods.io/en/resources/author/admin) | Oct 14, 2026, 11:05:56 PM

Developers can build supported custom WoodsPortal experiences with the ESM JavaScript SDK and use WoodsCLI to scaffold, preview, build, and upload HubSpot modules or themes.

## Use the JavaScript SDK

- The SDK exposes WoodsPortal authentication, CRM, files, notes, email, uploads, pipelines, and navigation APIs.
- The documented runtime is JavaScript or TypeScript with Node 18 or later and ESM.
- A custom experience still requires supported API configuration, authentication, permissions, and developer implementation.

## Initialize a project with WoodsCLI

1. Install the current @woodsportal/hubspot-kit package through the approved package workflow.
2. Run the WoodsCLI initialization command.
3. Choose a HubSpot module or theme project.
4. Select build and authentication options.
5. Choose the authentication scaffold tier appropriate for the project: none, starter, SSO, or full MFA.
6. Generate the project.
7. Run the local preview or development workflow.
8. Build the bundle and use the HubSpot CLI integration to upload or watch supported assets.

## Rules and limits

- WoodsCLI is intended for HubSpot modules and themes, not HubSpot UI extensions.
- The full authentication scaffold is the appropriate baseline for a full production portal, but it still requires implementation and configuration.
- Do not treat generated scaffolding as a finished security review or production deployment.
- Check the availability of documentation and developer resources before relying on a developer portal link.

[View full post](https://woodsportal.digitalwoods.io/en/resources/docs/use-the-woodsportal-javascript-sdk-and-woodscli)

```json
{
  "@context" : "http://schema.org",
  "@type" : "BlogPosting",
  "author" : {
    "@type" : "Person",
    "name" : "Admin"
  },
  "dateModified" : "2026-10-16T04:00:58.518Z",
  "datePublished" : "2026-10-14T23:05:56Z",
  "headline" : "Use the WoodsPortal JavaScript SDK and WoodsCLI",
  "image" : {
    "@type" : "ImageObject",
    "height" : 60,
    "url" : "/hs/hsstatic/content_shared_assets/static-1.4092/img/default-amp-logo.png",
    "width" : 60
  },
  "mainEntityOfPage" : "https://woodsportal.digitalwoods.io/en/resources/docs/use-the-woodsportal-javascript-sdk-and-woodscli",
  "publisher" : {
    "@type" : "Organization",
    "logo" : {
      "@type" : "ImageObject",
      "height" : 60,
      "url" : "/hs/hsstatic/content_shared_assets/static-1.4092/img/default-amp-logo.png",
      "width" : 60
    },
    "name" : "WoodsPortal Resources"
  }
}
```