Docs/Clay Integration Setup
All Docs
10 min read

Clay Integration Setup

Trigger Clay workflows from Parsley intent signals. Every chatbot conversation that scores Hot, every MEDDIC signal detected - lands as a row in your Clay table, ready for enrichment and outbound.

Trigger Clay workflows from real buyer intent. When a prospect engages your Parsley AI assistant and the conversation scores Hot, fires a MEDDIC signal, or captures a lead, that event lands as a new row in your Clay table - ready for Claygent enrichment, action steps, and outbound.

The pitch: Clay is the action layer. Parsley is the signal source. No middleware, no Zapier seat, no synthetic events.

Quick Setup

  1. In Clay, create a new table with Webhook as the source
  2. Copy the unique webhook URL Clay generates
  3. In Parsley, go to Hub > API Keys and create a new webhook subscription
  4. Paste the Clay URL, pick the events you want to subscribe to, and save
  5. Trigger a test event in Parsley so Clay can capture the payload structure
  6. Add Claygent or HTTP API columns to enrich, then a write step to push downstream

Events flow into Clay automatically from that point on. Each event = one row.

Prerequisites

  • A Clay account. Any plan that supports webhook-sourced tables works. clay.com
  • A Parsley account. The Profile Viewed event is available on all plans. The four high-signal events (conversations, leads, scoring, MEDDIC) require a paid plan or credit balance. View pricing.
  • Access to Hub > API Keys in your Parsley dashboard.

Step 1: Create a Clay table sourced by webhook

From your Clay workspace:

  1. Click + New table
  2. Choose Source: Webhook (sometimes labeled "Add data via webhook")
  3. Name the table something descriptive - e.g. "Parsley Hot Leads" or "Parsley MEDDIC Signals"
  4. Clay generates a unique webhook URL. Copy it.

You'll paste this URL into Parsley in the next step.

Step 2: Create a webhook subscription in Parsley

From your Parsley dashboard:

  1. Go to Hub in the left sidebar
  2. Click API Keys
  3. Scroll to the Webhooks section
  4. Click Create Webhook
  5. Paste the Clay webhook URL into the URL field
  6. Select which events you want this table to receive (see Step 3)
  7. Click Create

Parsley generates a signing secret for HMAC verification - useful if you want to validate authenticity inside Clay via an HTTP column.

Step 3: Choose your events

Parsley fires 5 webhook events. Profile Viewed is available on all plans. The remaining four require a paid plan or credit balance.

EventDescriptionPlan
Profile ViewedSomeone views your Parsley profileFree
Conversation CompletedA chatbot conversation ends on your profileBusiness
Lead CapturedA visitor shares their contact details via chatbot or formBusiness
Lead ScoredA lead receives a Hot, Warm, or Cold quality scoreBusiness
Signal DetectedA MEDDIC buying signal is identified during conversationBusiness

The most common pattern: one Clay table subscribed to Lead Scored, filtered to data.leadQuality = "hot" inside Clay. That table becomes your hot-lead pipeline.

You can also create separate Parsley webhooks pointing to separate Clay tables - one for hot leads, one for raw conversation data, one for MEDDIC champions. Each event fires to all matching subscriptions.

Step 4: Capture sample data in Clay

Clay's webhook source needs at least one real payload before the table columns auto-populate:

  1. Back in Parsley, use the Send test event action in Hub > API Keys to fire a sample payload at the Clay URL
  2. Refresh your Clay table - you'll see a row appear with columns matching the event payload
  3. The columns mirror the JSON structure: data.leadEmail, data.leadQuality, data.meddic.metrics, etc.

You can now reference these fields in subsequent Clay columns.

Step 5: Data fields

Each event sends a specific payload. Use these to build columns and conditions in Clay.

Profile Viewed

FieldDescriptionExample
idEvent IDevt_abc123
typeEvent typeprofile.viewed
createdAtTimestamp (ISO 8601)2026-05-05T14:30:00Z
data.profileUserIdYour Parsley user IDuser_abc123
data.visitorIdUnique visitor identifiervis_def456
data.sourceTraffic sourcelinkedin
data.refererFull referrer URLhttps://www.linkedin.com/in/janesmith

Conversation Completed

FieldDescriptionExample
idEvent IDevt_abc123
typeEvent typechatbot.conversation.completed
createdAtTimestamp (ISO 8601)2026-05-05T14:30:00Z
data.conversationIdConversation IDconv_abc123
data.profileUserIdYour Parsley user IDuser_abc123
data.visitorIdUnique visitor identifiervis_def456
data.messageCountTotal messages exchanged8
data.topicsTopics discussed (comma-joined string)"pricing, enterprise features"

Lead Captured

FieldDescriptionExample
idEvent IDevt_abc123
typeEvent typelead.captured
createdAtTimestamp (ISO 8601)2026-05-05T14:30:00Z
data.conversationIdConversation IDconv_abc123
data.profileUserIdYour Parsley user IDuser_abc123
data.visitorIdUnique visitor identifiervis_def456
data.leadEmailLead's email addressbuyer@acmecorp.com
data.leadNameLead's nameAlex Johnson
data.sourceCapture sourcechatbot

Lead Scored

leadEmail and leadName are present once the visitor has shared contact details and omitted on earlier turns. topics is a comma-joined string for clean column mapping in Clay.

