> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.dealsignal.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.dealsignal.com/_mcp/server.

# Set Up in Clay

> Look up contacts from a Clay table and get verified emails and mobile numbers back.

The DealSignal template for Clay has two tables. You add contacts to `DealSignal lookup`. Results arrive in `DealSignal results`.

## 1. Copy the template

Open the [template](https://app.clay.com/shared-workbook/share_0to14cvToGmU3w6h35z) and click **Create workbook using template**.

## 2. Add your API key

1. In `DealSignal lookup`, click the `DealSignal create` column header, then **Edit column**.
2. Under **Account**, open the list and click **Add account**.
3. Name the connection, for example `DealSignal`. Click **Add a new key and value pair**, enter `X-Api-Key` as the key and your DealSignal API key as the value, then click **Save**.
4. Click **Save** on the column.

## 3. Connect the results table

1. In `DealSignal results`, click the `Webhook` column header, then **Edit source**. Next to the **Webhook URL**, click **Copy**. Don't add an auth token.
2. In `DealSignal lookup`, open **Edit column** on `DealSignal create` again.
3. Under **Body**, replace `PASTE_YOUR_RESULTS_WEBHOOK_URL` with the URL you copied, then click **Save**.
4. In `DealSignal results`, click the table name, then **Edit table settings**. Under **Deduplication**, check that **Auto-dedupe rows** is on, with `Row ID` and **Keep newest row**. A result can occasionally arrive twice; this keeps one row per contact.

## 4. Add your contacts

Add one row per contact in `DealSignal lookup`:

| Column                               | What to enter                                                                                                                                                                          |
| ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Row ID`                             | A value unique to this row, such as your CRM record ID. Required.                                                                                                                      |
| `Tier`                               | `quick`, `standard` or `premium`. Required. `quick` returns no mobile number. See [what each tier does and costs](/documentation/contact-profile-refresh-requests/verification-tiers). |
| `LinkedIn URL`                       | The contact's profile. This gives the best results.                                                                                                                                    |
| `First name`, `Last name`, `Company` | Required if you have no LinkedIn URL.                                                                                                                                                  |

Other columns, such as `Website` and `Phone sample`, are optional.

## 5. Run

Click the play button on the `DealSignal create` column header, then **Run … empty or out-of-date rows**. Each row shows `Status Code: 200` when DealSignal has accepted it. Each run uses one Clay action and no Clay data credits.

Don't run a row again unless you mean to. Within 15 minutes, running it again returns the first result and isn't charged. After that, it is a new lookup: it is charged again, and its result replaces the earlier row in `DealSignal results`.

## 6. Read the results

Each contact appears in `DealSignal results` when it is finished, usually within:

| `quick`      | `standard`    | `premium`      |
| ------------ | ------------- | -------------- |
| 1–15 minutes | 15–60 minutes | 1 business day |

| Column                               | Meaning                                                                                                                                                   |
| ------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Delivered`                          | Checked: the contact is delivered. Unchecked: it is not delivered and nothing is charged.                                                                 |
| `Delivery Reason`                    | Why it was not delivered, such as `email_not_found`. See [all reasons](/documentation/contact-profile-refresh-requests/verification-tiers#not-delivered). |
| `Credits Charged`                    | Credits charged for this contact.                                                                                                                         |
| `DealSignal Email`, `Email Status`   | The work email and how far it was verified.                                                                                                               |
| `DealSignal Mobile`, `Mobile Status` | The mobile number and how far it was verified.                                                                                                            |
| `Current Company`, `Title`           | The contact's current job.                                                                                                                                |
| `Changed Company`                    | Whether the contact has moved to a different employer.                                                                                                    |

An email or mobile number appears only when it reached the tier's verification level. Your own columns from `DealSignal lookup` are copied to the same row.

## Use Clay's waterfall only on misses

Add waterfall columns to `DealSignal results`, not `DealSignal lookup`. A row appears there only after DealSignal has finished, so the waterfall never runs while DealSignal is still working. A row that replaces an earlier one runs them again. Set this run condition:

```
!{{Delivered}} || {{Email Status}} === "Not Found" || {{Email Status}} === "Unverified"
```