Deploy Hootsuite integrations to Vercel, Fly.io, and Cloud Run platforms.
BY jeremylongshoreUPDATED Oct 28, 2026
INTENDED FOR✳Claude CodeInstall in a listed agent.
instructions.md
---
name: hootsuite-deploy-integration-cb6ae76497af
description: 'Deploy Hootsuite integrations to Vercel, Fly.io, and Cloud Run platforms.
Use when deploying Hootsuite-powered applications to production,
configuring platform-specific secrets, or setting up deployment pipelines.
Trigger with phrases like "deploy hootsuite", "hootsuite Vercel",
"hootsuite production deploy", "hootsuite Cloud Run", "hootsuite Fly.io".
'
allowed-tools: Read, Write, Edit, Bash(vercel:*), Bash(fly:*), Bash(gcloud:*)
version: 1.6.0
license: MIT
author: Jeremy Longshore <jeremy@intentsolutions.io>
tags:
- saas
- hootsuite
- social-media
compatibility: Designed for Claude Code
---
# Hootsuite Deploy Integration
## Overview
Deploy Hootsuite social media management backends. Key consideration: OAuth refresh tokens must persist across deployments — use a database or key-value store, not environment variables.
## Instructions
### Step 1: Vercel Deployment
```typescript
// api/schedule.ts — Vercel serverless
import type { VercelRequest, VercelResponse } from '@vercel/node';
export default async function handler(req: VercelRequest, res: VercelResponse) {
if (req.method !== 'POST') return res.status(405).end();
// Get token from persistent store (not env var — tokens rotate)
const token = await getStoredToken();
const response = await fetch('https://platform.hootsuite.com/v1/messages', {
method: 'POST',
headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' },
body: JSON.stringify(req.body),
});
const result = await response.json();
res.json(result);
}
```
```bash
vercel env add HOOTSUITE_CLIENT_ID production
vercel env add HOOTSUITE_CLIENT_SECRET production
vercel --prod
```
### Step 2: Token Persistence
```typescript
// Use Redis, database, or KV store for token persistence
// Tokens refresh every ~1 hour and refresh_token changes each time
import { kv } from '@vercel/kv';
async function getStoredToken(): Promise<string> {
let token = await kv.get('hootsuite:access_token');
const expiresAt = await kv.get('hootsuite:expires_at') as number;
if (!token || Date.now() > expiresAt - 60000) {
const refreshToken = await kv.get('hootsuite:refresh_token') as string;
const newTokens = await refreshHootsuiteToken(refreshToken);
await kv.set('hootsuite:access_token', newTokens.access_token);
await kv.set('hootsuite:refresh_token', newTokens.refresh_token);
await kv.set('hootsuite:expires_at', Date.now() + newTokens.expires_in * 1000);
token = newTokens.access_token;
}
return token as string;
}
```
## Prerequisites
- An approved deployment change, secret references, profile/destination allowlist, and pinned client/configuration revision.
- A draft-only canary profile, baselines for health/quota/schedule behavior, and tested rollback/cancel procedures.
## Output
Produce a deployment receipt with artifact digest, environment, canary profile, health/quota/draft assertions, owner approval, rollout state, and rollback reference. Exclude post copy, media, handles, and secrets.
## Error Handling
Halt for unknown profile/destination, missing approval, public-post path in a canary, unbounded retry, or leaked copy in telemetry. Cancel/revert the schedule and restore the previous revision.
## Examples
`artifact=sha256:opaque; env=staging; canary=sandbox-brand; health=pass; draft=pass; public_posts=0; rollback=release-r31` supports controlled promotion.
## Resources
- [Vercel KV](https://vercel.com/docs/storage/vercel-kv)
- [Hootsuite OAuth](https://developer.hootsuite.com/docs/using-rest-apis)
## Next Steps
For webhooks, see `hootsuite-webhooks-events`.
---
name: hootsuite-deploy-integration-cb6ae76497af
description: 'Deploy Hootsuite integrations to Vercel, Fly.io, and Cloud Run platforms.
Use when deploying Hootsuite-powered applications to production,
configuring platform-specific secrets, or setting up deployment pipelines.
Trigger with phrases like "deploy hootsuite", "hootsuite Vercel",
"hootsuite production deploy", "hootsuite Cloud Run", "hootsuite Fly.io".
'
allowed-tools: Read, Write, Edit, Bash(vercel:*), Bash(fly:*), Bash(gcloud:*)
version: 1.6.0
license: MIT
author: Jeremy Longshore <jeremy@intentsolutions.io>
tags:
- saas
- hootsuite
- social-media
compatibility: Designed for Claude Code
---
# Hootsuite Deploy Integration
## Overview
Deploy Hootsuite social media management backends. Key consideration: OAuth refresh tokens must persist across deployments — use a database or key-value store, not environment variables.
## Instructions
### Step 1: Vercel Deployment
```typescript
// api/schedule.ts — Vercel serverless
import type { VercelRequest, VercelResponse } from '@vercel/node';
export default async function handler(req: VercelRequest, res: VercelResponse) {
if (req.method !== 'POST') return res.status(405).end();
// Get token from persistent store (not env var — tokens rotate)
const token = await getStoredToken();
const response = await fetch('https://platform.hootsuite.com/v1/messages', {
method: 'POST',
headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' },
body: JSON.stringify(req.body),
});
const result = await response.json();
res.json(result);
}
```
```bash
vercel env add HOOTSUITE_CLIENT_ID production
vercel env add HOOTSUITE_CLIENT_SECRET production
vercel --prod
```
### Step 2: Token Persistence
```typescript
// Use Redis, database, or KV store for token persistence
// Tokens refresh every ~1 hour and refresh_token changes each time
import { kv } from '@vercel/kv';
async function getStoredToken(): Promise<string> {
let token = await kv.get('hootsuite:access_token');
const expiresAt = await kv.get('hootsuite:expires_at') as number;
if (!token || Date.now() > expiresAt - 60000) {
const refreshToken = await kv.get('hootsuite:refresh_token') as string;
const newTokens = await refreshHootsuiteToken(refreshToken);
await kv.set('hootsuite:access_token', newTokens.access_token);
await kv.set('hootsuite:refresh_token', newTokens.refresh_token);
await kv.set('hootsuite:expires_at', Date.now() + newTokens.expires_in * 1000);
token = newTokens.access_token;
}
return token as string;
}
```
## Prerequisites
- An approved deployment change, secret references, profile/destination allowlist, and pinned client/configuration revision.
- A draft-only canary profile, baselines for health/quota/schedule behavior, and tested rollback/cancel procedures.
## Output
Produce a deployment receipt with artifact digest, environment, canary profile, health/quota/draft assertions, owner approval, rollout state, and rollback reference. Exclude post copy, media, handles, and secrets.
## Error Handling
Halt for unknown profile/destination, missing approval, public-post path in a canary, unbounded retry, or leaked copy in telemetry. Cancel/revert the schedule and restore the previous revision.
## Examples
`artifact=sha256:opaque; env=staging; canary=sandbox-brand; health=pass; draft=pass; public_posts=0; rollback=release-r31` supports controlled promotion.
## Resources
- [Vercel KV](https://vercel.com/docs/storage/vercel-kv)
- [Hootsuite OAuth](https://developer.hootsuite.com/docs/using-rest-apis)
## Next Steps
For webhooks, see `hootsuite-webhooks-events`.
COMPATIBILITY & REFERENCES
Platform guidance
Imported from the listed AgentSkill.sh category. Complete supplied package files and notices are retained. Required external tools and credentials are not installed. No bundled code was executed during import. Individual agent task behavior has not been tested.
Generate personalized cold email sequences (7-14 emails) with A/B test subject lines, follow-up timing recommendations, and integrated social proof. Creates multi-touch campaigns optimized for response rates. Use when users need outbound email campaigns, sales sequences, or lead generation emails.
Cloudflare Email Routing for receiving/sending emails via Workers. Use for email workers, forwarding, allowlists, or encountering Email Trigger errors, worker call failures, SPF issues.
Reference documentation for Broadcast API (sendbroadcast.net) integration. Use when working with the Broadcast email provider, creating/updating broadcasts, managing subscribers, or debugging API issues.