| name | clay-deploy-integration |
| description | Deploy Clay-powered applications to Vercel, Cloud Run, or Docker with proper secrets management.
Use when deploying Clay webhook receivers, enrichment pipelines,
or CRM sync services to production infrastructure.
Trigger with phrases like "deploy clay", "clay Vercel", "clay production deploy",
"clay Cloud Run", "clay Docker", "host clay integration".
|
| allowed-tools | Read, Write, Edit, Bash(vercel:*), Bash(gcloud:*), Bash(docker:*) |
| version | 1.14.0 |
| license | MIT |
| author | Jeremy Longshore <jeremy@intentsolutions.io> |
| tags | ["saas","clay","deployment"] |
| compatibility | Designed for Claude Code, also compatible with Codex and OpenClaw |
Clay Deploy Integration
Overview
Deploy applications that integrate with Clay (webhook receivers, enrichment processors, CRM sync services) to production platforms. Clay itself is a hosted SaaS -- you deploy the code that interacts with Clay, not Clay itself. The critical requirement is a publicly accessible HTTPS endpoint for Clay's HTTP API columns to call back to.
Prerequisites
- Application code that handles Clay webhooks or HTTP API callbacks
- Platform CLI installed (vercel, gcloud, or docker)
- Clay webhook URL and/or API key stored securely
- HTTPS endpoint accessible from the public internet
Instructions
Step 1: Vercel Deployment (Serverless)
Best for: Webhook receivers, small-scale enrichment handlers.
vercel env add CLAY_WEBHOOK_URL production
vercel env add CLAY_API_KEY production
vercel env add CLAY_WEBHOOK_SECRET production
vercel --prod
import type { VercelRequest, VercelResponse } from '@vercel/node';
import crypto from 'crypto';
export default async function handler(req: VercelRequest, res: VercelResponse) {
if (req.method !== 'POST') return res.status(405).end();
signature = req.[] ;
secret = process..!;
expected = crypto.(, secret)
.(.(req.))
.();
(!crypto.(.(signature || ), .(expected))) {
res.().({ : });
}
enrichedLead = req.;
.(, {
: enrichedLead.,
: enrichedLead.,
: enrichedLead.,
});
(enrichedLead);
res.().({ : });
}