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

Integrations

LeadOcean + folk: Enrich Records Automatically

A folk webhook, one LeadOcean call and one folk update. New people get an email and phone without a click, and old people get a nightly sweep.

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

You get a recipe that fills the emails and phones on folk people from LeadOcean, as soon as a person is created and again on a schedule. folk has no generic HTTP step, so a small script sits in the middle. It reads a person from folk's REST API, calls POST /v1/people/enrich and writes the result back with PATCH. The free LeadOcean plan has 1,000 records for this, no card.

Related: the integrations hub, Retool, Notion, Attio and pricing.

How it works

folk's API is on the Premium plan: $60 per member a month billed monthly, or $48 a month ($576) billed yearly (folk pricing, October 2026). The script runs anywhere that takes a webhook: a small server, a serverless function or an n8n flow.

  1. Get a LeadOcean key. Sign up at app.leadocean.io and copy a key from the API keys page.
  2. Get a folk key. In your folk workspace settings, open the "API" section and create a key. folk sends it as Authorization: Bearer.
  3. Create the webhook. Subscribe to person.created with your script's URL. folk sends a thin payload, so the script must fetch the person itself.
  4. Fetch the person. The script calls GET /v1/people/{personId} and reads urls and emails. A LinkedIn URL in urls is the best input.
  5. Enrich. Send exactly one identifier to LeadOcean: the LinkedIn URL, else the first email. A 404 means nothing was found and costs nothing.
  6. Merge and write back. Combine old and new emails and phones, drop duplicates, then PATCH /v1/people/{personId}.
  7. Add the nightly sweep. Run the script on a cron schedule over GET /v1/people and skip anyone who already has an email.

Keep calls under folk's limits: 600 requests a minute and 20 in any 2 seconds, per user (folk rate limits, September 2026). A 429 carries Retry-After.

The two triggers cover different people. The webhook handles people as they are created. The sweep handles people imported in bulk, or created before the webhook existed.

Configuration

Create the webhook once. name, targetUrl and subscribedEvents are the fields folk's create-webhook endpoint takes (folk docs, October 2026). The response carries a signingSecret; keep it to verify each call.

bash
curl -X POST https://api.folk.app/v1/webhooks \
  -H "Authorization: Bearer $FOLK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "LeadOcean enrich", "targetUrl": "https://your-host.example/folk-hook", "subscribedEvents": [{"eventType": "person.created"}]}'

Then the per-person calls. The enrich request:

bash
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}'

And the folk update, with the full merged lists:

bash
curl -X PATCH https://api.folk.app/v1/people/$PERSON_ID \
  -H "Authorization: Bearer $FOLK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"emails": ["jane@acme.com"], "phones": ["+14155550133"]}'

Send one identifier per enrich call. reveal_email: true returns the addresses and phones held and costs no extra record.

Field mapping

LeadOcean fields sit under data in the response. folk list fields are plain strings.

LeadOcean fieldfolk fieldNote
data.contact_data.contact_emails[].emailemailsAdd only verified or catch_all_valid.
data.contact_data.contact_phones[].phonephonesNeeds reveal_email: true.
data.profile_data.profile_full_namefullNameWrite only if folk's name is empty.
data.profile_data.profile_headlinedescriptionFree text, not a normalised title.
LinkedIn URL you senturlsKeep it in the list so later runs match.

emails, phones and urls replace the old values on update (folk API, September 2026). Always send the old values plus the new ones. Compare emails in lowercase and phones with spaces removed.

Cost at 10,000 rows

For 10,000 people, LeadOcean costs one flat plan month and folk costs your seats. On Free you get 1,000 records, once. For 10,000 in a month use Solo at $97, which paces at 10k enrichments every 5 hours. Misses are free.

ItemLeadOcean FreeLeadOcean Solo
LeadOcean price$0, 1,000 records for life$97 a month
Rows coveredFirst 1,000 hits10,000 in one run
folk plan with APIPremium, $60 per member a month ($576 billed yearly)Same

folk also has its own enrichment, paid from workspace credits, and its API takes up to 500 people per request (folk docs, September 2026). Premium lists more credits than Standard (folk pricing, October 2026). Read your workspace's credit balance before you compare per-row cost.

Run the first pass on 20 people before you open the sweep. Check three things: the right email landed, no old email was lost, and the status column of your own list matches what LeadOcean returned. Then raise the volume.

If you also want the company side, call POST /v1/companies/enrich with the company website from folk and write the result to the company record.

Past roles come with the same person call. Since October 2026 the response carries resume_data.experiences[]: title, company name and dates for each past role LeadOcean holds. Past employers have no company id yet. A short line in the folk description field, such as the last two employers, gives a rep context before a call.

Troubleshooting

SymptomCauseFix
Emails vanish after the updateemails replaced the list.Send old plus new values.
LeadOcean returns 404No record for that person.Skip the person. It costs nothing.
LeadOcean returns 400More than one identifier, or none.Send only the LinkedIn URL or only the email.
folk returns 429Over 20 requests in 2 seconds.Wait for Retry-After, then throttle.
Webhook fires but nothing changesThe payload is thin.Fetch the person by ID first.
Same person enriched twiceWebhook retried.Skip people whose emails already hold an address.

FAQ

Does folk have a native LeadOcean integration?

No. This recipe uses folk's REST API and webhooks plus LeadOcean's REST API. Nothing in folk's docs lists a generic HTTP step.

Can I batch the nightly sweep?

Yes. folk's batch update takes up to 100 people per request and reports each record on its own, so check every result status (folk batch docs, September 2026).

Which LeadOcean plan fits?

Free for a test of 1,000 people. Solo at $97 a month for one workspace. Agency at $497 a month if you enrich for clients and need 200 requests a second.

Do I need a LinkedIn URL?

It is the best input. LeadOcean also accepts an email, a phone or a person_id. There is no name plus company lookup, so search by domain first.

Enrich your folk people with a free LeadOcean key

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

Get your free API key →