Agent skill
hubspot-deploy-integration
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".
Install this agent skill to your Project
npx add-skill https://github.com/jeremylongshore/claude-code-plugins-plus-skills/tree/main/plugins/saas-packs/hubspot-pack/skills/hubspot-deploy-integration
SKILL.md
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
# 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
// vercel.json
{
"env": {
"HUBSPOT_ACCESS_TOKEN": "@hubspot-access-token"
},
"functions": {
"api/**/*.ts": {
"maxDuration": 30
}
}
}
// 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 });
}
}
# Deploy
vercel --prod
Step 2: Fly.io Deployment
# 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"
# 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
#!/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
// 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
Next Steps
For webhook handling, see hubspot-webhooks-events.
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
dockerfile-generator
Dockerfile Generator - Auto-activating skill for DevOps Basics. Triggers on: dockerfile generator, dockerfile generator Part of the DevOps Basics skill category.
branch-naming-helper
Branch Naming Helper - Auto-activating skill for DevOps Basics. Triggers on: branch naming helper, branch naming helper Part of the DevOps Basics skill category.
readme-generator
Readme Generator - Auto-activating skill for DevOps Basics. Triggers on: readme generator, readme generator Part of the DevOps Basics skill category.
makefile-generator
Makefile Generator - Auto-activating skill for DevOps Basics. Triggers on: makefile generator, makefile generator Part of the DevOps Basics skill category.
gitignore-generator
Gitignore Generator - Auto-activating skill for DevOps Basics. Triggers on: gitignore generator, gitignore generator Part of the DevOps Basics skill category.
pre-commit-hook-setup
Pre Commit Hook Setup - Auto-activating skill for DevOps Basics. Triggers on: pre commit hook setup, pre commit hook setup Part of the DevOps Basics skill category.
Didn't find tool you were looking for?