---
canonical_url: "https://docs.composio.dev/toolkits/contacts_plus"
markdown_url: "https://docs.composio.dev/toolkits/contacts_plus.md"
product: "platform"
version: null
last_updated: null
---

# Contacts+

Contacts+ provides OAuth-secured access to personal account, contact, and tag data.

- **Category:** contact management
- **Auth:** OAUTH2
- **Composio-managed OAuth available?** No
- **Tools:** 13
- **Triggers:** 0
- **Slug:** `CONTACTS_PLUS`
- **Version:** 20260831_00

## Tools

### Create Contact

**Slug:** `CONTACTS_PLUS_CREATE_CONTACT`

Create a personal contact with structured profile data in the connected Contacts+ address book.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `contact_data` | object | Yes | Profile fields for the new personal contact. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Tag

**Slug:** `CONTACTS_PLUS_CREATE_TAG`

Create a personal Contacts+ tag, or return the existing tag when that name already exists. Before updating or deleting it, call GET_TAGS with the returned tag ID to obtain the canonical etag.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Name of the personal tag to create. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Contact

**Slug:** `CONTACTS_PLUS_DELETE_CONTACT`

Delete one personal contact using its current etag for concurrency protection. Refresh the etag after any update or contact-tag change before deleting.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `etag` | string | Yes | Current etag obtained after the latest update or tag change. |
| `contact_id` | string | Yes | Personal contact ID to delete. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Tag

**Slug:** `CONTACTS_PLUS_DELETE_TAG`

Delete one personal tag using its current canonical etag. Call GET_TAGS after any preceding tag write to obtain the canonical etag before deleting.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `etag` | string | Yes | Current canonical etag from GET_TAGS, read back after any preceding tag write. |
| `tag_id` | string | Yes | Personal tag ID to delete. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Account

**Slug:** `CONTACTS_PLUS_GET_ACCOUNT`

Return profile details for the authenticated Contacts+ personal account.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Contacts

**Slug:** `CONTACTS_PLUS_GET_CONTACTS`

Fetch current full records for one or more personal contacts by ID, including etags needed for safe updates and deletes.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `contact_ids` | array | Yes | One or more personal contact IDs to fetch. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Tags

**Slug:** `CONTACTS_PLUS_GET_TAGS`

Fetch current records for one or more personal tags by ID, including canonical etags needed for safe updates and deletes.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `tag_ids` | array | Yes | One or more personal tag IDs to fetch. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Contacts

**Slug:** `CONTACTS_PLUS_LIST_CONTACTS`

Return one cursor-controlled page of personal contacts from the connected Contacts+ address book.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `size` | integer | No | Requested contacts per page; the provider does not document a maximum. |
| `next_cursor` | string | No | Cursor returned by the previous page. Omit for the first page and pass the returned value back unchanged to continue. |
| `include_deleted_contacts` | boolean | No | Include deleted contact records when true. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Tags

**Slug:** `CONTACTS_PLUS_LIST_TAGS`

Return one cursor-controlled page of personal Contacts+ tags.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `size` | integer | No | Requested tags per page; the provider does not document a maximum. |
| `next_cursor` | string | No | Cursor returned by the previous page. Omit for the first page and pass the returned value back unchanged to continue. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Search Contacts

**Slug:** `CONTACTS_PLUS_SEARCH_CONTACTS`

Search personal contacts by full text or Contacts+ advanced query syntax, optionally restricted to tag IDs. Returns one cursor-controlled page. Search results may omit etags, so fetch selected records with GET_CONTACTS before mutation.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `tag_ids` | array | No | Optional personal tag IDs used to restrict matches. |
| `next_cursor` | string | No | Cursor returned by the previous search page; omit for the first page. Repeat the same search_query and tag_ids when continuing. |
| `search_query` | string | Yes | Full-text query or Contacts+ advanced AND/OR search expression. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Contact

**Slug:** `CONTACTS_PLUS_UPDATE_CONTACT`

Replace the desired data for a personal contact using its current etag and strict optimistic concurrency by default. Send all fields that must remain.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `etag` | string | Yes | Current etag from GET_CONTACTS or LIST_CONTACTS. |
| `contact_id` | string | Yes | Personal contact ID to update. |
| `contact_data` | object | Yes | Complete desired contact data. Include every field that must remain; fields omitted from this replacement can disappear. |
| `resolve_conflicts` | boolean | No | Whether Contacts+ may resolve a stale-etag conflict and overwrite data. Keep false for strict optimistic concurrency. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Contact Tags

**Slug:** `CONTACTS_PLUS_UPDATE_CONTACT_TAGS`

Add and/or remove personal tags across one or more personal contacts in a single operation. Each affected contact receives a new etag.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `add_tag_ids` | array | No | Personal tag IDs to add. Provide this or remove_tag_ids. |
| `contact_ids` | array | Yes | One or more personal contact IDs to modify. |
| `remove_tag_ids` | array | No | Personal tag IDs to remove. Provide this or add_tag_ids. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Tag

**Slug:** `CONTACTS_PLUS_UPDATE_TAG`

Rename a personal tag using its current canonical etag from GET_TAGS. Read the tag back after updating because write-response etags may not be canonical for the next protected mutation.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `etag` | string | Yes | Current canonical etag from GET_TAGS. |
| `name` | string | Yes | New name for the personal tag. |
| `tag_id` | string | Yes | Personal tag ID to update. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |
