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

Integration recipe

LeadOcean + Pipedrive: Enrich Each New Person and Organization

A Pipedrive webhook fires when a person is added. A small receiver calls LeadOcean for the person and the company, then patches both records back.

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

You get a record that fills itself. When someone adds a person in Pipedrive, a webhook calls a small receiver, which asks LeadOcean for that person and their company, and patches the answers back. There is no Pipedrive app to install. The Free plan covers the first 1,000 records.

Related: the integrations hub, enrich person, the enrich-person Claude skill, enrich person over MCP and pricing.

How it works

The trigger is a Pipedrive webhook on create for person. Subscribing to create only means your own patches never fire the webhook again, so there is no loop.

  1. Get a LeadOcean key. Sign up at app.leadocean.io and copy a key from API keys.
  2. Stand up a receiver. Any HTTPS endpoint that accepts a POST and answers 2xx works. Pipedrive treats any other status as a failed delivery and retries.
  3. Create the webhook. Call POST /api/v1/webhooks with event create and object person, or add it under Tools and apps, Webhooks.
  4. Enrich the person. The payload carries data.emails and data.org_id. Send the first email to POST /v1/people/enrich with reveal_email: true. A person LeadOcean holds nothing for is a 404 and costs nothing.
  5. Enrich the organization. Take the domain from that email, skip free-mail domains, and call POST /v1/companies/enrich.
  6. Patch both records. PATCH /api/v2/persons/{id} gets phones. PATCH /api/v2/organizations/{id} gets website, headcount and LinkedIn.

Configuration

Create the webhook once. Pipedrive takes its API token in the x-api-token header.

bash
curl -X POST "https://$PIPEDRIVE_DOMAIN.pipedrive.com/api/v1/webhooks" \
  -H "x-api-token: $PIPEDRIVE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"subscription_url": "https://hooks.example.com/pipedrive",
       "event_action": "create", "event_object": "person",
       "name": "LeadOcean enrich", "version": "2.0"}'

The receiver reads data from the payload and makes the two LeadOcean calls:

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

curl -X POST https://api.leadocean.io/v1/companies/enrich \
  -H "x-api-key: $LEADOCEAN_API_KEY" -H "Content-Type: application/json" \
  -d '{"domain": "acme.com"}'

Send exactly one identifier per person call. reveal_email is a flag, not an identifier, and costs no extra record. The webhook payload has no organization website, so the domain comes from the email.

Field mapping

LeadOcean fieldPipedrive fieldNote
data.contact_data.contact_phones[0].phoneperson phones[0].valueOnly returned with reveal_email: true.
data.contact_data.email_statusA custom text fieldMail only verified and catch_all_valid.
data.contact_data.contact_current_experiences[0].job_titleperson job_titleExists only if contact sync is on. Otherwise Pipedrive answers 403.
data.company_data.company_domainorganization websiteSet only when the field is empty.
data.company_data.company_employees.number_of_employeesorganization employee_countA number, or null when unknown.
data.company_data.company_social_links.linkedin.urlorganization linkedinCompany page URL (LeadOcean docs).

Cost at 10,000 rows

Ten thousand new people is at most 20,000 LeadOcean records: one per person and one per company. Skip companies you already enriched, by org id, and real use is lower. A lookup that finds nothing is free.

ItemLeadOcean FreeLeadOcean Solo ($97 a month)
Records1,000 for lifeFair-use pace: 10k enrichments every 5 hours, 50k a week
Rate limit5 requests a second50 requests a second
10,000 people plus companiesFirst 1,000 records onlyAbout 10 hours of pace, inside the weekly 50k

Pipedrive meters its own API in tokens. Each person needs two updates, and an update costs 10 tokens on v1, less on v2. So 10,000 people is at most 200,000 tokens. The daily budget is 30,000 base tokens, times a plan multiplier, times seats. The multipliers are Lite 1, Growth 2, Premium 5 and Ultimate 7 (Pipedrive rate limiting, October 2026). Spread a large backfill over several days.

Troubleshooting

SymptomCauseFix
Webhook never arrivesReceiver not public, or it redirects.Pipedrive needs a public URL that does not redirect.
Same payload arrives twiceYour receiver answered non-2xx, so Pipedrive retried.Answer 200 first, enrich after.
404 from LeadOceanNothing held for that person.Skip the row. It was not billed.
400 from LeadOceanTwo identifiers or none.Send only email.
403 on job_titleContact sync is off.Turn it on or drop the field.
429 from PipedriveDaily token budget spent.Queue the patches until the midnight reset.

FAQ

Does LeadOcean have a Pipedrive app?

No. LeadOcean is a REST API with an x-api-key header, so you call it from a receiver or script. There is no marketplace listing.

Can I enrich existing people, not just new ones?

Yes. List people with GET /api/v2/persons, then run the same two calls. Skip anyone who already has a phone to save records.

What if the person has no email?

Use linkedin_url instead, kept in a custom field. Send one identifier per call.

Does the webhook fire on bulk imports?

Pipedrive fires events from the UI and the API. It flags bulk operations with is_bulk_edit. Expect a burst on import and watch the rate limit.

Enrich every new Pipedrive contact with 1,000 free records

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

Get your free API key →