Skip to content

Conversation

@tainmar
Copy link

@tainmar tainmar commented Jan 27, 2026

Summary

This PR adds support for Pipedrive custom fields to the source-pipedrive connector. Custom fields in Pipedrive are returned with 40-character hash keys, making them difficult to use in destination systems. This implementation adds human-readable field names alongside the original hash keys.

Changes

  • Added CustomFieldsTransformation component that:

    • Fetches field definitions from Pipedrive's *Fields endpoints
    • Maps hash keys to human-readable names
    • Adds new fields with pattern custom_<sanitized_field_name>
    • Resolves option IDs to labels for enum/set fields
    • Handles subfields for monetary, daterange, and timerange field types
  • Updated streams to use the transformation:

    • deals (via v1/dealFields)
    • persons (via v1/personFields)
    • organizations (via v1/organizationFields)
    • products (via v1/productFields)
    • leads (via v1/leadFields)
    • activities (via v1/activityFields)
  • Bumped connector version from 2.4.0 to 2.5.0

Example

Before this change, a deal record might look like:

{
  "id": 1,
  "title": "Big Deal",
  "abc123def456abc123def456abc123def456abc1": "Custom Value",
  "xyz789ghi012xyz789ghi012xyz789ghi012xyz7": 42
}

After this change:

{
  "id": 1,
  "title": "Big Deal",
  "abc123def456abc123def456abc123def456abc1": "Custom Value",
  "custom_my_custom_text_field": "Custom Value",
  "xyz789ghi012xyz789ghi012xyz789ghi012xyz7": 42,
  "custom_deal_priority": "High"  // Option label resolved from ID
}

Backwards Compatibility

The original hash-keyed fields are preserved, so existing syncs won't break. The new custom_* fields are additive.

Related Issues

Closes #33622

Test Plan

  • Verify connector builds successfully
  • Test with a Pipedrive account that has custom fields defined
  • Verify custom fields appear with readable names in synced data
  • Verify option/enum fields have labels resolved
  • Verify existing syncs continue to work (hash keys still present)

🤖 Generated with Claude Code

Adds a CustomFieldsTransformation component that maps Pipedrive's
40-character hash keys for custom fields to human-readable field names.

For each custom field in a record, the transformation adds a new field
with the pattern `custom_<sanitized_field_name>` containing the value.
For enum/set fields, option IDs are resolved to their labels.

Custom fields are now supported for:
- deals (via v1/dealFields)
- persons (via v1/personFields)
- organizations (via v1/organizationFields)
- products (via v1/productFields)
- leads (via v1/leadFields)
- activities (via v1/activityFields)

The original hash-keyed fields are preserved for backwards compatibility.

Closes airbytehq#33622

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@CLAassistant
Copy link

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

@octavia-bot
Copy link
Contributor

octavia-bot bot commented Jan 27, 2026

Note

📝 PR Converted to Draft

More info...

Thank you for creating this PR. As a policy to protect our engineers' time, Airbyte requires all PRs to be created first in draft status. Your PR has been automatically converted to draft status in respect for this policy.

As soon as your PR is ready for formal review, you can proceed to convert the PR to "ready for review" status by clicking the "Ready for review" button at the bottom of the PR page.

To skip draft status in future PRs, please include [ready] in your PR title or add the skip-draft-status label when creating your PR.

@github-actions
Copy link
Contributor

👋 Welcome to Airbyte!

Thank you for your contribution from tainmar/airbyte! We're excited to have you in the Airbyte community.

If you have any questions, feel free to ask in the PR comments or join our Slack community.

💡 Show Tips and Tricks

PR Slash Commands

As needed or by request, Airbyte Maintainers can execute the following slash commands on your PR:

  • /format-fix - Fixes most formatting issues.
  • /bump-version - Bumps connector versions.
  • /run-connector-tests - Runs connector tests.
  • /run-cat-tests - Runs CAT tests.
  • /run-regression-tests - Runs regression tests for the modified connector(s).
  • /build-connector-images - Builds and publishes a pre-release docker image for the modified connector(s).
  • /publish-connectors-prerelease - Publishes pre-release connector builds (tagged as {version}-preview.{git-sha}) for all modified connectors in the PR.
  • /ai-review - AI-powered PR review for connector safety and quality gates.

Tips for Working with CI

  1. Pre-Release Checks. Please pay attention to these, as they contain standard checks on the metadata.yaml file, docs requirements, etc. If you need help resolving a pre-release check, please ask a maintainer.
    • Note: If you are creating a new connector, please be sure to replace the default logo.svg file with a suitable icon.
  2. Connector CI Tests. Some failures here may be expected if your tests require credentials. Please review these results to ensure (1) unit tests are passing, if applicable, and (2) integration tests pass to the degree possible and expected.
  3. (Optional.) BYO Connector Credentials for tests in your fork. You can optionally set up your fork with BYO credentials for your connector. This can significantly speed up your review, ensuring your changes are fully tested before the maintainers begin their review.
📚 Show Repo Guidance

Helpful Resources

📝 Edit this welcome message.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Development

Successfully merging this pull request may close these issues.

[source-pipedrive] Pipedrive custom fields still do not sync

3 participants