| name | clay-local-dev-loop |
| description | Set up a local development loop for building and testing Clay integrations.
Use when iterating on Clay webhook handlers, testing enrichment pipelines,
or building scripts that push data into Clay tables.
Trigger with phrases like "clay local dev", "clay development setup",
"clay testing locally", "clay dev workflow", "iterate clay integration".
|
| allowed-tools | Read, Write, Edit, Bash(curl:*), Bash(npm:*), Bash(npx:*), Bash(node:*), Bash(python3:*) |
| version | 1.14.0 |
| license | MIT |
| author | Jeremy Longshore <jeremy@intentsolutions.io> |
| tags | ["saas","clay","development","testing"] |
| compatibility | Designed for Claude Code, also compatible with Codex and OpenClaw |
Clay Local Dev Loop
Overview
Clay is a web-based platform with no local runtime. Your local dev loop consists of: (1) scripts that push data into Clay via webhooks, (2) Clay enrichment running in the cloud, and (3) HTTP API columns pushing enriched data back to your local endpoint via ngrok. This skill sets up that feedback loop.
Prerequisites
- Completed
clay-install-auth setup
- Node.js 18+ or Python 3.10+
- ngrok installed (
npm install -g ngrok or ngrok.com)
- Clay table with webhook source configured
Instructions
Step 1: Expose Your Local Server via ngrok
Clay's HTTP API enrichment columns need a public URL to call your local endpoints.
ngrok http 3000
Step 2: Create a Local Webhook Receiver
import express from 'express';
const app = express();
app.use(express.json());
app.post('/api/clay/enriched', (req, res) => {
const enrichedData = req.body;
console.log('Enriched record received from Clay:', {
email: enrichedData.email,
company: enrichedData.company_name,
title: enrichedData.job_title,
enrichment_source: enrichedData._clay_source,
});
res.({ : , : ().() });
});
app.(, {
res.({ : , : });
});
app.(, {
.();
.();
});