HELIOS DOCS

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

MethodTypeDescription
Lusha API KeyAPI KeyA 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:

  1. In Lusha, open API Hub and select the Manage API Keys tab.
  2. Copy your key, or generate a new one.
  3. In Helios, choose Lusha API Key and paste the key into Lusha API Key.
  4. Optional: fill in Contacts to watch and Companies to watch for triggers.
  5. 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.

EventDescriptionFilters
contact.promotedA watched contact was promotednew job title (pattern), company domain (pattern)
contact.company_changedA watched contact moved to another companynew job title (pattern), company domain (pattern)
company.hiring_surgedOpen job postings at a watched company increased sharplycompany domain (pattern)
company.hiring_surged_by_departmentHiring at a watched company surged in one departmentcompany domain (pattern)
company.hiring_surged_by_locationHiring at a watched company surged in one country or statecompany domain (pattern)
company.headcount_increased_1mA watched company's employee count grew over 1 monthcompany domain (pattern)
company.headcount_increased_3mA watched company's employee count grew over 3 monthscompany domain (pattern)
company.headcount_increased_6mA watched company's employee count grew over 6 monthscompany domain (pattern)
company.headcount_increased_12mA watched company's employee count grew over 12 monthscompany domain (pattern)
company.headcount_decreased_1mA watched company's employee count fell over 1 monthcompany domain (pattern)
company.headcount_decreased_3mA watched company's employee count fell over 3 monthscompany domain (pattern)
company.headcount_decreased_6mA watched company's employee count fell over 6 monthscompany domain (pattern)
company.headcount_decreased_12mA watched company's employee count fell over 12 monthscompany domain (pattern)
company.website_traffic_increasedA watched company's website traffic grewcompany domain (pattern)
company.website_traffic_decreasedA watched company's website traffic fellcompany domain (pattern)
company.it_spend_increasedA watched company's estimated IT spend grewcompany domain (pattern)
company.it_spend_decreasedA watched company's estimated IT spend fellcompany domain (pattern)
company.risk_news_reportedNews about a watched company's security issues or lawsuitscompany domain (pattern), news event type (pattern)
company.commercial_activity_news_reportedNews about a watched company's partnerships, customers or vendorscompany domain (pattern), news event type (pattern)
company.corporate_strategy_news_reportedNews about a watched company's acquisitions, facilities or strategycompany domain (pattern), news event type (pattern)
company.financial_events_news_reportedNews about a watched company's funding, investments or IPOcompany domain (pattern), news event type (pattern)
company.people_news_reportedNews about a watched company's executive moves or headcountcompany domain (pattern), news event type (pattern)
company.market_intelligence_news_reportedNews about a watched company's events, awards or competitorscompany domain (pattern), news event type (pattern)
company.product_activity_news_reportedNews about a watched company's product launches or integrationscompany domain (pattern), news event type (pattern)
contact.opted_outA contact that the account revealed opted out of Lusha's databaseNone

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* matches Founder/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.com or *.acme.com.
  • News event type matches the type of the news story, such as partnership or *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.

    1. Add company.hiring_surged or a news event to a workflow with no filters.
    2. Watch a few companies that are likely to have news or hiring activity.
    3. 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.

Common errors

What you seeCauseFix
The connection's status shows ErrorThe key was deleted, suspended, or mistypedCopy the key from API Hub → Manage API Keys and enter it through Manage
A watched ID has no Helios subscriptionAnother subscription in the account already watches it (DUPLICATE_SUBSCRIPTION), or the ID is wrongRemove the other subscription in Lusha and save the connection again, or check the ID
Contact or company events show as unavailableThe watch list is empty, or Lusha rejected every ID in itAdd 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 unavailableThe account already has an opt-out subscription, or the plan doesn't include opt-out webhooksDelete 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 unavailableLusha refused them with 403, because the account reached its subscription limit or the plan doesn't include webhooksAsk Lusha about webhooks on your plan, then save the connection again
Setup asks you to create a webhook secretThe Lusha account has no webhook secretCreate the secret in Lusha, then save the connection again
Runs stopped after you regenerated the secretDeliveries are signed with the new secretSave the connection in Helios again
Agent calls fail with 429The key reached its rate limit or daily quotaWait and try again
Agent calls fail with 402 or a credit limit errorThe account, the key, or the key's owner is out of creditsCheck the limits in API Hub → Manage API Keys and Settings → Team Management
Agent calls fail with 403The call needs a plan feature the account doesn't have, such as revealEmails outside the Unified Credits planUse the call without that option, or ask Lusha about your plan
No run starts after a signalThe filters don't match, the subscription was skipped or disabled, or Lusha hasn't detected a change yetRemove 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