---
title: "Public: campaign email opt-in → Mailchimp list + per-campaign tag (Turnstile-protected)"
method: POST
path: "/api/marketing/notify"
tags: ["marketing"]
---

# Public: campaign email opt-in → Mailchimp list + per-campaign tag (Turnstile-protected)

`POST /api/marketing/notify`

## Request

- Base URL: `https://app.luxalgo.com`
- URL: `https://app.luxalgo.com/api/marketing/notify`
- Auth: none declared
- TypeScript: <https://skmtc.dev/luxalgo/apis/luxalgo-public-api/docs/api/marketing/notify/post.ts> (a function with typed inputs; its response is checked against the schema)

## Request body

- object
  - `email` string, email, required
  - `saleId` string, required
  - `turnstileToken` string

## Response `200`

Success. The payload is wrapped in the standard { data, errors } envelope.

- object
  - `data` object, required
    - `subscribed` boolean, required
  - `errors` unknown

## Other responses

- `400`: Validation error — errors[].details carries the zod issues.
- `500`: Unexpected server error.

---

[API](https://skmtc.dev/luxalgo/apis/luxalgo-public-api.md) - [All operations](https://skmtc.dev/luxalgo/apis/luxalgo-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/luxalgo/apis/luxalgo-public-api/revisions/226c2d642643?raw)
