Skip to content
Back to skills

Hubspot Deploy Integration

BSecurity

'Deploy HubSpot integrations to Vercel, Fly.io, and Cloud Run platforms.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 11, 2026
devopstypescriptgobashnodeapi

Works with

  • claude code
  • cli
  • api

Security analysis

B84/100
  • mediumUses curl or wget to download content
  • criticalExfiltrates credentials via HTTP — exact pattern from Snyk ToxicSkills study

Pro shows the line behind each finding and how to fix it

Scanned November 11, 2026

npx -y skills add pauldx/claudifying --skill hubspot-deploy-integration --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Hubspot Deploy Integration?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Hubspot Deploy Integration
[![Security: B — Skills Directory](https://www.skillsdirectory.com/api/skills/pauldx-hubspot-deploy-integration/badge)](https://www.skillsdirectory.com/skills/pauldx-hubspot-deploy-integration)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
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
tags:
- saas
- crm
- marketing
- hubspot
compatibility: Designed for 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`.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

View all in devops →

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.