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
- In Clay, create a new table with Webhook as the source
- Copy the unique webhook URL Clay generates
- In Parsley, go to Hub > API Keys and create a new webhook subscription
- Paste the Clay URL, pick the events you want to subscribe to, and save
- Trigger a test event in Parsley so Clay can capture the payload structure
- 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:
- Click + New table
- Choose Source: Webhook (sometimes labeled "Add data via webhook")
- Name the table something descriptive - e.g. "Parsley Hot Leads" or "Parsley MEDDIC Signals"
- 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:
- Go to Hub in the left sidebar
- Click API Keys
- Scroll to the Webhooks section
- Click Create Webhook
- Paste the Clay webhook URL into the URL field
- Select which events you want this table to receive (see Step 3)
- 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.
| Event | Description | Plan |
|---|---|---|
| Profile Viewed | Someone views your Parsley profile | Free |
| Conversation Completed | A chatbot conversation ends on your profile | Business |
| Lead Captured | A visitor shares their contact details via chatbot or form | Business |
| Lead Scored | A lead receives a Hot, Warm, or Cold quality score | Business |
| Signal Detected | A MEDDIC buying signal is identified during conversation | Business |
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:
- Back in Parsley, use the Send test event action in Hub > API Keys to fire a sample payload at the Clay URL
- Refresh your Clay table - you'll see a row appear with columns matching the event payload
- 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
| Field | Description | Example |
|---|---|---|
id | Event ID | evt_abc123 |
type | Event type | profile.viewed |
createdAt | Timestamp (ISO 8601) | 2026-05-05T14:30:00Z |
data.profileUserId | Your Parsley user ID | user_abc123 |
data.visitorId | Unique visitor identifier | vis_def456 |
data.source | Traffic source | linkedin |
data.referer | Full referrer URL | https://www.linkedin.com/in/janesmith |
Conversation Completed
| Field | Description | Example |
|---|---|---|
id | Event ID | evt_abc123 |
type | Event type | chatbot.conversation.completed |
createdAt | Timestamp (ISO 8601) | 2026-05-05T14:30:00Z |
data.conversationId | Conversation ID | conv_abc123 |
data.profileUserId | Your Parsley user ID | user_abc123 |
data.visitorId | Unique visitor identifier | vis_def456 |
data.messageCount | Total messages exchanged | 8 |
data.topics | Topics discussed (comma-joined string) | "pricing, enterprise features" |
Lead Captured
| Field | Description | Example |
|---|---|---|
id | Event ID | evt_abc123 |
type | Event type | lead.captured |
createdAt | Timestamp (ISO 8601) | 2026-05-05T14:30:00Z |
data.conversationId | Conversation ID | conv_abc123 |
data.profileUserId | Your Parsley user ID | user_abc123 |
data.visitorId | Unique visitor identifier | vis_def456 |
data.leadEmail | Lead's email address | buyer@acmecorp.com |
data.leadName | Lead's name | Alex Johnson |
data.source | Capture source | chatbot |
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.
| Field | Description | Example |
|---|---|---|
id | Event ID | evt_abc123 |
type | Event type | lead.scored |
createdAt | Timestamp (ISO 8601) | 2026-05-05T14:30:00Z |
data.conversationId | Conversation ID | conv_abc123 |
data.profileUserId | Your Parsley user ID | user_abc123 |
data.visitorId | Unique visitor identifier | vis_def456 |
data.leadQuality | Lead temperature | hot |
data.intentScore | Intent score (1-5) | 5 |
data.intentSignal | Intent classification | high_intent |
data.meddic.metrics | Metrics signal detected | true |
data.meddic.economicBuyer | Economic Buyer detected | true |
data.meddic.decisionCriteria | Decision Criteria detected | true |
data.meddic.decisionProcess | Decision Process detected | false |
data.meddic.identifyPain | Identify Pain detected | true |
data.meddic.champion | Champion detected | false |
data.leadEmail | Lead's email (present once shared) | buyer@acmecorp.com |
data.leadName | Lead's name (present once shared) | Alex Johnson |
data.topics | Topics discussed (comma-joined string) | "pricing, enterprise features" |
Signal Detected
| Field | Description | Example |
|---|---|---|
id | Event ID | evt_abc123 |
type | Event type | signal.detected |
createdAt | Timestamp (ISO 8601) | 2026-05-05T14:30:00Z |
data.conversationId | Conversation ID | conv_abc123 |
data.profileUserId | Your Parsley user ID | user_abc123 |
data.visitorId | Unique visitor identifier | vis_def456 |
data.signalType | MEDDIC signal type | identifyPain |
data.quote | Verbatim quote from conversation | "We are losing deals because..." |
data.confidence | Confidence level | high |
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:
- 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." - 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." - 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:
- HTTP API column to your CRM (Attio, HubSpot, Salesforce, etc.) - PATCH the contact identified by
data.visitorIdand add a tag likeparsley: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:
- 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." - 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
- See all Parsley integrations - CRM and automation options
- Learn more about Clay + Parsley - marketing overview with recipe walkthroughs
- Compare with Pabbly Connect - same events, different action layer
- Manage your API keys and webhooks - create, revoke, and monitor
Questions? Contact us or email peter@parsley.id.
