Lusha
Enrich contacts and companies through Lusha's API. Start workflows on supported signals for watched contacts and companies, or on contact opt-outs.
What your agents can do
Helios agents call Lusha's v3 API with your API key. Available operations depend on your key's permissions and Lusha plan.
- Find a person's work email or phone number from their name and company, email, or LinkedIn profile
- Enrich a company by domain with its size, industry, revenue, and technologies
- Find contacts at a target account with prospecting filters, or find the account's buying group
- Read and score signals for contacts and companies, such as job changes and hiring surges
- Add contacts and companies to Lusha tables
- Search recorded Lusha Conversations calls and read their transcripts
Most calls use credits from your Lusha plan, the same as in Lusha. Helios checks the connection with Lusha's usage endpoint, which is free.
The agent's API tool only reaches api.lusha.com.
Authentication
| Method | Type | Description |
|---|---|---|
| Lusha API Key | API Key | A Lusha API key |
See Integration authentication for how credentials are stored and injected.
Lusha API Key
Use an API key from your Lusha account. The account's permissions, plan, and credit limits apply to calls made through Helios. Triggers also require access to Lusha's webhook API.
To connect:
- In Lusha, open API Hub and select the Manage API Keys tab.
- Copy your key, or generate a new one.
- In Helios, choose Lusha API Key and paste the key into Lusha API Key.
- Optional: fill in Contacts to watch and Companies to watch for triggers.
- Save.
If you delete or replace the key in Lusha, enter the new one through Manage.
Triggers
When you save the connection, Helios sets up subscriptions through Lusha's webhook API. Subscription setup depends on your account's webhook access and existing subscriptions. Before setting up triggers, create the account's webhook secret in Lusha if it has none.
Lusha sends signals for one contact or company at a time, so you choose what to watch on the connection:
- Contacts to watch: Lusha contact IDs, separated by commas. Helios subscribes each contact to the supported contact signals: promotions and company changes.
- Companies to watch: Lusha company IDs, separated by commas. Helios subscribes each company to the supported company signals: hiring surges, headcount changes, website traffic, IT spend, and news.
Lusha IDs are the id field in Lusha search and enrichment results. An agent can look them up for you from names, emails, or domains.
When you save the connection, Helios creates the subscriptions in Lusha, named Helios. When you change the lists, it adds subscriptions for new IDs before it removes the ones for IDs you took out. Deleting the connection removes them. Lusha allows one subscription per contact or company in an account. When another subscription already watches an ID, Lusha rejects it with DUPLICATE_SUBSCRIPTION and Helios skips it.
Helios also creates the account's opt-out subscription, named Helios, which needs no watch list. It sends contact.opted_out when any contact that your account revealed opts out of Lusha. Lusha allows one opt-out subscription per account. If the account already has one, Lusha refuses the Helios one and contact.opted_out shows as unavailable.
To see what was created and what was skipped, open API Hub → Webhooks in Lusha. The Webhook Subscriptions table lists the account's subscriptions. An ID that isn't in a Helios subscription was skipped, and the subscription that already watches it is listed under another name. You can also ask an agent to list the Lusha subscriptions, since agents can call Lusha's webhook API.
| Event | Description | Filters |
|---|---|---|
contact.promoted | A watched contact was promoted | new job title (pattern), company domain (pattern) |
contact.company_changed | A watched contact moved to another company | new job title (pattern), company domain (pattern) |
company.hiring_surged | Open job postings at a watched company increased sharply | company domain (pattern) |
company.hiring_surged_by_department | Hiring at a watched company surged in one department | company domain (pattern) |
company.hiring_surged_by_location | Hiring at a watched company surged in one country or state | company domain (pattern) |
company.headcount_increased_1m | A watched company's employee count grew over 1 month | company domain (pattern) |
company.headcount_increased_3m | A watched company's employee count grew over 3 months | company domain (pattern) |
company.headcount_increased_6m | A watched company's employee count grew over 6 months | company domain (pattern) |
company.headcount_increased_12m | A watched company's employee count grew over 12 months | company domain (pattern) |
company.headcount_decreased_1m | A watched company's employee count fell over 1 month | company domain (pattern) |
company.headcount_decreased_3m | A watched company's employee count fell over 3 months | company domain (pattern) |
company.headcount_decreased_6m | A watched company's employee count fell over 6 months | company domain (pattern) |
company.headcount_decreased_12m | A watched company's employee count fell over 12 months | company domain (pattern) |
company.website_traffic_increased | A watched company's website traffic grew | company domain (pattern) |
company.website_traffic_decreased | A watched company's website traffic fell | company domain (pattern) |
company.it_spend_increased | A watched company's estimated IT spend grew | company domain (pattern) |
company.it_spend_decreased | A watched company's estimated IT spend fell | company domain (pattern) |
company.risk_news_reported | News about a watched company's security issues or lawsuits | company domain (pattern), news event type (pattern) |
company.commercial_activity_news_reported | News about a watched company's partnerships, customers or vendors | company domain (pattern), news event type (pattern) |
company.corporate_strategy_news_reported | News about a watched company's acquisitions, facilities or strategy | company domain (pattern), news event type (pattern) |
company.financial_events_news_reported | News about a watched company's funding, investments or IPO | company domain (pattern), news event type (pattern) |
company.people_news_reported | News about a watched company's executive moves or headcount | company domain (pattern), news event type (pattern) |
company.market_intelligence_news_reported | News about a watched company's events, awards or competitors | company domain (pattern), news event type (pattern) |
company.product_activity_news_reported | News about a watched company's product launches or integrations | company domain (pattern), news event type (pattern) |
contact.opted_out | A contact that the account revealed opted out of Lusha's database | None |
All filters are optional, and case doesn't matter in any of them.
- New job title matches the contact's title after the change, such as
VP*. A/counts as a space, so*CEO*matchesFounder/CEO. - Company domain matches the watched company's domain on company events, and the domain of the contact's current company on contact events. For example,
acme.comor*.acme.com. - News event type matches the type of the news story, such as
partnershipor*funding*. An agent can list Lusha's news event types with Lusha's company signal filters endpoint.
The trigger picker shows an event as unavailable, with the reason, when it can't arrive on this connection:
- Every contact event, when Contacts to watch is empty or Lusha rejected every contact in it, for example because the plan doesn't include webhooks. The same goes for company events and Companies to watch.
contact.opted_out, when Lusha refused the opt-out subscription.
Lusha checks most signals weekly, and headcount, website traffic, and IT spend monthly. An event can arrive weeks after the change.
Lusha signs every delivery with one webhook secret for the whole account. Helios reads it when you save the connection. If the account has no secret, setup stops and asks you to create one in Lusha, then save the connection again. Helios never regenerates the secret during setup. If you regenerate the secret in Lusha, save the connection in Helios again. Until you do, or until the daily refresh picks up the new secret, deliveries fail verification. Deliveries are verified with the HMAC-SHA256 X-Lusha-Signature header over the timestamp and body, and deliveries more than five minutes old are rejected.
Lusha retries a failed delivery 3 times, then disables the subscription. Helios checks its subscriptions once a day and turns disabled ones back on. If the setup itself fails, for example because Lusha rejects the key, the daily refresh stops. Fix the cause and save the connection again.
Lusha charges credits for each signal it delivers. Each watched company is subscribed to every supported company signal type, so a long company list can use credits quickly.
An agent's own calls can start new runs. Calling Lusha's test endpoint for a Helios subscription sends a delivery, which starts a run like a real signal. Say in the prompt that the agent shouldn't test subscriptions. See Guarding against events you don't want.
Check that it works
-
The connection: after you save, the connection's status shows Connected. Error means the connection test failed.
-
The subscriptions: in Lusha, open API Hub → Webhooks and find the subscriptions named Helios, including the opt-out subscription.
-
A trigger: Lusha signals arrive weekly or monthly, so you can't cause one on demand.
- Add
company.hiring_surgedor a news event to a workflow with no filters. - Watch a few companies that are likely to have news or hiring activity.
- When a run starts, open the connection in Helios and click Webhook events to see the event.
Lusha can also send a test delivery for one subscription, with mock data and no credits. Ask an agent to call Lusha's test endpoint for a Helios subscription.
- Add
Common errors
| What you see | Cause | Fix |
|---|---|---|
| The connection's status shows Error | The key was deleted, suspended, or mistyped | Copy the key from API Hub → Manage API Keys and enter it through Manage |
| A watched ID has no Helios subscription | Another subscription in the account already watches it (DUPLICATE_SUBSCRIPTION), or the ID is wrong | Remove the other subscription in Lusha and save the connection again, or check the ID |
| Contact or company events show as unavailable | The watch list is empty, or Lusha rejected every ID in it | Add IDs to Contacts to watch or Companies to watch, or remove the other subscriptions that watch them, and save the connection again |
contact.opted_out shows as unavailable | The account already has an opt-out subscription, or the plan doesn't include opt-out webhooks | Delete the other opt-out subscription in API Hub → Webhooks and save the connection again, or ask Lusha about opt-out webhooks on your plan |
| No Helios subscriptions at all, and every contact and company event shows as unavailable | Lusha refused them with 403, because the account reached its subscription limit or the plan doesn't include webhooks | Ask Lusha about webhooks on your plan, then save the connection again |
| Setup asks you to create a webhook secret | The Lusha account has no webhook secret | Create the secret in Lusha, then save the connection again |
| Runs stopped after you regenerated the secret | Deliveries are signed with the new secret | Save the connection in Helios again |
Agent calls fail with 429 | The key reached its rate limit or daily quota | Wait and try again |
Agent calls fail with 402 or a credit limit error | The account, the key, or the key's owner is out of credits | Check the limits in API Hub → Manage API Keys and Settings → Team Management |
Agent calls fail with 403 | The call needs a plan feature the account doesn't have, such as revealEmails outside the Unified Credits plan | Use the call without that option, or ask Lusha about your plan |
| No run starts after a signal | The filters don't match, the subscription was skipped or disabled, or Lusha hasn't detected a change yet | Remove the filters to test, and check the subscriptions in Lusha |
Limits
Lusha's rate limits, credits, and webhook subscription limits apply. Helios creates and deletes subscriptions in groups of up to 25. See Lusha's API overview and webhooks overview for plan limits.
Last updated on
Pipedrive
The Pipedrive integration lets Helios agents read and change your Pipedrive CRM through its REST API, and run agents automatically when records are created, updated, or deleted.
Stripe
The Stripe integration lets Helios agents search and call the entire Stripe API to manage payments, customers, subscriptions, and reporting with a server-side secret key.