---
title: "Create Contact Activity Note"
method: POST
path: "/contacts/{contact_id}/events/notes"
tags: ["Contacts::Events::Note"]
---

# Create Contact Activity Note

`POST /contacts/{contact_id}/events/notes`

## Request

- Base URL: `https://myworkspace.myclickfunnels.com/api/v2`
- URL: `https://myworkspace.myclickfunnels.com/api/v2/contacts/{contact_id}/events/notes`
- Auth: one of:
  - HTTP bearer
  - OAuth 2
    - Authorization code: `https://accounts.myclickfunnels.com/oauth/authorize`
    - Token URL: `https://accounts.myclickfunnels.com/oauth/token`
- TypeScript: <https://skmtc.dev/myclickfunnels/apis/clickfunnels-api/docs/contacts/:contact_id/events/notes/post.ts> (a function with typed inputs; its response is checked against the schema)

Save a note synchronously in the contact's Activity tab with content and optional occurred_at. Attributed to the token's current membership and shown via API in Activity. Missing or blank content and an unparsable occurred_at return 422. No outgoing webhooks are emitted.

## Path parameters

- `contact_id` string, required

## Request body

- object
  - `contacts_events_note` ContactsEventsNoteParameters, required: Only content and occurred_at are writable; other attributes are ignored.
    - `content` string, required: Required nonblank text on creation; no length cap.
    - `occurred_at` string, date-time: Optional ISO 8601 timestamp. Defaults to server time on creation; omission on update preserves its occurrence time.

## Response `201`

Created

- ContactsEventsNoteAttributes
  - `id` integer: The same id as the contact event.
  - `public_id` string
  - `contact_id` integer
  - `content` string, nullable: The note text. Legacy blank notes may be null.
  - `created_by_id` integer, nullable: Membership id; uses the recorded membership or the author's membership in this workspace's team. Workflow notes have no author and return null.
  - `occurred_at` string, date-time
  - `created_at` string, date-time
  - `updated_at` string, date-time

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden — this request's workspace is closed to it. Three cases return this: * The access token is limited to specific workspaces (see the workspace selection made when the key was provisioned, or the workspaces approved on the OAuth consent screen) and the request acts on a workspace outside that set. * The access token is limited to specific workspaces and the request's workspace could not be determined at all. The gate is fail-closed, so a workspace-limited token is denied rather than allowed through when the target workspace is ambiguous. * The workspace's team has no active ClickFunnels subscription: it was canceled, is paused, or is locked out after failed payments. Reads and writes are both refused until the subscription is reactivated, and the body carries `"code": "subscription_inactive"`. A token with no workspace restriction never receives the first two.
- `404`: Not Found
- `422`: Unprocessable Entity

## Changes

- **2026-11-03** `511d88b30aea`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/myclickfunnels/apis/clickfunnels-api/changes/contacts/:contact_id/events/notes/post.md)

---

[API](https://skmtc.dev/myclickfunnels/apis/clickfunnels-api.md) - [All operations](https://skmtc.dev/myclickfunnels/apis/clickfunnels-api/llms.txt) - [OpenAPI document](https://skmtc.dev/myclickfunnels/apis/clickfunnels-api/revisions/511d88b30aea?raw)
