<< All versions
Skill v1.0.0
currentLLM-judged scan95/100bcharleson/clay-gtm-cli/clay-crm-sync
──Details
PublishedOctober 23, 2026 at 03:42 PM
Content Hashsha256:db25a360c0a8624c...
Git SHA42328618c3c5
──Files
Files (1 file, 3.9 KB)
SKILL.md3.9 KBactive
SKILL.md · 144 lines · 3.9 KB
version: "1.0.0"
clay-crm-sync — CRM Data Enrichment and Sync
Enrich and update CRM records (Salesforce, HubSpot, Pipedrive) by running contacts and companies through Clay enrichment, then writing back enriched fields. Keeps your CRM clean and complete without manual data entry.
install
bash
npm install -g clay-gtm-clibrew install cloudflaredclay tables add \--name crm-enrich \--webhook-url https://app.clay.com/webhook/YOUR_WEBHOOK_ID \--description "Enrich a CRM record and return updated fields for writeback"clay listen start
commands
bash
# Enrich a contact record (pass whatever fields you have)clay fire crm-enrich \--data '{"crm_id": "003Dn00000XzABCIAM","crm_type": "contact","email": "john@acme.com","first_name": "John","last_name": "Doe","company": "Acme Corp"}' \--wait# Enrich an account record by domainclay fire crm-enrich \--data '{"crm_id": "001Dn00000XzXYZIAM","crm_type": "account","domain": "acme.com"}' \--wait# Enrich with LinkedIn URL (most complete enrichment)clay fire crm-enrich \--data '{"crm_id": "003Dn00000XzABCIAM","crm_type": "contact","linkedin_url": "https://linkedin.com/in/jdoe","email": "john@acme.com"}' \--wait# Enrich a stale record (missing title/department)clay fire crm-enrich \--data '{"crm_id": "003Dn00000XzABCIAM","crm_type": "contact","email": "john@acme.com","enrich_fields": ["title", "phone", "linkedin_url", "department"]}' \--wait
output
json
{"success": true,"table": "crm-enrich","data": {"crm_id": "003Dn00000XzABCIAM","crm_type": "contact","enriched_fields": {"title": "VP of Revenue Operations","department": "Revenue Operations","phone": "+1-415-555-0100","linkedin_url": "https://linkedin.com/in/jdoe","company_domain": "acme.com","company_employee_count": 450,"company_funding_stage": "Series C","company_industry": "SaaS","email_verified": true,"email_confidence": 0.96,"icp_score": 88,"icp_tier": "A","last_enriched_at": "2026-03-05T17:00:00Z"},"changed_fields": ["title", "phone", "linkedin_url", "company_employee_count"],"unchanged_fields": ["email", "first_name", "last_name"]}}
clay table setup
- Trigger: Webhook (pass CRM ID + whatever fields you have)
- Steps:
- Person Enrichment (LinkedIn/Clearbit)
- Company Enrichment (domain lookup)
- Email Validation
- ICP Scoring
- Final step: HTTP API → POST to
{{_callback_url}}withcrm_id+ enriched fields for CRM writeback
common patterns
bash
# Enrich a contact and write back to SalesforceRESULT=$(clay fire crm-enrich \--data '{"crm_id":"003XYZ","email":"john@acme.com","linkedin_url":"https://linkedin.com/in/jdoe"}' \--wait)CRM_ID=$(echo $RESULT | jq -r '.data.crm_id')TITLE=$(echo $RESULT | jq -r '.data.enriched_fields.title')PHONE=$(echo $RESULT | jq -r '.data.enriched_fields.phone')ICP=$(echo $RESULT | jq -r '.data.enriched_fields.icp_tier')echo "CRM ID $CRM_ID: Title=$TITLE, Phone=$PHONE, ICP=$ICP"# Then call your CRM API to write back these fields# Batch enrich contacts from a CRM exportcat crm_export.json | jq -c '.[]' | while read contact; doclay fire crm-enrich --data "$contact" --wait \| jq '{crm_id: .data.crm_id, fields: .data.enriched_fields}'done# Find and enrich contacts missing LinkedIn URLscat crm_export.json | jq -c '.[] | select(.linkedin_url == null or .linkedin_url == "")' \| while read contact; doclay fire crm-enrich --data "$contact" --wait \| jq 'select(.data.enriched_fields.linkedin_url != null)'done# Nightly enrichment job (add to crontab)# 0 2 * * * run this script on contacts updated in last 24h
row limit
bash
clay usage show crm-enrichclay tables reset crm-enrich --webhook-url https://app.clay.com/webhook/NEW_ID