Documentation version: 2026-09-18.3
Canonical: https://docs.creator.gg/tools/contacts_upsert.md

# contacts_upsert

Create or update by email or phone using the account's deduplication settings. Preserves tags and DND. Reuse the same requestId when retrying an uncertain operation.

## Execution

Interface: Creators MCP tool at https://mcp.creator.gg/mcp. Do not construct a REST route from the tool name. The connection selects the workspace.

Effect: changes workspace data. requestId is required by the service (8–128 characters); reuse it only for the same action and arguments.

## Behavior and limits

Use returned IDs, inspect the result, and preserve unrelated records/preferences.

## Example arguments

Illustrative placeholders only. Replace IDs with values from this workspace, resolve sender/content/recipients, recalculate dates, and generate a new requestId for a new action.

```json
{
  "email": "person@example.com",
  "firstName": "Alex",
  "requestId": "example-contacts_upsert-001"
}
```

## Input schema

Generated from the current executable Creators contract. Runtime rules in Behavior and limits and the linked guide also apply; JSON Schema alone cannot express all cross-field constraints.

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "firstName": {
      "type": "string",
      "maxLength": 200
    },
    "lastName": {
      "type": "string",
      "maxLength": 200
    },
    "email": {
      "type": "string",
      "format": "email",
      "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
    },
    "phone": {
      "type": "string",
      "maxLength": 50
    },
    "address1": {
      "type": "string",
      "maxLength": 500
    },
    "city": {
      "type": "string",
      "maxLength": 200
    },
    "state": {
      "type": "string",
      "maxLength": 200
    },
    "postalCode": {
      "type": "string",
      "maxLength": 50
    },
    "country": {
      "type": "string",
      "pattern": "^[A-Z]{2}$"
    },
    "website": {
      "type": "string",
      "format": "uri"
    },
    "timezone": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "source": {
      "type": "string",
      "maxLength": 200
    },
    "customFields": {
      "maxItems": 100,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 300,
            "pattern": "^[A-Za-z0-9_-]+$"
          },
          "fieldValue": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 10000
              },
              {
                "type": "number"
              },
              {
                "type": "boolean"
              },
              {
                "maxItems": 100,
                "type": "array",
                "items": {
                  "type": "string",
                  "maxLength": 1000
                }
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "fieldValue"
        ],
        "additionalProperties": false
      }
    },
    "requestId": {
      "description": "Required by the Creators service for mutations: a stable 8–128 character identifier. Reuse on retries; change for a new action.",
      "type": "string",
      "pattern": "^[A-Za-z0-9_.:-]{8,128}$"
    }
  },
  "additionalProperties": false
}
```

## Result interpretation

Results use status and message, with operation-specific data and optional link, code, nextAction, and operationId. Data may retain different list/record envelopes. A completed read or accepted send is not proof of delivery/publication. An unknown result must be reconciled. HUMAN_ACTION_REQUIRED returns instructions without performing the action.

## Related guides

- [contacts](https://docs.creator.gg/guides/contacts.md)
- [Recovery](https://docs.creator.gg/guides/recovery.md)
