---
title: "Set the shop's default Target Collab support contact"
method: PUT
path: "/target-collabs/support-contact-default"
tags: ["Target Collabs"]
---

# Set the shop's default Target Collab support contact

`PUT /target-collabs/support-contact-default`

Configure the shop-level default `support_contact` once, so TC create requests can omit it (CORE-5428). A per-request `support_contact` still overrides this default for that request.

`email` is required; `phone` is optional. The upsert is keyed on the shop, so re-sending the same body yields the same state. Requires `read_write` scope, a single shop (`x-shop-id`), and an `Idempotency-Key` header (for contract consistency with the other public-API write endpoints) — replay/conflict semantics match those writes.

## Headers

- `Idempotency-Key` string, nullable

## Request body

- ShopSupportContactDefaultRequest — Body for PUT /public/v1/target-collabs/support-contact-default (CORE-5428). Sets the shop-level default TC support contact. `email` is required; `phone` is optional (TikTok's TC card accepts an email-only contact). Validation mirrors `TargetCollabContact` so a stored default always satisfies the TC create surfaces it falls back into.
  - `email` string, required — Default contact email shown to the creator on the TC card.
  - `phone` string, nullable — Optional default contact phone. E.164 format recommended.

## Response `200`

Successful Response

- ShopSupportContactDefaultResponse — Shop-level default TC support contact (CORE-5428). Returned by GET and PUT /public/v1/target-collabs/support-contact-default. `configured` is False (and email/phone/updated_at are null) when the shop has no default set — in that state the TC create surfaces still require a per-request `support_contact`.
  - `shop_id` integer, required — Shop the default applies to.
  - `configured` boolean, required — True when a default is stored for this shop. When False, TC create requests must supply `support_contact` per request.
  - `email` string, nullable — Default contact email, or null when not configured.
  - `phone` string, nullable — Default contact phone, or null when unset/not configured.
  - `updated_at` string, nullable — ISO-8601 timestamp of the last update, or null when not configured.

## Other responses

- `400` — Multi-shop scope (`x-shop-id=all` or CSV) — requires a single shop.
- `403` — API key lacks `read_write` scope (`WRITE_NOT_PERMITTED`).
- `409` — Idempotency conflict — same key, different body.
- `422` — Validation Error
- `429` — Write-tier rate limit exceeded.
- `503` — Storage not yet available (migration 053 not applied).

---

[API](https://skmtc.dev/reacherapp/apis/reacher-data-api.md) · [All operations](https://skmtc.dev/reacherapp/apis/reacher-data-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/reacherapp/reacher-data-api/revisions/d4fe3e380424/schema)
