Summary
This source did not publish a separate summary. Review SKILL.md before using the skill.
Clay Production Checklist
Overview
Complete checklist for launching Clay enrichment pipelines in production. Covers table configuration, credit budgeting, webhook reliability, CRM sync validation, and monitoring setup.
Prerequisites
- Clay table tested with sample data (100+ rows enriched successfully)
- CRM integration tested in staging
- Credit budget approved for monthly volume
- Team trained on Clay table management
Instructions
Phase 1: Table Configuration
Phase 2: Data Quality Gates
Deduplication active -- duplicate records detected before sending to Clay Sample enrichment run completed -- 500+ row test with >60% email find rate Credit cost per row calculated -- know your average credits per enriched lead// Pre-submission validation (run before pushing to Clay)
function validateForProduction(rows: any[]): { valid: any[]; rejected: any[] } {
const personalDomains = ['gmail.com', 'yahoo.com', 'hotmail.com', 'outlook.com', 'icloud.com'];
const seen = new Set<string>();
const valid: any[] = [];
const rejected: any[] = [];
for (const row of rows) {
const key = `${row.domain}:${row.first_name}:${row.last_name}`.toLowerCase();
if (!row.domain?.includes('.'))
rejected.push({ row, reason: 'invalid domain' });
else if (personalDomains.some(d => row.domain.endsWith(d)))
rejected.push({ row, reason: 'personal email domain' });
else if (seen.has(key))
rejected.push({ row, reason: 'duplicate' });
else {
seen.add(key);
valid.push(row);
}
}
console.log(`Validation: ${valid.length} valid, ${rejected.length} rejected (${(rejected.length / rows.length * 100).toFixed(1)}% filtered)`);
return { valid, rejected };
}
Phase 3: Credit & Cost Controls
| Plan | Monthly Credits | Actions | HTTP API | Webhook Limit |
|---|
| Launch | 2,500 | 15,000 | No | 50K/webhook |
| Growth | 6,000 | 40,000 | Yes | 50K/webhook |
| Enterprise | Custom | Custom | Yes | 50K/webhook |
Phase 4: Integration Reliability
# Pre-flight connectivity checks
echo "=== Clay Production Pre-flight ==="
# 1. Webhook reachable
curl -s -o /dev/null -w "Webhook: HTTP %{http_code}\n" \
-X POST "$CLAY_WEBHOOK_URL" \
-H "Content-Type: application/json" \
-d '{"_preflight": true}'
# 2. Enterprise API (if applicable)
if [ -n "${CLAY_API_KEY:-}" ]; then
curl -s -o /dev/null -w "Enterprise API: HTTP %{http_code}\n" \
-X POST "https://api.clay.com/v1/people/enrich" \
-H "Authorization: Bearer $CLAY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"email": "[email protected]"}'
fi
# 3. Callback endpoint reachable
curl -s -o /dev/null -w "Callback endpoint: HTTP %{http_code}\n" \
"https://your-app.com/api/health"
Phase 5: Monitoring & Alerting
Phase 6: Documentation & Runbooks
Error Handling
| Alert | Condition | Action |
|---|
| Credit balance low | < 500 credits remaining | Pause enrichments, add credits or connect own keys |
| Email find rate drop | < 40% for 2+ hours | Check input data quality, review provider status |
| Webhook 429s | > 5 per hour | Reduce submission rate, check plan limits |
| CRM sync failures | > 10 per batch | Check CRM field mapping, verify API key |
Resources
Next Steps
For version upgrades, see clay-upgrade-migration.