Real gotchas when using Clay's data enrichment platform. Clay's credit-based waterfall enrichment model, table-based workflow, and multi-provider data sourcing create specific failure modes.
Enable "Stop on first result" on each waterfall step. Without this, all providers run even after finding data, burning 3x credits per lookup.
Clay charges credits per row processed, even if input data is blank. Validate emails contain @, filter empty fields, and deduplicate before sending rows.
Clay auto-maps CSV columns by name. "Company Name" vs "company_name" causes silent mismatches. Normalize: strip().lower().replace(" ", "_").
Batch rows (50 per request) with 2-second delays between batches. Handle 429 responses by reading the Retry-After header.
Enrichments run asynchronously. Poll with exponential backoff (up to 30s) or use webhooks instead of reading immediately after row creation.
For detailed code examples (Python and TypeScript) of each pitfall and fix, load the reference guide:
Read(${CLAUDE_SKILL_DIR}/references/implementation-guide.md)
| Issue | Cause | Solution |
|---|---|---|
| Credits burning fast | Waterfall not stopping on match | Enable "stop on first result" |
| Blank enrichment results | Input rows have invalid data | Pre-validate before sending |
| Column mapping errors | CSV header mismatch | Normalize headers before import |
| 429 rate limit errors | Too many API calls/minute | Batch requests with delays |
| Empty enrichment fields | Reading before enrichment completes | Poll with backoff or use webhooks |
See audit implementation details for output format specifications.
Basic usage: Apply clay known pitfalls to a standard project setup with default configuration options.
Advanced scenario: Customize clay known pitfalls for production environments with multiple constraints and team-specific requirements.