Skip to content
Back to skills

Salesloft Deploy Integration

ASecurity

Deploy SalesLoft integrations to Vercel, Fly.io, and Cloud Run. Use when deploying SalesLoft-powered apps to production, configuring platform secrets, or setting up webhook endpoints. Trigger: "deploy salesloft", "salesloft Vercel", "salesloft Cloud Run".

  • 4 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 12, 2026
developmenttypescriptgobashnodeapi

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned September 12, 2026

npx -y skills add aibot88/sec_skill_store --skill salesloft-deploy-integration --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Salesloft Deploy Integration?

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

Security grade badge for Salesloft Deploy Integration
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/aibot88-salesloft-deploy-integration/badge)](https://www.skillsdirectory.com/skills/aibot88-salesloft-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: salesloft-deploy-integration
description: |
  Deploy SalesLoft integrations to Vercel, Fly.io, and Cloud Run.
  Use when deploying SalesLoft-powered apps to production,
  configuring platform secrets, or setting up webhook endpoints.
  Trigger: "deploy salesloft", "salesloft Vercel", "salesloft Cloud Run".
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, sales, outreach, salesloft]
compatible-with: claude-code
---

# SalesLoft Deploy Integration

## Overview

Deploy SalesLoft-powered applications to cloud platforms with proper secrets management, webhook endpoint configuration, and health checks. SalesLoft requires HTTPS webhook endpoints and OAuth tokens stored securely.

## Instructions

### Vercel Deployment

```bash
# Set secrets
vercel env add SALESLOFT_CLIENT_ID production
vercel env add SALESLOFT_CLIENT_SECRET production
vercel env add SALESLOFT_WEBHOOK_SECRET production

# Deploy
vercel --prod
```

```typescript
// api/webhooks/salesloft.ts (Vercel serverless function)
import { verifyWebhookSignature } from '../../lib/salesloft';

export const config = { api: { bodyParser: false } }; // Raw body for HMAC

export default async function handler(req: Request) {
  const body = await req.text();
  const sig = req.headers.get('x-salesloft-signature')!;
  const ts = req.headers.get('x-salesloft-timestamp')!;

  if (!verifyWebhookSignature(Buffer.from(body), sig, ts, process.env.SALESLOFT_WEBHOOK_SECRET!)) {
    return new Response('Invalid signature', { status: 401 });
  }

  const event = JSON.parse(body);
  // Process event...
  return new Response(JSON.stringify({ received: true }), { status: 200 });
}
```

### Fly.io Deployment

```toml
# fly.toml
app = "salesloft-sync"
primary_region = "iad"

[env]
  NODE_ENV = "production"

[http_service]
  internal_port = 3000
  force_https = true
  auto_stop_machines = true
  auto_start_machines = true

[[services.http_checks]]
  interval = "30s"
  timeout = "5s"
  path = "/health"
```

```bash
fly secrets set SALESLOFT_CLIENT_ID=xxx SALESLOFT_CLIENT_SECRET=xxx
fly secrets set SALESLOFT_WEBHOOK_SECRET=xxx
fly deploy
```

### Cloud Run Deployment

```bash
# Store secrets in Secret Manager
echo -n "client-id" | gcloud secrets create salesloft-client-id --data-file=-
echo -n "client-secret" | gcloud secrets create salesloft-client-secret --data-file=-

# Deploy with secret mounts
gcloud run deploy salesloft-sync \
  --image gcr.io/$PROJECT_ID/salesloft-sync \
  --region us-central1 \
  --set-secrets=SALESLOFT_CLIENT_ID=salesloft-client-id:latest \
  --set-secrets=SALESLOFT_CLIENT_SECRET=salesloft-client-secret:latest \
  --allow-unauthenticated
```

### Health Check (All Platforms)

```typescript
app.get('/health', async (req, res) => {
  const start = Date.now();
  try {
    const { data } = await api.get('/me.json');
    res.json({
      status: 'healthy',
      salesloft: { user: data.data.email, latencyMs: Date.now() - start },
    });
  } catch (err: any) {
    res.status(503).json({
      status: 'degraded',
      salesloft: { error: err.message, latencyMs: Date.now() - start },
    });
  }
});
```

## Error Handling

| Issue | Cause | Solution |
|-------|-------|----------|
| Webhook 401 | Wrong signing secret | Verify secret matches SalesLoft config |
| Cold start timeout | Webhook response > 30s | Process async, respond 200 immediately |
| Secret not found | Missing env var | Check platform secret configuration |
| Health check fails | Token expired | Ensure token refresh is automated |

## Resources

- [SalesLoft API Basics](https://developers.salesloft.com/docs/platform/api-basics/)
- [Vercel Serverless Functions](https://vercel.com/docs/functions)
- [Fly.io Docs](https://fly.io/docs)
- [Cloud Run Docs](https://cloud.google.com/run/docs)

## Next Steps

For webhook handling, see `salesloft-webhooks-events`.

Files in this skill

  • SKILL.md3.9 KB
  • source.json827 B

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.

Comments

Loading comments…

Newsletter

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