CheckboxDocs

Notices API

Checkbox sends the legally required acknowledgment, trial-ending, renewal, yearly-terms and price-change emails for the merchant, timed from the legal catalog.

OperationEndpoint
Retrieve notice settingsGET /v1/sites/{site}/notice_settings
Update notice settingsPOST /v1/sites/{site}/notice_settings

The NoticeSettings object

Checkbox Notices for a site: the legally required emails Checkbox sends on the merchant's behalf.

FieldTypeDescription
idstringUnique identifier of the notice settings (ntcs_…).
objectenumString representing the object's type. Always "notice_settings".
livemodebooleantrue for live-mode objects, false for test mode (ck_test_ keys act on an isolated sandbox).
sitestringThe site.
enabled_kindsarray of enumNotices Checkbox sends for the merchant.
brand_namestring | nullBrand shown in notices (defaults to the site name).
product_namestring | nullProduct name used in notices.
logo_urlstring | nullLogo URL (https).
support_emailstring | nullReply-to / support address.
cancel_urlstring | nullWhere subscribers cancel online (site domain, hosted cancellation page or billing portal).
brand_colorstring | nullHex brand colour.
from_local_partstringMailbox name of the sender.
policyobject | nullConfirmed cancellation policy (required before notices go out).
policy.cancel_timingenumWhen a cancellation takes effect. One of period_end, immediately.
policy.confirmedintegerWhen the policy was confirmed. Unix timestamp in seconds.
senderobject | nullSending address, when one is available.
sender.fromstringFrom header.
sender.own_domainbooleanSent from the merchant's verified domain.
sending_domainobjectCustom sending domain status (set it up in the dashboard).
sending_domain.domainstring | nullCustom sending domain.
sending_domain.statusstringnone, pending, verified or failed.
delivery_configuredbooleanThis Checkbox deployment can send email.
kindsarray of objectsEvery notice kind.
updatedinteger | nullLast change. Unix timestamp in seconds.
next_actionNextAction | nullWhat the caller (often an AI agent) should do next.

Retrieve notice settings

GET /v1/sites/{site}/notice_settings

Which notices Checkbox sends for the site and what is missing before they can go out (next_action).

Scope notices:read · Operation retrieveNoticeSettings

SDK: checkbox.noticeSettings.retrieve() (Node) · checkbox.notice_settings.retrieve() (Python). MCP / agents: operation retrieveNoticeSettings.

Parameters

ParameterInTypeDescription
site requiredpathstringUnique identifier of the site (site_…).

Returns

Returns a NoticeSettings object.

Errors use the standard envelope with a stable code and, where useful, next_action.

curl https://app.checkbox.site/v1/sites/site_3f9a1c2e7b4d4e0f9a8b7c6d5e4f3a2b/notice_settings \
  -u "$CHECKBOX_SECRET_KEY:"
Response
{
  "id": "ntcs_3f9a1c2e7b4d4e0f9a8b7c6d5e4f3a2b",
  "object": "notice_settings",
  "livemode": false,
  "site": "site_3f9a1c2e7b4d4e0f9a8b7c6d5e4f3a2b",
  "enabled_kinds": [
    "acknowledgment",
    "renewal_reminder"
  ],
  "brand_name": "Acme Coffee Club",
  "product_name": "Coffee subscription",
  "logo_url": null,
  "support_email": "help@acme.example",
  "cancel_url": "https://acme.example/account/cancel",
  "brand_color": "#1f2937",
  "from_local_part": "notices",
  "policy": {
    "cancel_timing": "period_end",
    "confirmed": 1793318400
  },
  "sender": {
    "from": "Acme Coffee Club <notices@acme.example>",
    "own_domain": true
  },
  "sending_domain": {
    "domain": "acme.example",
    "status": "verified"
  },
  "delivery_configured": true,
  "kinds": [
    {
      "kind": "renewal_reminder",
      "label": "Renewal reminder",
      "description": "Sent before an annual renewal.",
      "enabled": true,
      "check_ids": [
        "reminder.annual_renewal_notice"
      ]
    }
  ],
  "updated": 1793318400,
  "next_action": {
    "type": "verify_domain",
    "message": "Verify your site domain to turn on live mode.",
    "operation_id": "createDomainVerification",
    "mcp_tool": "call_api",
    "url": "https://checkbox.site/docs/api/activation"
  }
}

