Merge People

customer_io.merge_customers
ActionCRM & salesconnection required

Calls the Customer.io API with the connection's credentials.

Merge a duplicate profile into the one you want to keep. The secondary person's data moves to the primary and is then deleted.

Connection

Required
Yes — the node will not save without one
Auth type
API key
Providers
Customer.io
Secret shape
{"site_id": "…", "api_key": "…", "app_api_key": "…"} — the Site ID and Track API key for the Track nodes, the App API key for the rest
Config it needs
region, workspace_id
Resolved by
config.connection_id, else node.connection_id

Configuration

4 fields, 2 required. A dotted path is a nested object and name[] an array of objects — the editor renders the same tree.

FieldTypeRequiredDefaultConstraintsExample
primary
The person to keep, addressed by one identifier only.
stringYes———
primary_type
Which identifier the primary value is. Defaults to the person's own id.
stringNoidone of "id", "email", "cio_id"—
secondary
The duplicate to merge in and then delete.
stringYes———
secondary_type
Which identifier the secondary value is. Defaults to the person's own id.
stringNoidone of "id", "email", "cio_id"—

Example configuration

Every value below is the contract’s own example or default — nothing invented.

{
  "primary_type": "id",
  "secondary_type": "id"
}

Output

One shape.

result

FieldTypeExample
accepted
True when Customer.io queued the write. Track writes are applied asynchronously, so this reports acceptance, not that the change is live.
boolean—
merged
Always true; Customer.io accepted the merge.
boolean—
primary
The identifier object sent for the surviving person.
object—
secondary
The identifier object sent for the deleted person.
object—
{
  "accepted": false,
  "merged": false,
  "primary": {},
  "secondary": {}
}

Notes

  • Each side takes exactly one identifier key. Sending two, or naming a person who does not exist, is a 400 from Customer.io.

See Merge People run in a workflow.

In a technical demo we add the Customer.io connection, drop the node on the canvas and let Workflow Health pre-flight it before the first real run.