At a glance
| Name | Stands for | Example | Where it comes from |
|---|---|---|---|
partner_id | Partner / tenant | partner-id-acme, fd123 | Cognito cognito:groups claim on IdToken |
client_id | Same entity, internal numeric form | 1042 | id field in GET /partners/ response |
user_id / sub | Cognito user subject | b1e2... | Cognito sub claim on IdToken |
eid | Event id | evt_abc123 (or numeric) | id field in GET /events/ items |
tc | Taste cluster name | family_outings_munich | tc field on cluster + campaign entities |
tc_run_id | Taste cluster run | 42 | tc_run_id field on the same entities |
cid | Campaign id (composite) | 42_evt_abc123_family-outings-munich | Computed client-side |
audience_id | Saved audience (Wave) | aud_777 | Returned from POST /setup_processes/.../boost |
package_id | Package Builder package | pkg_555 | Returned from POST /package_builder/packages |
tc_run_id ∈ package | Cluster generation inside a package | 42 | Embedded in package payload |
Identifier rules
partner_id
- Always present on a Cognito-authenticated user’s
cognito:groupsclaim. - Pattern:
partner-id-<slug>orfd<digits>for legacy partners. - Send as
X-Preferred-Partner-Idheader on every authenticated request. - Immutable for the lifetime of the partner.
client_id
- Returned as
idfromGET /partners/. - Same entity as
partner_idbut in an internal numeric/string form. - Required only by a few legacy endpoints; prefer
partner_idwherever both are accepted.
eid (event id)
- Returned as
idon every event payload. The reference webapp aliases it toeidwhen constructing URLs (api/events.js:12,179). - Used as a path segment:
/events/{eid}/...,/setup_processes/{eid},/campaigns/{eid}/.... - Stable for the life of the event. Renaming or rescheduling the event does not change it.
tc (taste cluster)
- A string label for a cluster, scoped to one event + one run.
- Used as a path segment for per-cluster operations:
/package_builder/packages/{packageId}/{tc}/customer_list,/campaigns/{eid}/{tc}/{tc_run_id}/creative. - May contain spaces or hyphens — URL-encode in path segments.
- The reference webapp slugifies it (
tc.replace(/\s+/g, "-")) when composingcid, but does not slugify it when sending as a path segment to per-cluster endpoints. Mirror that.
tc_run_id
- Integer (or short string) identifying one generation of the cluster set for an event.
- Old runs remain readable so existing campaigns stay valid. A new run does not invalidate older runs.
- When listing clusters for an event, you’ll typically receive the latest run. Campaigns store the run they were created against — preserve it.
cid (campaign id)
- Computed client-side as
${tc_run_id}_${eid}_${tc-slug}(seewebapp/src/api/campaigns.js:54). - Used to navigate within your own UI; the API mostly accepts the three
components separately as path segments. Don’t send
cidas a single parameter unless the endpoint explicitly wants it.
audience_id / saved_audience_id
- Issued by the upstream ad platform (e.g. Meta) once a Wave campaign is
published. Surfaced back as
audience_idon campaign records andsaved_audience_idon per-cluster edits.
package_id
- Returned from
POST /package_builder/packagesas{ id }. Use it for every subsequent operation on the package (status poll, content fetch, CSV download, regenerate).
Special partner identifiers
Some Cognito groups grant elevated capability:| Group | Capability |
|---|---|
fd-admin | Platform admin — can act across partners. Never expose admin-only endpoints in your UI. |
back-office-admin | Same scope, narrower role. |
webapp-access-group-<N> | Access tier within the reference webapp; safe to ignore. |
account-disabled | Reject login. |
external-user | Reject login (not allowed in first-party apps). |
Common pitfalls
Slugifying tc when you shouldn't (or not slugifying when you should)
Slugifying tc when you shouldn't (or not slugifying when you should)
cid is composed from a slugified tc. But the path-segment usage in
/campaigns/{eid}/{tc}/{tc_run_id}/... and
/package_builder/packages/{packageId}/{tc}/customer_list uses the
raw tc (URL-encoded). Mixing the two produces 404s.Forgetting tc_run_id when editing a campaign
Forgetting tc_run_id when editing a campaign
A campaign is uniquely identified by
(eid, tc, tc_run_id) — all three
are required for any per-campaign mutation. If you only persist
(eid, tc) client-side, you’ll silently target the wrong run after the
next refresh.Using client_id where partner_id is expected
Using client_id where partner_id is expected
For endpoints with a
partner_id query param, send the public partner
id. For endpoints documented to expect client_id, read it from
GET /partners/. Don’t substitute.Treating eid as numeric vs string
Treating eid as numeric vs string
The API accepts both; partners that mix the two in URL building
(
/events/${eid} with eid coerced to number) lose leading-zero or
prefix-style ids. Treat eid as an opaque string.