Learn how to connect Bolt.new AI with HubSpot in 2025 using this simple, step‑by‑step integration guide for smoother workflows and smarter automation.

Book a call with an Expert
Starting a new venture? Need to upgrade your web app? RapidDev builds application with your growth in mind.
To integrate Bolt.new with HubSpot, you simply build a normal web app inside Bolt and connect it to HubSpot using HubSpot’s public REST API or official OAuth flow. Bolt itself does not have any special or magical integration layer — you authenticate to HubSpot the same way you would in any Node/Express or frontend app, using HubSpot OAuth or a HubSpot Private App Access Token stored in environment variables. In Bolt.new, the pattern is: create API routes, store secrets in the Bolt environment variable panel, call HubSpot endpoints over HTTPS, then test end‑to‑end inside the Bolt preview server.
HubSpot provides a standard REST API. Bolt.new provides a runtime where your server code can make HTTPS requests and read environment variables. That’s the entire integration pattern.
This is exactly how you integrate with any external service from Bolt — standard web app patterns, nothing proprietary.
The fastest and cleanest method for development is using a HubSpot Private App. It gives you a single token and avoids OAuth complexity while prototyping.
Below is real, working Node.js/Express-style code you can drop directly into Bolt.new’s server environment. It shows how to create a contact in HubSpot.
// server/routes/hubspot.js
import express from "express";
const router = express.Router();
router.post("/hubspot/create-contact", async (req, res) => {
try {
const { email, firstname, lastname } = req.body;
const response = await fetch(
"https://api.hubapi.com/crm/v3/objects/contacts",
{
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${process.env.HUBSPOT_TOKEN}` // stored in Bolt env vars
},
body: JSON.stringify({
properties: {
email,
firstname,
lastname
}
})
}
);
const data = await response.json();
res.json(data);
} catch (err) {
console.error("HubSpot error:", err);
res.status(500).json({ error: "HubSpot request failed" });
}
});
export default router;
Then mount this route in your main server file:
// server/index.js
import express from "express";
import hubspotRoutes from "./routes/hubspot.js";
const app = express();
app.use(express.json());
app.use("/api", hubspotRoutes);
app.listen(3000, () => {
console.log("Server running on port 3000");
});
From your frontend inside Bolt.new, you can call this server route like this:
// Example frontend fetch request
async function createContact() {
const res = await fetch("/api/hubspot/create-contact", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
email: "[email protected]",
firstname: "Test",
lastname: "User"
})
});
const data = await res.json();
console.log("HubSpot response:", data);
}
When you need multi-user installs or production-grade security, switch to HubSpot OAuth. You implement it the same way in Bolt as you would in any Node server:
All of this uses standard OAuth 2.0. Bolt.new does not change any part of the protocol.
If you want HubSpot to notify your Bolt app automatically (example: contact created), you register a webhook inside HubSpot and point it to your Bolt server endpoint like /api/hubspot/webhook. Bolt receives the POST payload and processes it normally. No special work is needed — just a public URL and a POST handler.
Bolt.new integrates with HubSpot the same way any real-world app does: by storing HubSpot credentials as environment variables, making REST API calls from Bolt’s server runtime, and optionally implementing OAuth and webhooks. Bolt’s advantage is speed — you scaffold, test, and iterate in a single browser workspace, but all integration patterns are 100% standard and production-valid.
When it comes to serving you, we sweat the little things. That’s why our work makes a big impact.