FieldDescriptionExample
idEvent IDevt_abc123
typeEvent typelead.scored
createdAtTimestamp (ISO 8601)2026-05-05T14:30:00Z
data.conversationIdConversation IDconv_abc123
data.profileUserIdYour Parsley user IDuser_abc123
data.visitorIdUnique visitor identifiervis_def456
data.leadQualityLead temperaturehot
data.intentScoreIntent score (1-5)5
data.intentSignalIntent classificationhigh_intent
data.meddic.metricsMetrics signal detectedtrue
data.meddic.economicBuyerEconomic Buyer detectedtrue
data.meddic.decisionCriteriaDecision Criteria detectedtrue
data.meddic.decisionProcessDecision Process detectedfalse
data.meddic.identifyPainIdentify Pain detectedtrue
data.meddic.championChampion detectedfalse
data.leadEmailLead's email (present once shared)buyer@acmecorp.com
data.leadNameLead's name (present once shared)Alex Johnson
data.topicsTopics discussed (comma-joined string)"pricing, enterprise features"

Signal Detected

FieldDescriptionExample
idEvent IDevt_abc123
typeEvent typesignal.detected
createdAtTimestamp (ISO 8601)2026-05-05T14:30:00Z
data.conversationIdConversation IDconv_abc123
data.profileUserIdYour Parsley user IDuser_abc123
data.visitorIdUnique visitor identifiervis_def456
data.signalTypeMEDDIC signal typeidentifyPain
data.quoteVerbatim quote from conversation"We are losing deals because..."
data.confidenceConfidence levelhigh

Step 6: Clay table recipes

These are the patterns the certified GTM agencies tend to build. Each one starts from a Parsley webhook and ends with an action.

Recipe 1: Hot lead → Claygent enrichment → outbound draft

Subscribe to: Lead Scored

Filter: data.leadQuality = "hot" AND data.leadEmail != null

The email filter matters because Lead Scored fires every conversation turn - on early turns before the visitor has shared their email, data.leadEmail is omitted. Filtering on its presence ensures only enrichable rows reach Claygent.

Columns to add in Clay:

  1. Claygent column. Prompt: "Find this person on LinkedIn using their email {{ data.leadEmail }}. Return their current title, company, company size, and one recent post topic."
  2. Claygent column. Prompt: "Given this person works at {{ enriched.company }} and asked about {{ data.topics }} on a Parsley demo, write a 3-sentence LinkedIn DM that opens with their recent post topic and pivots to the topics they discussed. No emojis, no fluff."
  3. HTTP API column (optional). POST to your CRM, n8n workflow, or a notification webhook.

The result: every Hot lead from a Parsley conversation gets enriched and drafted within minutes of the chatbot scoring them.

Recipe 2: MEDDIC champion detected → tag in CRM

Subscribe to: Signal Detected

Filter: data.signalType = "champion"

Columns to add:

  1. HTTP API column to your CRM (Attio, HubSpot, Salesforce, etc.) - PATCH the contact identified by data.visitorId and add a tag like parsley:champion-signal.

Pairs well with Parsley's native CRM integrations - the CRM gets both the structured tag and Clay's enriched context in the same workflow.

Recipe 3: Conversation log → topic clustering for content

Subscribe to: Conversation Completed

Filter: none - capture everything

Columns to add:

  1. Claygent column. Prompt: "Given a chatbot conversation about topics {{ data.topics }} lasting {{ data.duration }} seconds with {{ data.messageCount }} messages, classify into one of: pricing-questions / technical-deep-dive / competitor-comparison / use-case-fit / not-buyer."
  2. Pivot view in Clay grouping by classification.

Surfaces what your prospects are actually asking about - useful for content planning, sales enablement, and identifying knowledge gaps in your AI assistant's training docs.

Why Clay?

Clay is the de facto action layer for GTM teams. Its strength is composing data from many sources (Parsley intent + LinkedIn + Apollo + your CRM + your data warehouse) into a single row, then taking conditional action - enrich, draft, send, sync.

Parsley is built on Google Gemini and captures first-party buyer intent passively from chatbot conversations. Pairing the two means: real intent signal triggers a real outbound action, with no manual handoff and no synthetic "they visited a page" weak signal.

This integration deliberately scopes to one direction - Parsley triggers Clay. For the reverse (Clay enriching Parsley contacts), use Parsley's public API directly from a Clay HTTP column.

Troubleshooting

Clay table is not receiving events

  • Verify your webhook subscription in Parsley (Hub > API Keys) is marked as active
  • Check that the Clay webhook URL was copied correctly (no trailing whitespace)
  • Use the Send test event feature in Parsley to send a sample payload
  • Check the Parsley webhook delivery log for failed delivery attempts

Webhook delivery failing

Parsley retries webhook deliveries up to 3 times with exponential backoff (1 second, 5 seconds, 30 seconds). If all attempts fail:

  • Confirm the Clay table is still active and not paused
  • Confirm Clay is returning a 2xx response to webhook POSTs
  • Check Clay's table-source logs for parse errors

Business events unavailable

The Conversation Completed, Lead Captured, Lead Scored, and Signal Detected events require a paid plan or credit balance. View pricing. The Profile Viewed event works on all plans.

Columns not auto-populating in Clay

  • Make sure you fired at least one real event so Clay could capture the JSON shape
  • If a field shows as empty, that field was not present in the specific event payload (e.g. no referrer URL when the visitor navigated directly)
  • Use the Send test event feature in Parsley to generate a complete sample payload

What's Next


Questions? Contact us or email peter@parsley.id.

Ready to connect your CRM?