Pre-Black Friday: 20% off, for as long as you stayEARLYBFon Solo and AgencyEnds Nov 28Start free

Integration recipe

LeadOcean + Intercom: instantly enrich support tickets when they open

A webhook fires on ticket.created, LeadOcean enriches the requester, and the result lands as a note on the Intercom contact.

Get your free API key →Free to start. No credit card. 1,000 records to spend whenever you like.

Every new Intercom ticket gets the requester's job title, company and phone attached as a note, seconds after it opens. The agent sees who is writing before the first reply. You need one webhook subscription, one small receiver and a LeadOcean key.

How it works

  1. In the Intercom Developer Hub, subscribe your app to the ticket.created topic. It needs the Read tickets permission (Intercom webhook topics, September 2026).
  2. Point the subscription at a receiver you host, such as a serverless function. The payload carries the Ticket object, whose contacts.contacts[] list holds the requester's contact id (Intercom ticket object, October 2026).
  3. The ticket holds no email, so the receiver calls GET https://api.intercom.io/contacts/{id} and reads email (Intercom get a contact, October 2026).
  4. The receiver calls POST /v1/people/enrich with that email and reveal_email true, which returns phones and costs no extra record. A person we hold nothing for returns a 404 and costs nothing.
  5. The receiver writes the result to the contact with POST https://api.intercom.io/contacts/{contact_id}/notes (Intercom create note, September 2026).
  6. Agents open the ticket and read the note. Route by seniority or company size in your own rules if you want.

Why a note and not a reply: a note is visible to your team only, so the requester never sees enrichment data. Answer with HTTP 200 at once: Intercom resends a notification that gets no 200 within 5,000 ms, so duplicates happen (Intercom webhook notifications, October 2026). Key your work on the ticket id and skip repeats.

A requester we hold nothing for returns a 404. Write no note and do not guess.

Configuration

The receiver's LeadOcean call:

bash
curl -X POST https://api.leadocean.io/v1/people/enrich \
  -H "x-api-key: $LEADOCEAN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email": "jane.doe@acme.com", "reveal_email": true}'

The Intercom call that writes the note:

bash
curl -X POST https://api.intercom.io/contacts/CONTACT_ID/notes \
  -H "Authorization: Bearer $INTERCOM_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"body": "Jane Doe, VP Sales at Acme (acme.com). Enriched by LeadOcean."}'

Enrich takes exactly one of linkedin_url, email, phone or person_id. There is no name plus domain lookup. If the payload gives only a name, search by domain first, then enrich by person_id.

Field mapping

LeadOcean fieldIntercom targetNote
data.contact_data.contact_current_experiences[].job_titleNote bodyCurrent role; read it from the first entry.
data.contact_data.contact_current_experiences[].company_nameNote bodyAdd company_domain from the same entry.
data.contact_data.contact_phones[].phoneNote bodyPresent with reveal_email true, when we hold a number.
data.resume_data.experiences[]Note body, optionalPast roles. Past employers have no company_id yet.

Notes are free text, so nothing here maps to a custom attribute. To fill attributes, add a second Intercom call after the note.

Cost at 10,000 rows

At 10,000 tickets a month, LeadOcean enrich needs the Solo plan at $97 a month. Free covers 1,000 records for life and then answers 402. One record is one person returned, and a miss is free (pricing).

ItemCost at 10,000 ticketsSource
LeadOcean on FreeFirst 1,000 records onlyLeadOcean pricing, October 2026
LeadOcean on Solo$97 a month, 10k enrichments every 5 hoursLeadOcean pricing, October 2026
IntercomYour existing Intercom plan; this recipe adds no LeadOcean appNot priced here

Paid plans have a fair-use pace, not credits. There is no per-record bill and no overage invoice.

Troubleshooting

SymptomCauseFix
Same ticket enriched twiceReceiver answered after 5,000 ms, so Intercom resentReturn 200 first, then work.
Webhook never firesSubscription lacks the topic or permissionSubscribe to ticket.created and grant Read tickets.
404 from enrichFree-mail address or person not in the dataSkip the note. A 404 costs nothing.
402 from enrichFree plan's 1,000 records are spentMove to Solo or Agency.
429 from enrichOver the plan's request rateBack off by the Retry-After header. Free allows 5 a second.
Note lands on the wrong contactUsed the ticket id as the contact idUse the id in the ticket's contacts.contacts[] list.

FAQ

Does this need a Chrome extension or an app inside Intercom?

No. It is a webhook, a receiver and three HTTP calls. LeadOcean has no Intercom app and no Chrome extension.

Can I use it with the LeadOcean MCP server instead?

Yes for testing. The MCP tool leadocean_get_lead enriches one person from an AI client. For every new ticket, call the REST endpoint from the receiver.

Is the data fresh?

The dataset is refreshed monthly, and each record carries its own fetched_at date. Read it before you act on a phone number.

What happens when the person is not found?

Enrich returns a 404 and the receiver writes nothing. It costs no record.

Which LeadOcean pages cover the endpoint?

Put a job title next to every new Intercom ticket

Free to start. No credit card. 1,000 records to spend whenever you like.

Get your free API key →