Back to skills
SKILL.md
Hubspot Deploy Integration
BSecurityDeploy HubSpot integrations to Vercel, Fly.io, and Cloud Run platforms. Use when deploying HubSpot-powered applications, configuring platform secrets, or setting up deployment pipelines with HubSpot access tokens. Trigger with phrases like "deploy hubspot", "hubspot Vercel", "hubspot Cloud Run", "hubspot Fly.io", "hubspot production deploy".
- 4 stars
- 0 votes
- 0 copies
- 2 views
- Added September 12, 2026
Works with
Security analysis
84/100- Uses curl or wget to download content
- Exfiltrates credentials via HTTP — exact pattern from Snyk ToxicSkills study
Pro scans all 2 files and shows the line behind each finding
npx -y skills add aibot88/sec_skill_store --skill hubspot-deploy-integration --agent claude-codeAre you the author of Hubspot Deploy Integration?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/aibot88-hubspot-deploy-integration)---
name: hubspot-deploy-integration
description: |
Deploy HubSpot integrations to Vercel, Fly.io, and Cloud Run platforms.
Use when deploying HubSpot-powered applications, configuring platform secrets,
or setting up deployment pipelines with HubSpot access tokens.
Trigger with phrases like "deploy hubspot", "hubspot Vercel",
"hubspot Cloud Run", "hubspot Fly.io", "hubspot production deploy".
allowed-tools: Read, Write, Edit, Bash(vercel:*), Bash(fly:*), Bash(gcloud:*)
version: 1.0.0
license: MIT
author: Jeremy Longshore <jeremy@intentsolutions.io>
tags: [saas, crm, marketing, hubspot]
compatible-with: claude-code
---
# HubSpot Deploy Integration
## Overview
Deploy HubSpot-powered applications to Vercel, Fly.io, or Google Cloud Run with proper secret management and health checks.
## Prerequisites
- HubSpot private app token for production
- Platform CLI installed (vercel, fly, or gcloud)
- Application code with health check endpoint
## Instructions
### Step 1: Vercel Deployment
```bash
# Add HubSpot secrets to Vercel
vercel env add HUBSPOT_ACCESS_TOKEN production
# Paste: pat-na1-xxxxx
# Optional webhook secret
vercel env add HUBSPOT_WEBHOOK_SECRET production
```
```json
// vercel.json
{
"env": {
"HUBSPOT_ACCESS_TOKEN": "@hubspot-access-token"
},
"functions": {
"api/**/*.ts": {
"maxDuration": 30
}
}
}
```
```typescript
// api/hubspot/contacts.ts (Vercel serverless function)
import * as hubspot from '@hubspot/api-client';
const client = new hubspot.Client({
accessToken: process.env.HUBSPOT_ACCESS_TOKEN!,
numberOfApiCallRetries: 3,
});
export default async function handler(req: Request) {
if (req.method === 'GET') {
const contacts = await client.crm.contacts.basicApi.getPage(
10, undefined, ['firstname', 'lastname', 'email']
);
return Response.json(contacts.results);
}
if (req.method === 'POST') {
const body = await req.json();
const contact = await client.crm.contacts.basicApi.create({
properties: body,
associations: [],
});
return Response.json(contact, { status: 201 });
}
}
```
```bash
# Deploy
vercel --prod
```
### Step 2: Fly.io Deployment
```toml
# fly.toml
app = "my-hubspot-app"
primary_region = "iad"
[env]
NODE_ENV = "production"
[http_service]
internal_port = 3000
force_https = true
auto_stop_machines = true
auto_start_machines = true
[[http_service.checks]]
grace_period = "10s"
interval = "30s"
method = "GET"
path = "/health"
timeout = "5s"
```
```bash
# Set HubSpot secrets
fly secrets set HUBSPOT_ACCESS_TOKEN=pat-na1-xxxxx
fly secrets set HUBSPOT_WEBHOOK_SECRET=your-secret
# Deploy
fly deploy
# Verify health
fly status
curl https://my-hubspot-app.fly.dev/health
```
### Step 3: Google Cloud Run Deployment
```bash
#!/bin/bash
# deploy-cloud-run.sh
PROJECT_ID="${GOOGLE_CLOUD_PROJECT}"
SERVICE_NAME="hubspot-service"
REGION="us-central1"
# Store token in Secret Manager
echo -n "pat-na1-xxxxx" | gcloud secrets create hubspot-access-token \
--data-file=- --replication-policy="automatic"
# Grant Cloud Run access to the secret
gcloud secrets add-iam-policy-binding hubspot-access-token \
--member="serviceAccount:${PROJECT_ID}-compute@developer.gserviceaccount.com" \
--role="roles/secretmanager.secretAccessor"
# Build and deploy
gcloud builds submit --tag gcr.io/$PROJECT_ID/$SERVICE_NAME
gcloud run deploy $SERVICE_NAME \
--image gcr.io/$PROJECT_ID/$SERVICE_NAME \
--region $REGION \
--platform managed \
--set-secrets=HUBSPOT_ACCESS_TOKEN=hubspot-access-token:latest \
--min-instances=1 \
--max-instances=10 \
--memory=512Mi \
--timeout=30s
```
### Step 4: Health Check for All Platforms
```typescript
// src/health.ts
import * as hubspot from '@hubspot/api-client';
export async function healthCheck(): Promise<{
status: string;
services: Record<string, any>;
timestamp: string;
}> {
const client = new hubspot.Client({
accessToken: process.env.HUBSPOT_ACCESS_TOKEN!,
});
let hubspotStatus = { connected: false, latencyMs: 0 };
const start = Date.now();
try {
await client.crm.contacts.basicApi.getPage(1);
hubspotStatus = { connected: true, latencyMs: Date.now() - start };
} catch {
hubspotStatus = { connected: false, latencyMs: Date.now() - start };
}
return {
status: hubspotStatus.connected ? 'healthy' : 'degraded',
services: { hubspot: hubspotStatus },
timestamp: new Date().toISOString(),
};
}
```
## Output
- Application deployed to chosen platform
- HubSpot access token stored in platform's secret manager
- Health check endpoint verifying HubSpot connectivity
- HTTPS enforced on all endpoints
## Error Handling
| Issue | Cause | Solution |
|-------|-------|----------|
| Secret not found at runtime | Wrong env var name | Check platform secret config |
| Deploy timeout | Large build | Increase build timeout |
| Health check fails | Wrong token for environment | Verify production token |
| Cold start latency | Serverless function | Set `min-instances=1` or use warm-up |
## Resources
- [Vercel Environment Variables](https://vercel.com/docs/environment-variables)
- [Fly.io Secrets](https://fly.io/docs/reference/secrets/)
- [Cloud Run with Secret Manager](https://cloud.google.com/run/docs/configuring/secrets)
- [HubSpot Private Apps](https://developers.hubspot.com/docs/guides/apps/private-apps/overview)
## Next Steps
For webhook handling, see `hubspot-webhooks-events`.
Files in this skill
- SKILL.md
- source.json
Attribution
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.