Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 5 additions & 24 deletions docs/audiences.md
Original file line number Diff line number Diff line change
Expand Up @@ -405,6 +405,8 @@ The search is scoped to the exact companies in the segment at run time. In the f

**Note:** You can also run a standalone **Find People** search from any workbook and set **Target companies** to a Companies Audience segment — the segment appears alongside Clay tables in the company picker, and the search is free. Both paths open the same Find People wizard; in the final step, click **Send to Audiences** to add contacts to your People Audience, or **Import to Table** to create a new Clay table. The main difference is that **Find people from this list** pre-scopes the search to the companies in the current segment, while standalone Find People requires you to set the Target companies filter yourself. **Note:** The option to use a Companies Audience segment as the Target companies filter in standalone Find People requires Audiences to be enabled on your workspace (available on Launch, Growth, and Enterprise plans).

**Note:** Company-level fields already enriched on your Companies Audience records — such as competitive data, technographics, or other custom columns — do not automatically carry over to People records found through this search. The resulting People records contain contact identity fields (name, LinkedIn URL, email) only. To access company-level fields on those People records, add a `Lookup in Audiences` column in a bulk enrichment table on your People Audience: set **Object type** to **Companies** and filter by the person's company domain or LinkedIn URL. See [Adding enrichments](#adding-enrichments) for how to set up a bulk enrichment.

## Enriching and monitoring

### Adding enrichments
Expand Down Expand Up @@ -1084,28 +1086,7 @@ To identify and archive these orphaned records:
2. Use one of these filters to isolate the orphaned records:
- **Sync status → Deleted in source** — surfaces records whose Snowflake source association was cleared by the most recent full sync.
- **Sources → doesn't contain → [your Snowflake sync name]** — surfaces records not currently associated with the active sync.
- **[Your custom field] → is empty** — if your updated import adds a new column (for example, an `inferred_updated_at` timestamp used for incremental loading), records where that field is empty were not touched by the new import and are the orphaned ones.
3. Once the segment shows the correct records, click **⋮** next to the segment name and select **Archive records**.

**Admin access is required** — the Archive records option is not visible to Editors or Viewers.

### Why did Update Audiences Record report 0 fields updated?

This "0 fields updated" result comes from the `Update Audiences Record` action that pushes data into your Audience from a Clay table. The most common cause is that all mapped fields had null values in the source row. This action filters out any field whose value is `null`, `undefined`, or empty before writing to the Audience — when every mapped field is empty, there is nothing to write, so the action completes successfully but reports 0 fields updated. This null-filtering is built into the action and is not user-configurable.

**To confirm this is the cause:** Check whether the columns you mapped into `Update Audiences Record` are populated for the rows that show 0 fields updated.

**To fix it, use an explicit placeholder value instead of null.** Rework your formula so it always returns a meaningful non-null value. For example, if you use a timestamp to mark when a contact becomes eligible, have the formula return the eligible date when it applies and a text value like `"Not Eligible"` when it doesn't. Both are real values, so `Update Audiences Record` writes an update on every run — and you can route off the result (process the row when the field contains a date; skip when it says `"Not Eligible"`).

**Note:** The **Ignore blank values** toggle does exist, but on the `Upsert Audiences Record` action (and on the variant of `Update Audiences Record` that is configured via the Upsert config panel). It is on by default; when disabled, null values are passed through and will clear existing values on the target Audience field. These actions report `✅ Success` (or `✅ Upserting...` / `✅ Updating...`) rather than `0 fields updated`, so the toggle is not what controls the "0 fields updated" message described above.

### How does Clay handle Salesforce Lead-to-Contact conversions?

When a Salesforce Lead is converted into a Contact in Salesforce, Clay automatically merges the Lead record with the Contact record in Audiences. The data from both records is combined into a single person record, and all historical data is preserved. This merging happens automatically and is not user-configurable.

### What's the difference between automatic Lead/Contact merging and deterministic matching?

There are two types of record matching in Clay Audiences:
- **[Your custom field] → is empty** — if your updated import adds a new column (for example, an `inferred_updated_at` timestamp used for incremental loading), records where that field is empty are candidates for cleanup.
3. Once the segment shows the correct orphaned records, click the **⋮** (three-dot) menu next to the segment name and select **Archive records**.

- **Automatic Lead/Contact merging** — When Salesforce converts a Lead to a Contact, Clay automatically merges these records. This is Salesforce-specific and not user-configurable.
- **Deterministic matching** — User-configurable matching across different data sources. You choose which field to match on (email, domain, profile URL, etc.) when importing a new source. This allows you to merge the same person or company from multiple data sources into a single Audiences record.
To avoid re-importing the same orphaned records on a future sync, verify your updated SQL query excludes them before rerunning, or add a `WHERE` clause that explicitly excludes the records you want to clean up.