skills/analyst-data-objects/SKILL.md
Defines the structure of API request/response objects including user attributes, events, purchases, messaging payloads, audiences, and scheduling.
npx skillsauth add delta-and-beta/braze-agency analyst-data-objectsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
★ Insight ─────────────────────────────────────
writing-skills skill emphasizes CSO (Claude Search Optimization) — description and keywords must match how future Claude instances will search, not how humans would describe the skill.─────────────────────────────────────────────────Here is the generated skill body:
This skill covers the structure, required fields, validation rules, and relationships of every request/response object used in Braze API calls — from user identification through scheduling, event tracking, and messaging payloads. It is the authoritative reference for analysts and engineers modeling data flowing into and out of Braze.
Analytical lens: Treat each object as a schema contract. When designing an integration or debugging a failed API call, start here to verify field types, required vs. optional parameters, size limits, and which identifiers are acceptable at each endpoint.
Use this skill when:
/users/track, /messages/send, or Canvas trigger call400 Bad Request caused by a malformed object| Object | Endpoint Context | Key Fields |
|---|---|---|
| User Attributes | /users/track attributes[] | external_id or alias, standard + custom attributes |
| User Alias | Nested in attributes/recipients | alias_name, alias_label |
| Aliases to Identify | /users/identify | external_id, user_alias, merge behavior |
| Event Object | /users/track events[] | external_id, name, time, properties |
| Purchase Object | /users/track purchases[] | external_id, product_id, currency, price, time |
| Trigger Properties | Campaign API-trigger trigger_properties | Arbitrary KV pairs, campaign scope only |
| Context Object | Canvas trigger context | Arbitrary KV map, 50 KB limit, Canvas first-step scope |
| Recipient Object | /messages/send, schedule endpoints | Exactly one of: external_user_id, user_alias, braze_id, email |
| Schedule Object | Schedule create/update endpoints | time (ISO 8601), optional in_local_time, at_optimal_time |
| Connected Audience Filter | API-triggered sends audience | Attribute, event, and segment filter composition |
| Catalog Selection Object | Catalog selection API | name, description, filters, sort_field, sort_order, limit |
| Webhook Messaging Object | /messages/send messages.webhook | url, request_method, request_headers, request_body |
| WhatsApp Messaging Object | /messages/send messages.whatsapp | Consult source docs — minimal schema available |
Braze supports four user identifiers. Exactly one is required per Recipient Object entry:
external_user_id → your system's primary key (preferred)
user_alias → { alias_name, alias_label } for anonymous or third-party IDs
braze_id → Braze-assigned internal ID (read from SDK/export)
email → email-only sends (no profile creation)
aliases_to_identify merges an alias profile into an identified profile — use this post-login or post-resolution to consolidate event history.
Passed in the attributes array of /users/track. Sets profile fields. Custom attributes are any non-reserved key. Standard attributes (e.g., first_name, email, phone) follow Braze's reserved schema.
Passed in the events array of /users/track. Each object = one custom event occurrence. The properties field accepts a flat or nested JSON object; values must be scalar or arrays of scalars for segmentation support.
Passed in the purchases array of /users/track. The currency field must be a valid ISO 4217 code. price is a float. Revenue reporting and purchase funnels depend on the accuracy of these fields.
| | Trigger Properties | Context Object |
|---|---|---|
| Scope | Campaigns (API-triggered) | Canvas (first step only) |
| Namespace | trigger_properties | context |
| Size limit | — | 50 KB |
| Use | Per-send personalization | Canvas entry data injection |
Used in schedule creation endpoints. time is a required ISO 8601 datetime. Optional flags in_local_time and at_optimal_time alter delivery windows — these are mutually exclusive.
Composes attribute, event, purchase, and segment conditions into an audience object for API-triggered sends. Allows targeting without pre-built segments.
Used when calling catalog selection endpoints. The filters array supports multi-condition filtering; sort_field and sort_order control result ordering; limit caps returned items.
| Mistake | Fix |
|---|---|
| Sending multiple identifiers in one Recipient entry | Use exactly one: external_user_id OR user_alias OR braze_id OR email |
| Using trigger_properties for Canvas | Use context for Canvas; trigger_properties is campaign-only |
| Nesting deep objects in event properties | Keep values scalar or arrays of scalars for segmentation compatibility |
| Omitting currency in Purchase Object | Required field — ISO 4217 string (e.g., "USD") |
| Setting in_local_time and at_optimal_time together | Mutually exclusive — pick one |
| Sending context beyond 50 KB | Payload will be rejected; trim or move large data to attributes |
★ Insight ─────────────────────────────────────
aliases_to_identify in the Identity Resolution section (rather than in the object inventory alone) gives it narrative context: it's not just a schema, it's a lifecycle operation that merges anonymous history into identified profiles.
─────────────────────────────────────────────────development
Cross-platform audience synchronization design across advertising platforms including Facebook, Google, TikTok, LinkedIn, and programmatic networks.
development
Defines cross-cutting API patterns for authentication, provisioning, preference management, and content delivery.
development
Covers API basics, authentication, rate limits, error codes, endpoint overview, data retention policies, and Postman collection usage.
development
Integration architecture for AI model providers including OpenAI, Google Gemini, and Anthropic within Braze messaging workflows.