Update notice settings

POST /v1/sites/{site}/notice_settings

Turns notices on or off and sets branding, cancel_url and the confirmed cancellation policy. Turning a notice on requires cancel_url, a confirmed policy, a connected Stripe or Recharge account and a sending address; otherwise resource_conflict explains what is missing.

Scope notices:write · Idempotent (send Idempotency-Key) · Live mode needs activation · Operation updateNoticeSettings

SDK: checkbox.noticeSettings.update() (Node) · checkbox.notice_settings.update() (Python). MCP / agents: operation updateNoticeSettings.

Parameters

ParameterInTypeDescription
site requiredpathstringUnique identifier of the site (site_…).

Body

FieldTypeDescription
enabled_kindsarray of enumNotices to send (turning one on needs cancel_url, a confirmed policy and a connected Stripe/Recharge account). trial_reminder is accepted as an alias of trial_ending.
brand_namestring | nullBrand name.
product_namestring | nullProduct name.
logo_urlstring | nullLogo URL (https).
support_emailstring | nullSupport address.
cancel_urlstring | nullOnline cancellation URL.
brand_colorstring | nullHex colour.
from_local_partstringSender mailbox name.
policyobject | nullCancellation policy the notices state.
policy.cancel_timing requiredenumWhen a cancellation takes effect (must match your Terms). One of period_end, immediately.
policy.confirm requiredenumConfirms this matches your Terms and your cancellation flow.

Returns

Returns a NoticeSettings object.

In live mode before activation: 403 account_not_activated with next_action.operation_id: "createDomainVerification".

Errors use the standard envelope with a stable code and, where useful, next_action.

curl https://app.checkbox.site/v1/sites/site_3f9a1c2e7b4d4e0f9a8b7c6d5e4f3a2b/notice_settings \
  -u "$CHECKBOX_SECRET_KEY:" \
  -H "Content-Type: application/json" \
  -d '{
  "brand_name": "Acme Coffee Club"
}'
Response
{
  "id": "ntcs_3f9a1c2e7b4d4e0f9a8b7c6d5e4f3a2b",
  "object": "notice_settings",
  "livemode": false,
  "site": "site_3f9a1c2e7b4d4e0f9a8b7c6d5e4f3a2b",
  "enabled_kinds": [
    "acknowledgment",
    "renewal_reminder"
  ],
  "brand_name": "Acme Coffee Club",
  "product_name": "Coffee subscription",
  "logo_url": null,
  "support_email": "help@acme.example",
  "cancel_url": "https://acme.example/account/cancel",
  "brand_color": "#1f2937",
  "from_local_part": "notices",
  "policy": {
    "cancel_timing": "period_end",
    "confirmed": 1793318400
  },
  "sender": {
    "from": "Acme Coffee Club <notices@acme.example>",
    "own_domain": true
  },
  "sending_domain": {
    "domain": "acme.example",
    "status": "verified"
  },
  "delivery_configured": true,
  "kinds": [
    {
      "kind": "renewal_reminder",
      "label": "Renewal reminder",
      "description": "Sent before an annual renewal.",
      "enabled": true,
      "check_ids": [
        "reminder.annual_renewal_notice"
      ]
    }
  ],
  "updated": 1793318400,
  "next_action": {
    "type": "verify_domain",
    "message": "Verify your site domain to turn on live mode.",
    "operation_id": "createDomainVerification",
    "mcp_tool": "call_api",
    "url": "https://checkbox.site/docs/api/activation"
  }
}

Checkbox is compliance software, not a law firm; nothing in these docs is legal advice (details). For AI agents: every page is available as Markdown at the same URL plus .md; the index is /llms.txt.