> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lusha.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Detect contact and company signals with Lusha

> Use Lusha Signals to detect job changes, promotions, and company events. Integrate signals into your CRM or automation to engage prospects at the right time.

Lusha Signals surface timely insights about contacts and companies - from job changes and promotions to hiring surges, headcount changes, and categorized news events. Instead of reaching out blindly, you can act on real triggers: a champion moved to a new company, or a target account doubled its engineering headcount. Signals help you keep CRM records current, prioritize outreach, and fire automations precisely when conditions are right.

## What signals are

A signal is a detected change or event associated with a contact or company within a given time window. Each signal has a type (such as `promotion` or `financialEventsNews`) and a timestamp, so you know when the event occurred.

Lusha provides two categories of signals:

* **Contact signals** - changes tied to an individual, such as a job title promotion or a move to a new employer.
* **Company signals** - events tied to an organization, such as a surge in hiring, a headcount change, or a news event.

## One call per entity type

Signals is a consolidated, one-call-per-entity model: give an endpoint a list of IDs and the signal types you want, and it returns everything that matched - in a single request, no separate "search" step.

<CardGroup cols={2}>
  <Card title="Contact Signals" icon="user" href="/api-reference/signals/contact-signals">
    `POST /v3/contacts/signals` - up to 100 contact IDs per request.
  </Card>

  <Card title="Company Signals" icon="building" href="/api-reference/signals/company-signals">
    `POST /v3/companies/signals` - up to 100 company IDs per request.
  </Card>
</CardGroup>

<Info>
  Both endpoints take Lusha IDs. If you don't have IDs yet, resolve contacts or companies first with [Enrich Contacts](/enrichment/enrich-contacts) / [Enrich Companies](/enrichment/enrich-companies) or their [Search & Enrich](/enrichment/search-and-enrich-contacts) equivalents, then pass the returned `id` values into Signals.
</Info>

## Available signal types

### Contact signals

| Signal type     | Description                                  |
| --------------- | -------------------------------------------- |
| `allSignals`    | All available contact signal types           |
| `promotion`     | Job title promotions within the same company |
| `companyChange` | Moves to a new employer                      |

### Company signals

**Hiring and workforce**

| Signal type                 | Description                                        |
| --------------------------- | -------------------------------------------------- |
| `allSignals`                | All available company signal types                 |
| `surgeInHiring`             | Overall increase in open job postings              |
| `surgeInHiringByDepartment` | Hiring surge scoped to a specific department       |
| `surgeInHiringByLocation`   | Hiring surge scoped to a specific country or state |

**Headcount trends**

| Signal type                                     | Description                    |
| ----------------------------------------------- | ------------------------------ |
| `headcountIncrease1m` / `headcountDecrease1m`   | 1-month employee count change  |
| `headcountIncrease3m` / `headcountDecrease3m`   | 3-month employee count change  |
| `headcountIncrease6m` / `headcountDecrease6m`   | 6-month employee count change  |
| `headcountIncrease12m` / `headcountDecrease12m` | 12-month employee count change |

**Technology and digital presence**

| Signal type              | Description             |
| ------------------------ | ----------------------- |
| `websiteTrafficIncrease` | Website traffic growth  |
| `websiteTrafficDecrease` | Website traffic decline |
| `itSpendIncrease`        | IT spending increase    |
| `itSpendDecrease`        | IT spending decrease    |

**News events**

| Signal type              | Description                                               |
| ------------------------ | --------------------------------------------------------- |
| `riskNews`               | Litigation and security news                              |
| `commercialActivityNews` | Launches, partnerships, and go-to-market activity         |
| `corporateStrategyNews`  | M\&A, restructuring, and strategic direction changes      |
| `financialEventsNews`    | Funding, IPO, and financial performance events            |
| `peopleNews`             | Hiring, layoff, and leadership changes                    |
| `marketIntelligenceNews` | Event participation, recognition, and competitor activity |
| `productActivityNews`    | Product launches, development, and integrations           |

<Tip>
  Don't hardcode this list. Call [Get Contact Signal Types](/api-reference/signals/contact-signal-types) or [Get Company Signal Types](/api-reference/signals/company-signal-types) to fetch the current, authoritative list of `signalTypes` values at runtime.
</Tip>

## Discover company signal filters

Company Signals results carry news-, department-, and location-specific detail. Two reference endpoints help you explore that taxonomy before you build a UI or automation on top of it:

<CardGroup cols={2}>
  <Card title="Get Company Signal Filters" icon="list" href="/api-reference/signals/company-signal-filters">
    Discovery endpoint - lists the available filter types (`newsEventTypes`, `hiringByDepartments`, `hiringByLocations`) and whether each needs a search query.
  </Card>

  <Card title="Get Company Signal Filter Values" icon="magnifying-glass" href="/api-reference/signals/company-signal-filter-values">
    Returns the actual values for one filter type - a fixed list for `newsEventTypes` and `hiringByDepartments`, or a text-matched list for `hiringByLocations`.
  </Card>
</CardGroup>

## Time window and credits

Pass a `startDate` in `YYYY-MM-DD` format to limit results to signals detected on or after that date. Use `maxResultsPerSignal` to cap how many instances of each signal type come back per contact or company.

<Warning>
  Signals are charged per matched signal per result - `showSignalsContact` for Contact Signals and `showSignalsCompany` for Company Signals. Request only the signal types you need to manage consumption.
</Warning>

## Next steps

<CardGroup cols={2}>
  <Card title="Contact signals" icon="user" href="/signals/contact-signals">
    Retrieve job changes and promotions for specific contacts.
  </Card>

  <Card title="Company signals" icon="building" href="/signals/company-signals">
    Retrieve hiring, headcount, and news events for specific companies.
  </Card>
</CardGroup>
