GTM engineering
Competitor activity becomes a Clay enrichment column that names the buyer and the competitor
Clay's built-in competitor data returns market rivals. This column returns evaluations happening in your accounts.
Competitor activity as a Clay column is an enrichment that, keyed on the account domain, returns whether a named buyer at that account accepted a reachout from a named competitor. Both sides are confirmed: the buyer's identity, role, and company, and the competitor named. Deal Intelligence reports it at 0.95 or higher confidence, refreshed daily, and writes it back as a column on your Clay table.
That is a different thing from what Clay's native competitor data point returns, and a different thing from intent signals piped into a table. Those describe a company's market rivals or an anonymous, account-level guess. This column is evidence about a person. The rest of this page is the implementation: the two ways a GTM engineer wires it in, what each returned field means, and how the refresh behaves. See competitor activity in your accounts for the full picture.
Competitor activity as a Clay column names the buyer and the competitor
Competitor activity as a Clay column is an enrichment that takes an account domain and returns a confirmed event: a named buyer at that account accepted a reachout from a named competitor. The column reports the buyer, the buyer's role, the competitor, the scenario, the confidence, and the date the activity was observed. Deal Intelligence confirms both sides at 0.95 or higher confidence and refreshes the data daily.
Set that against the signal most Clay tables carry. Intent enrichment returns an anonymous, account-level guess that someone might be researching a topic. This column returns a person you can name and a competitor you can name.
Intent says an account might be looking. Competitor activity says a named buyer accepted a reachout from a named competitor.
That distinction is the whole reason to add the column. A GTM engineer is not enriching for firmographics here. The column is a filter that surfaces the rows where a deal is forming, in play, reopening, or at risk. Read it alongside competitor activity in your accounts.
Clay's built-in competitor data returns market rivals, not evaluations in your accounts
The phrase "Clay competitor data" maps to two existing features, and neither answers which of your accounts is evaluating a competitor. It helps to name both and set them aside.
- Clay's competitor data point. Enrich a company and get its market competitors back: revenue, headcount, parent company, Owler-style firmographics. This describes the rival landscape of a company. It does not say anyone at the account is in a deal with a rival.
- Clay intent signals. Probabilistic, account-level inference piped in from a third party or a website-change webhook. It models that someone at the account might be researching a topic. It does not name the buyer or confirm the competitor.
- Deal Intelligence competitor activity. A confirmed, person-level event. A named buyer accepted a reachout from a named competitor, verified on both sides. This is the evaluation happening in your account.
| Dimension | Clay competitor data | Clay intent signals | Competitor activity |
|---|
| Returns | A company's market rivals | Topic interest at an account | An evaluation in your account |
| Identity | Firmographic | Anonymous | Named buyer |
| Competitor | The market, not your deal | Inferred or absent | Named competitor |
| Resolution | Company-level | Account-level | Person-level |
| Nature | Descriptive | Probabilistic | Confirmed at 0.95+ |
The first two are useful for what they are. They just answer a different question. For the full breakdown see intent data vs competitor activity.
An HTTP API enrichment column wires Deal Intelligence into Clay directly
The direct route uses Clay's HTTP API enrichment. The account domain already in your table becomes the input, and the returned JSON maps to new columns. A GTM engineer can stand this up in a few steps.
- Add an enrichment column. On the table, add a column and select the HTTP API enrichment.
- Point it at the endpoint. Set the request to GET /v1/competitive_activity on the Deal Intelligence REST API.
- Pass the domain dynamically. Reference the table's domain column as a dynamic value in the query, so each row sends its own account.
- Store the key at workspace level. Put the API key in a workspace secret and send it as a header, not inline per row.
- Map the response. Expand the returned JSON and map buyer_name, competitor, scenario, confidence, and observed_date to their own columns.
The column fires per row, so it runs against the accounts already in the table rather than pulling a new list. Most rows return empty, because activity is the exception, not the norm. The rows that return populated are the ones worth a play. See the endpoint shape in verified competitor activity.
Routing through the CRM lets the Clay column read the same fields the rest of GTM uses
The second route reads from the CRM instead of calling the API directly. Deal Intelligence writes custom fields on Account, Contact, and Lead in Salesforce and HubSpot. Clay reads those fields through its CRM source, so the column stays identical to what your Slack alerts and dashboards already show.
- One source of truth. The Clay column reflects the same field the rep sees on the record and the same value that fires the Slack route. Nothing drifts between surfaces.
- No separate key in Clay. The CRM connection already carries the data, so there is no per-table API setup to maintain.
- Consistent scenario tags. The scenario written to the CRM, new_business, open_opportunity, closed_lost_revival, or churn_risk, reads straight into Clay.
| Dimension | HTTP API route | CRM route |
|---|
| Freshness | Real-time per row | Daily, synced through the CRM |
| Setup | Standalone column and key | Reads existing CRM fields |
| Consistency | Independent of CRM state | Single source of truth across surfaces |
| Best for | Lists not yet in the CRM | Accounts already managed in the CRM |
Pick the API route for an ad-hoc list that lives only in Clay. Pick the CRM route when the column should match what every other surface shows. For the field definitions, see verified competitor activity.
The Deal Intelligence Clay column returns named buyer, named competitor, role, and date
When a row matches, the column returns a defined set of fields. A GTM engineer maps each one to its own column so the table can filter, route, and sequence on them.
- Buyer name. The named contact at the account who accepted the reachout, not an anonymous session.
- Role. The buyer's title, so a rep knows where in the committee the activity sits.
- Competitor. The named rival who reached the buyer, not a topic inferred from traffic.
- Scenario tag. One of new_business, open_opportunity, closed_lost_revival, or churn_risk, so the row routes to the right play.
- Confidence. Deal Intelligence reports activity at 0.95 or higher confidence.
- Observed date. When the reachout was accepted, refreshed daily so the row stays current.
Those six fields are enough to act without leaving the table. Across Deal Intelligence customers, about 3 percent of monitored accounts show competitor activity in a given month, so the populated rows are a short, specific list rather than a wide net.
Daily refresh keeps the Clay competitor-activity column current without burning the whole table
Deal Intelligence refreshes competitor activity daily. The Clay column reflects new activity on the next pull, whether that pull comes from the HTTP API column or the CRM sync. There is no need to re-run the entire table on a tight loop to stay current.
The operational concern with Clay enrichment is usually credit burn and table-wide refreshes. This column behaves differently because activity is rare by design. About 3 percent of monitored accounts surface activity in a given month, so most rows return empty.
- It is a filter, not a firehose. The empty rows are the expected case. Filter to populated rows and you have your working list.
- Daily is the cadence that matters. A buyer in an active evaluation is moving now, and daily refresh keeps the observed date honest.
- Route the populated rows out. Send the rows that return a competitor to Slack, a sequence, or a Claude query over MCP, so a person acts while the window is open.
From there the column behaves like any other Clay output: filter, route, and sequence. For querying the same data conversationally, see Claude MCP server. Most rows stay empty, and the ones that fill are the ones to work.
Questions, answered.
What is competitor activity as a Clay column?
Competitor activity as a Clay column is an enrichment that, keyed on the account domain, returns whether a named buyer at that account accepted a reachout from a named competitor. It returns the buyer, role, competitor, scenario tag, confidence, and observed date. Deal Intelligence confirms both sides at 0.95 or higher confidence and refreshes the data daily, then writes it back as a column on your Clay table.
How is competitor activity different from Clay intent signals?
Clay intent signals are probabilistic and account-level. They model that someone at an account might be researching a topic, without naming the person or confirming a competitor. Competitor activity is confirmed and person-level. It names the buyer and the competitor and reports the event at 0.95 or higher confidence. Intent infers. Competitor activity confirms.
Does Clay's native competitor enrichment show which accounts are evaluating a competitor?
No. Clay's native competitor data point returns a company's market rivals, such as revenue, headcount, and parent company in an Owler-style firmographic. It describes the competitive landscape of a company. It does not tell you whether a buyer at one of your accounts is in a deal with a rival. For that you need confirmed competitor activity keyed on the account domain.
How do you connect Deal Intelligence to Clay using an HTTP API enrichment column?
Add a column to the table, select the HTTP API enrichment, and point it at the Deal Intelligence REST endpoint. Pass the table's domain column as a dynamic value so each row sends its own account. Store the API key as a workspace secret and send it as a header. Then map the returned JSON fields, buyer name, competitor, scenario, confidence, and observed date, to their own columns.
How do you populate a Clay competitor-activity column from Salesforce or HubSpot?
Deal Intelligence writes custom fields on Account, Contact, and Lead in Salesforce and HubSpot. Connect that CRM as a source in Clay and read those fields into the column. This keeps the Clay column identical to what your Slack alerts and dashboards show, with no separate API key to manage in the table.
What key does the Deal Intelligence Clay column match on?
The column matches on the account domain. Whether you wire it in over the HTTP API or through the CRM, the domain already in your Clay table is the input, and the enrichment returns any confirmed competitor activity for that account.
What fields does the competitor-activity enrichment column return in Clay?
When a row matches, the column returns the named buyer, the buyer's role, the named competitor, a scenario tag, the confidence, and the observed date. The scenario tag is one of new_business, open_opportunity, closed_lost_revival, or churn_risk. Each field maps to its own column so the table can filter, route, and sequence on it.
How often does the competitor-activity column refresh in Clay?
Deal Intelligence refreshes competitor activity daily. The Clay column reflects new activity on the next pull, from either the HTTP API column or the CRM sync. You do not need to re-run the whole table on a tight loop, because the underlying data updates once a day.
What confidence threshold does Deal Intelligence apply to competitor activity?
Deal Intelligence reports competitor activity at 0.95 or higher confidence. Both sides are verified: the buyer's identity, role, and company, and the competitor named. That bar is what separates this column from probabilistic intent enrichment, which sits well below it.
What percentage of monitored accounts show competitor activity in a given month?
Across Deal Intelligence customers, about 3 percent of monitored accounts show competitor activity in a given month. In Clay that means most rows return empty, which is by design. Filter to the populated rows and you have a short, specific working list rather than a wide net.
Can a GTM engineer route competitor-activity rows from Clay to Slack?
Yes. Once the populated rows are in the table you can route them onward from Clay, and Deal Intelligence also sends Slack alerts directly, routed by territory, segment, or owner. The CRM route keeps the Clay column and the Slack alert reading from the same field, so the two stay consistent.
Does adding competitor activity to Clay require waterfall enrichment credits?
No. The column is a single HTTP API call per row, or a CRM field read, not a waterfall across multiple data vendors. Because about 3 percent of monitored accounts show activity in a month, most rows return empty and the column behaves as a filter, not a high-volume enrichment.
Which is better for a Clay table, the HTTP API route or the CRM route?
Use the HTTP API route for an ad-hoc list that lives only in Clay and needs real-time, per-row results. Use the CRM route when the accounts are already managed in Salesforce or HubSpot and the column should match what Slack alerts and dashboards show. The CRM route gives a single source of truth across surfaces.