---
title: "Update a contact"
method: PUT
path: "/v1/contacts/update"
tags: ["Contacts"]
---

# Update a contact

`PUT /v1/contacts/update`

Update a contact by `email` or `userId`. You must provide one of these parameters.

If you want to update a contact's email address, the contact will first need a `userId` value. You can then make a request containing the `userId` field along with an updated email address.

This endpoint will create a contact if a matching contact does not already exist in your audience.

Provide either `email` or `userId` to identify the contact you want to update. If both are provided, the system will look for a contact with either a matching `email` or `userId` value. If a contact is found for one of the values (e.g. `email`), the other value (e.g. `userId`) will be updated. If a contact is not found, a new contact will be created using both `email` and `userId` values.

## Request body

- union
  - object
    - `email` string, required — The contact's email address.
    - `firstName` string — The contact's first name.
    - `lastName` string — The contact's last name.
    - `source` string — A custom source value to replace the default “API”.
    - `subscribed` boolean — Whether the contact will receive campaign and workflow emails. All new contacts are subscribed by default.
    - `userGroup` string — The contact's user group.
    - `userId` string — A unique user ID (for example, from an external application).
    - `mailingLists` MailingListSubscriptions — Manage mailing list subscriptions. Include key-value pairs of mailing list IDs and a `boolean` denoting if the contact should be added (`true`) or removed (`false`) from the list.
  - object
    - `email` string — The contact's email address.
    - `firstName` string — The contact's first name.
    - `lastName` string — The contact's last name.
    - `source` string — A custom source value to replace the default “API”.
    - `subscribed` boolean — Whether the contact will receive campaign and workflow emails. All new contacts are subscribed by default.
    - `userGroup` string — The contact's user group.
    - `userId` string, required — A unique user ID (for example, from an external application).
    - `mailingLists` MailingListSubscriptions — Manage mailing list subscriptions. Include key-value pairs of mailing list IDs and a `boolean` denoting if the contact should be added (`true`) or removed (`false`) from the list.

## Response `200`

Successful update.

- ContactSuccessResponse
  - `success` boolean, required
  - `id` string, required

## Other responses

- `400` — Bad request (e.g. `email` or `userId` are missing).
- `405` — Wrong HTTP request method.

---

[API](https://skmtc.net/loops/apis/loops-openapi-spec.md) · [All operations](https://skmtc.net/loops/apis/loops-openapi-spec/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/loops/loops-openapi-spec/revisions/9cc087257f0d/schema)
