Sync generic Customer.io destination fixes upstream#3654
Closed
jcpsimmons wants to merge 3 commits into
Closed
Conversation
Contributor
Author
|
Dependency map for CDP-4750:
Merge intent:
Links: |
Contributor
Author
|
Superseded by the smaller draft split for CDP-4750:
Closing this larger draft to avoid duplicate review paths and stale conflict noise. |
This was referenced Mar 10, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This upstreams the generic Customer.io destination behavior that should live in
segmentio/action-destinations, instead of staying only in Customer.io's fork.This PR is intentionally limited to generic Customer.io behavior that benefits Segment users connecting to Customer.io:
Why
Customer.io currently carries a forked Customer.io destination in
customerio/cdp-action-destinationsand a CDP-side wrapper incustomerio/cdp.For
CDP-4750, the goal is to shrink the fork over time:customerio/cdpcustomerio/cdp-action-destinationsThe main generic gap this PR addresses is Track API batch handling. Our fork already knows how to parse Customer.io's per-item batch errors and surface them as multi-status results instead of treating the entire batch as a flat success. That behavior should exist upstream because it is part of the shared Customer.io API contract, not a Customer.io-internal deployment detail.
Changes
MultiStatusResponse/ResultMultiStatusNodesupport in the actions core so a destination can return parsed per-item batch results.sendBatch()helper to parse Track API207 Multi-Statusresponses and200responses that still contain anerrorsarray.Delete DeviceDelete RelationshipDelete PersonDelete ObjectMerge PeopleSuppress PersonUnsuppress PersonTrack EventDevice Created or UpdatedinCreate or Update DeviceRelated PRs
Verification
I could not run the Segment repo test suite in this environment because local dependency installation fails on private Segment packages (
@segment/remote-service-clientandcontrol-plane-service-js-client).The code paths ported here are taken from behavior already running in Customer.io's fork, and I added matching upstream tests in this PR for those same code paths.