You get a Slack channel where anyone pastes a LinkedIn profile URL and a bot replies in the thread with the person's current title, company and work email. The bot is a four-module Make scenario. Slack triggers it, a Text parser pulls out the URL, Make's HTTP module calls LeadOcean, and a second Slack module posts the answer. LeadOcean needs a free key. Slack has no native HTTP step here, so Make does the call.
How it works
- Create a channel such as
#enrich-me. Add a Slack connection in Make. The Watch New Events module runs on a user connection (Make Slack docs, September 2026). - Add Slack, Watch New Events (instant). Click Create a webhook, pick the message event type and select your connection (Make Slack docs, September 2026).
- Filter for profile links. Put a filter after the trigger: the message text contains
linkedin.com/in/. Everything else is ignored. Then add Text parser, Match pattern to pull the clean URL out of the message (Make docs, October 2026). - Add HTTP, Make a request. Method POST to
https://api.leadocean.io/v1/people/enrich. Set Parse response to Yes so the fields are mappable (Make HTTP docs, September 2026). - Send the URL. The body is
{ "linkedin_url": "<profile URL>", "reveal_email": true }. LeadOcean takes exactly one identifier per call (LeadOcean docs, September 2026). - Add Slack, Create a Message. Reply in the same channel and thread with the mapped fields.
- Test with a placeholder URL, then switch the scenario on.
Configuration
Slack wraps links as <url|label>, so extract the clean URL first. Text parser, Match pattern takes a regular expression (Make docs, October 2026). Map its match into the body.
Module: Text parser > Match pattern
Pattern: https://www\.linkedin\.com/in/[^|>\s]+
Text: the message text from the Slack triggerModule: HTTP > Make a request
Method: POST
URL: https://api.leadocean.io/v1/people/enrich
Headers: x-api-key: <your LeadOcean key>
content-type: application/json
Body: JSON string
{ "linkedin_url": "https://www.linkedin.com/in/jane-doe", "reveal_email": true }
Parse response: YesMake's HTTP module has a Headers field and a JSON body type (Make HTTP docs, September 2026). Test the same call from a terminal first.
curl -X POST "https://api.leadocean.io/v1/people/enrich" \
-H "x-api-key: $LEADOCEAN_API_KEY" \
-H "content-type: application/json" \
-d '{"linkedin_url":"https://www.linkedin.com/in/jane-doe","reveal_email":true}'Make advises its Credentials field over raw headers. Pick the API key type to keep the key out of the headers (Make HTTP docs, September 2026).
Field mapping
| LeadOcean field | Slack reply | Note |
|---|---|---|
data.profile_data.profile_url | Profile link | Echo it so the thread is readable. |
data.contact_data.contact_current_experiences[].job_title | Title | First entry is the current role. |
data.contact_data.contact_current_experiences[].company_name | Company | Same entry as the title. |
data.contact_data.contact_emails[].email | Work email | Take the entry typed work. |
data.contact_data.contact_emails[].status | Email status | Only send to verified or catch_all_valid. |
data.contact_data.contact_phones[].phone | Phone | Optional. Only present when LeadOcean holds one. |
Cost at 10,000 rows
10,000 pasted URLs cost LeadOcean at most 10,000 records. The first 1,000 are free, for life. A profile LeadOcean holds nothing for is a 404 and costs nothing (LeadOcean docs, September 2026).
LeadOcean. Free is $0 for 1,000 records, no card, 5 requests a second. Solo is $97 a month and Agency is $497 a month, both with a fair-use pace and no per-record price (LeadOcean pricing).
Make. Each pasted URL is one run of four modules on your Make plan. Size the plan on Make's pricing page for your monthly volume.
Troubleshooting
| Symptom | Cause | Fix | |
|---|---|---|---|
| Scenario never fires | Slack connection is a bot, not a user | Watch modules need a user connection (Make Slack docs, September 2026). | |
| 401 from LeadOcean | Wrong header | Use x-api-key, not Authorization. | |
| 400 from LeadOcean | Two identifiers, or the Slack `<url | label>` text sent raw | Send linkedin_url alone, with a clean URL. |
| 404 from LeadOcean | LeadOcean holds nothing for that profile | Expected and free. Post "no match" in the thread. | |
| 402 mid-run | The 1,000 free records are spent | Move to Solo or Agency. | |
| Bot replies to itself | Reply text contains linkedin.com/in/ | Reply with the title and email only, or filter out bot messages. |
FAQ
Can Slack call LeadOcean without Make?
Yes. Any small service that receives Slack's events and makes one POST works. Make is the no-code route. The calls in this recipe are the same either way.
Does it return a phone number?
Only when LeadOcean holds one. Phones sit in contact_phones[] on the same response. There is no separate call.
Is it safe to post emails in a shared channel?
Post them in a private channel. Read email_status before anyone sends, because LeadOcean does not refund bounces.
How do I enrich a whole list instead?
Loop the same call over a CSV. See enriching LinkedIn URLs in Go, in C# and the customer profile prompt.
Back to all integrations. See pricing.
Turn every LinkedIn link in Slack into a contact. Start free.
Free to start. No credit card. 1,000 records to spend whenever you like.
Get your free API key →