---
title: "/people/{vanId}/mergeInto"
method: PUT
path: "/people/{vanId}/mergeInto"
---

# /people/{vanId}/mergeInto

`PUT /people/{vanId}/mergeInto`

## Request

- Base URL: `https://api.securevan.com/v4`
- URL: `https://api.securevan.com/v4/people/{vanId}/mergeInto`
- Auth: HTTP basic

Merges a Source contact record into a Target contact record, retaining the Target's information when Source and Target conflict.

This API can be used to merge two contact records in your database.

* The **Source** (or **Secondary**) contact is specified in the URL (`/people/{vanId}/mergeInto`); this record will be deleted as part of the merge
* The **Target** (or **Primary**) contact is specified in the body of the request and survives the merge

>❗️ Merges are permanent and **cannot** be undone. Use this endpoint with caution.

Some fields may conflict between the two records and the merge process will not be able to retain both values (e.g., different first names). In this case, the API will retain the Target's information, which is the same behavior as the default selections in the Contacts Merge Wizard in the UI. Note that if you need to retain information from the Source, you can make a subsequent [/people/{vanId}](ref:peoplevanid) call to update the Target with the value(s) from the Source record you want to persist. All other fields where multiple values can be stored--such as emails, phones, and addresses--will be combined into the Target record.

Not all records can be merged; if a record cannot be merged it will be treated as an [Input Validation](ref:input-validation) error with details provided in the `text` field of the error response. Though not exhaustive, some conditions that could prevent a merge are:

* Both VANIDs need to exist and be accessible to you
* Both records must have the same `contactMode`
* If Disclosure Fields are enabled, the Source record cannot be linked to a Contribution or Disbursement

To check if records can be merged without actually merging, you can specify `?whatIf=true` in the query string.

## Path parameters

- `vanId` integer, required

## Query parameters

- `whatIf` boolean

## Request body

- object
  - `vanId` integer, required: VANID for the **Target** record (the record that survives the merge)

## Response `200`

200

- object
  - `vanId` integer

## Other responses

- `400`: 400

## Changes

- **2026-11-03** `4f2049fba5af`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/ngpvan/apis/van-crm/changes/people/:vanId/mergeInto/put.md)

---

[API](https://skmtc.dev/ngpvan/apis/van-crm.md) - [All operations](https://skmtc.dev/ngpvan/apis/van-crm/llms.txt) - [OpenAPI document](https://skmtc.dev/ngpvan/apis/van-crm/revisions/4f2049fba5af?raw)
