> ## Documentation Index
> Fetch the complete documentation index at: https://docs.open.cx/llms.txt
> Use this file to discover all available pages before exploring further.

# Pipedrive troubleshooting

> Debug Pipedrive workflow errors: payloads that arrive untyped, E.164 phone failures, empty update errors, and search misses.

Before debugging, have this ready:

* The **workflow run ID** from your [OpenCX dashboard](https://platform.open.cx) (run viewer → failed run).
* The **Pipedrive Lead ID** involved, if known.
* The **form ID** if the workflow uses a Form Submit trigger, or the generic webhook URL otherwise.

<Tip>
  The workflow run viewer shows each node's input and output. Most Pipedrive failures surface there as an `error` string on the action — read it before assuming the integration is down.
</Tip>

## Common scenarios

Jump to the symptom you're seeing.

### **Pipedrive webhook fires but the workflow doesn't see the body**

<Tooltip tip="Generic webhook triggers don't validate the body against a schema, so the flow builder can't infer field names. The payload is delivered, but nothing shows up as a typed suggestion.">Likely cause</Tooltip>: the workflow uses a generic **Webhook** trigger instead of a **Form Submit** trigger.

**Fix:** switch the trigger type to **Form Submit** and define the schema for the fields Pipedrive sends. Update the Pipedrive HTTP Request body to `{ formId, formData: { ... } }` and POST to `https://api.open.cx/backend/workflow/form-submission`. Full recipe in [Trigger workflows from Pipedrive](/integrations/pipedrive/webhook-trigger).

### **Outbound call fails with `customer.number must be a valid phone number in the E.164 format`**

<Tooltip tip="The call provider requires E.164 (leading +, country code, number). Pipedrive commonly stores phone numbers without the +, which rejects with a 400.">Likely cause</Tooltip>: the phone number coming out of Pipedrive lacks a `+` prefix or a country code.

**Fix:** normalize the number before the call action runs. Prepend `+` in the Pipedrive HTTP Request body if it's missing, or add a transformation node in the OpenCX workflow between the trigger and the call action that rewrites the number to E.164.

### **`Update PipeDrive Lead` action returns "Lead not found and createIfNotFound is false"**

<Tooltip tip="Pipedrive's item search uses exact_match=true on standard fields like phone, email, person_name, or org_name. Custom fields are matched inconsistently and often miss even when the value is present.">Likely cause</Tooltip>: the search criterion either doesn't match exactly or points at a custom field.

**Fix:** search by a standard field — `phone`, `email`, `person_name`, or `org_name`. If you absolutely need a custom-field match, pass the Lead ID directly into the workflow (for example, include it in the Pipedrive automation payload and route it through the trigger) and skip Search Criteria. Enable **Create If Not Found** only when creating a duplicate is actually safe.

### **Action fails with "No valid fields to update"**

<Tooltip tip="Every entry in Field Updates had an empty, null, or undefined value, and Skip Empty Values is on. The action refuses to send an empty PATCH.">Likely cause</Tooltip>: all the values resolved empty (often because upstream data was missing) and **Skip Empty Values** is on.

**Fix:** guard the node with a condition so it only runs when you have at least one non-empty value. If you intentionally want to clear fields in Pipedrive, set **Skip Empty Values** to `false` so empty strings and `null`s are sent through.

### **None of the above**

Send your OpenCX contact the failing **workflow run ID**, the **Lead ID** you're touching, and a copy of the node configuration (redact the API token). We'll trace from there.

## Limits & timing

|                              | Value                                                             |
| ---------------------------- | ----------------------------------------------------------------- |
| **Per-action HTTP timeout**  | 30 seconds for each Pipedrive API call (search, create, update)   |
| **Pipedrive API rate limit** | Governed by your Pipedrive plan — see your plan's rate-limit docs |

<Note>
  Bursts from a single Pipedrive automation can exceed plan rate limits during data backfills. Stagger the HTTP Request step or throttle the automation when migrating large lead batches.
</Note>

***

## Related Documentation

<CardGroup cols={2}>
  <Card title="Connect" icon="plug" href="/integrations/pipedrive/connect">
    Re-verify the API token and company domain.
  </Card>

  <Card title="Update Lead Action" icon="user-round-pen" href="/integrations/pipedrive/update-lead-action">
    Inputs, search rules, and the value-field quirk.
  </Card>

  <Card title="Trigger workflows from Pipedrive" icon="bolt" href="/integrations/pipedrive/webhook-trigger">
    Form Submit vs webhook, E.164 normalization, automation setup.
  </Card>

  <Card title="Overview" icon="users-viewfinder" href="/integrations/pipedrive/overview">
    Capabilities and patterns at a glance.
  </Card>
</CardGroup>
