clay-hello-world
Provides a minimal setup guide for sending records to Clay via webhooks and testing enrichment workflows.
Install
mkdir -p .claude/skills/clay-hello-world && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/7092" && unzip -o skill.zip -d .claude/skills/clay-hello-world && rm skill.zipInstalls to .claude/skills/clay-hello-world
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Send your first record to Clay and get enriched data back.Key capabilities
- →Send a single company domain to a Clay table via webhook
- →Batch send multiple company domains to a Clay table
- →Automate data injection into Clay tables using Node.js
- →Automate data injection into Clay tables using Python
- →Verify data enrichment in Clay tables
How it works
This skill sends company domains to a Clay table via a webhook, triggering Clay's enrichment columns to automatically fill in company data. It then retrieves the enriched results.
Inputs & outputs
When to use clay-hello-world
- →Test Clay webhook ingestion
- →Verify data enrichment in Clay workbooks
- →Automate record creation in Clay
- →Validate API-based data workflows
About this skill
Clay Hello World
Overview
Minimal working example: send a company domain to a Clay table via webhook, let Clay's enrichment columns fill in company data, and retrieve the enriched result. Clay does not have a traditional SDK — you interact with it via webhooks (data in), HTTP API columns (data out), and the web UI.
Prerequisites
- Completed
clay-install-authsetup - Clay workbook with a webhook source configured
- At least one enrichment column added to the table
Instructions
Step 1: Create a Clay Table with Enrichment
In the Clay web UI:
- Create a new workbook
- Add columns:
domain,company_name,employee_count,industry - Click + Add at bottom, select Webhooks > Monitor webhook
- Copy the webhook URL
- Add an enrichment column: + Add Column > Enrich Company (uses the
domaincolumn as input)
Step 2: Send Your First Record via Webhook
# Send a single company domain to your Clay table
curl -X POST "https://app.clay.com/api/v1/webhooks/YOUR_WEBHOOK_ID" \
-H "Content-Type: application/json" \
-d '{"domain": "openai.com"}'
Within seconds, Clay creates a new row and auto-runs the enrichment column. The company_name, employee_count, and industry columns fill in automatically.
Step 3: Send Multiple Records
# Batch send — each object becomes a row
for domain in stripe.com notion.so figma.com linear.app; do
curl -s -X POST "https://app.clay.com/api/v1/webhooks/YOUR_WEBHOOK_ID" \
-H "Content-Type: application/json" \
-d "{\"domain\": \"$domain\"}"
echo " -> Sent $domain"
done
Step 4: Send from Node.js
// hello-clay.ts — send records to Clay via webhook
const CLAY_WEBHOOK_URL = process.env.CLAY_WEBHOOK_URL!;
interface LeadInput {
email?: string;
domain?: string;
first_name?: string;
last_name?: string;
linkedin_url?: string;
}
async function sendToClay(lead: LeadInput): Promise<Response> {
const response = await fetch(CLAY_WEBHOOK_URL, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(lead),
});
if (!response.ok) {
throw new Error(`Clay webhook failed: ${response.status} ${response.statusText}`);
}
return response;
}
// Send a test lead
await sendToClay({
email: '[email protected]',
first_name: 'Jane',
last_name: 'Doe',
domain: 'stripe.com',
});
console.log('Record sent to Clay — check your table for enriched data.');
Step 5: Send from Python
import requests
import os
CLAY_WEBHOOK_URL = os.environ["CLAY_WEBHOOK_URL"]
def send_to_clay(lead: dict) -> requests.Response:
"""Send a lead record to a Clay table via webhook."""
response = requests.post(
CLAY_WEBHOOK_URL,
json=lead,
headers={"Content-Type": "application/json"},
)
response.raise_for_status()
return response
# Test it
send_to_clay({
"email": "[email protected]",
"first_name": "Jane",
"last_name": "Doe",
"domain": "stripe.com",
})
print("Record sent to Clay — check your table for enriched data.")
Error Handling
| Error | Cause | Solution |
|---|---|---|
404 Not Found | Invalid webhook URL | Re-copy URL from Clay table settings |
422 Unprocessable | Invalid JSON payload | Validate JSON structure before sending |
| Row appears but no enrichment | Enrichment column not configured | Add enrichment column in Clay UI, enable auto-run |
429 Too Many Requests | Exceeded webhook rate limit | Add 100ms delay between requests |
| Webhook limit reached (50K) | Webhook exhausted | Create a new webhook source on the table |
Output
- New row(s) visible in your Clay table
- Enrichment columns auto-populated with company/person data
- Console confirmation of successful webhook delivery
Resources
- Clay University — Webhook Integration Guide
- Clay University — Using Clay as an API
Next Steps
Proceed to clay-local-dev-loop for iterating on enrichment workflows locally.
When not to use it
- →When a Clay workbook with a webhook source is not configured
- →When enrichment columns are not added to the Clay table
Prerequisites
Limitations
- →Invalid webhook URL will result in a 404 Not Found error
- →Invalid JSON payload will result in a 422 Unprocessable error
- →Exceeding the webhook rate limit may result in a 429 Too Many Requests error
How it compares
This workflow automates the process of sending data to Clay and triggering enrichments, unlike manual data entry or separate enrichment processes.
Compared to similar skills
clay-hello-world side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| clay-hello-world (this skill) | 1 | 27d | Caution | Beginner |
| webapp-testing | 353 | 3mo | Review | Intermediate |
| dev-browser | 53 | 4mo | Review | Intermediate |
| playwright-browser-automation | 29 | 7mo | Review | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by jeremylongshore
View all by jeremylongshore →You might also like
webapp-testing
anthropics
Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.
dev-browser
SawyerHood
Browser automation with persistent page state. Use when users ask to navigate websites, fill forms, take screenshots, extract web data, test web apps, or automate browser workflows. Trigger phrases include "go to [url]", "click on", "fill out the form", "take a screenshot", "scrape", "automate", "test the website", "log into", or any browser interaction request.
playwright-browser-automation
lackeyjb
Complete browser automation with Playwright. Auto-detects dev servers, writes clean test scripts to /tmp. Test pages, fill forms, take screenshots, check responsive design, validate UX, test login flows, check links, automate any browser task. Use when user wants to test websites, automate browser interactions, validate web functionality, or perform any browser-based testing.
windows-ui-automation
martinholovsky
Expert in Windows UI Automation (UIA) and Win32 APIs for desktop automation. Specializes in accessible, secure automation of Windows applications including element discovery, input simulation, and process interaction. HIGH-RISK skill requiring strict security controls for system access.
unity-mcp-orchestrator
CoplayDev
Orchestrate Unity Editor via MCP (Model Context Protocol) tools and resources. Use when working with Unity projects through MCP for Unity - creating/modifying GameObjects, editing scripts, managing scenes, running tests, or any Unity Editor automation. Provides best practices, tool schemas, and workflow patterns for effective Unity-MCP integration.
agent-browser
vercel-labs
Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to "open a website", "fill out a form", "click a button", "take a screenshot", "scrape data from a page", "test this web app", "login to a site", "automate browser actions", or any task requiring programmatic web interaction.