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.
- Get a LeadOcean key. Sign up at app.leadocean.io and copy a key from API keys.
- 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.
- Create the webhook. Call
POST /api/v1/webhookswith eventcreateand objectperson, or add it under Tools and apps, Webhooks. - Enrich the person. The payload carries
data.emailsanddata.org_id. Send the first email toPOST /v1/people/enrichwithreveal_email: true. A person LeadOcean holds nothing for is a 404 and costs nothing. - Enrich the organization. Take the domain from that email, skip free-mail domains, and call
POST /v1/companies/enrich. - 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.
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:
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 field | Pipedrive field | Note |
|---|---|---|
data.contact_data.contact_phones[0].phone | person phones[0].value | Only returned with reveal_email: true. |
data.contact_data.email_status | A custom text field | Mail only verified and catch_all_valid. |
data.contact_data.contact_current_experiences[0].job_title | person job_title | Exists only if contact sync is on. Otherwise Pipedrive answers 403. |
data.company_data.company_domain | organization website | Set only when the field is empty. |
data.company_data.company_employees.number_of_employees | organization employee_count | A number, or null when unknown. |
data.company_data.company_social_links.linkedin.url | organization linkedin | Company 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.
| Item | LeadOcean Free | LeadOcean Solo ($97 a month) |
|---|---|---|
| Records | 1,000 for life | Fair-use pace: 10k enrichments every 5 hours, 50k a week |
| Rate limit | 5 requests a second | 50 requests a second |
| 10,000 people plus companies | First 1,000 records only | About 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
| Symptom | Cause | Fix |
|---|---|---|
| Webhook never arrives | Receiver not public, or it redirects. | Pipedrive needs a public URL that does not redirect. |
| Same payload arrives twice | Your receiver answered non-2xx, so Pipedrive retried. | Answer 200 first, enrich after. |
| 404 from LeadOcean | Nothing held for that person. | Skip the row. It was not billed. |
| 400 from LeadOcean | Two identifiers or none. | Send only email. |
403 on job_title | Contact sync is off. | Turn it on or drop the field. |
| 429 from Pipedrive | Daily 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 →