
clix-api-triggered-campaigns
by clix-so
An open collection of agent skills for Clix.
SKILL.md
name: clix-api-triggered-campaigns display-name: API-Triggered Campaigns short-description: API-triggered campaign setup description: Helps developers configure API-triggered campaigns in the Clix console and trigger them from backend services with safe auth, payload schemas, dynamic audience filters (trigger.*), and personalization best practices. Use when the user mentions transactional notifications, backend-triggered sends, campaign_id trigger APIs, or "API-triggered campaigns". user-invocable: true
API-Triggered Campaigns (Backend → Clix)
Use this skill to set up API-triggered campaigns in the Clix console and
trigger them from your backend with dynamic data (trigger.*) for:
- Transactional notifications (orders, password reset, receipts)
- Workflow messages (assignments, approvals)
- System alerts (moderation, support tickets)
- Programmatic sends where marketers/ops should control content + targeting
What the official docs guarantee (high-signal)
- API-triggered campaigns are configured in the console, then triggered via:
POST /api/v1/campaigns/{campaign_id}:trigger - Authentication uses secret headers:
X-Clix-Project-IDX-Clix-API-Key
- Request
propertiesbecometrigger.*for:- Dynamic audience filtering (console audience rules)
- Personalization in templates (title/body/deep links)
audience.broadcast=truesends to all users eligible under the campaign’s segment definition;audience.targetsnarrows to specific users/devices (still filtered by the segment definition).- Dynamic audience filters are intentionally constrained for performance: max 3 attributes in the audience definition.
MCP-first (source of truth)
If Clix MCP tools are available, treat them as the source of truth:
- Use
clix-mcp-server:search_docsto confirm the latest API contract + limits:- query examples:
"API-triggered campaign trigger endpoint""campaigns/{campaign_id}:trigger audience targets broadcast""trigger.* dynamic audience filters limitations"
- query examples:
If MCP tools are not available, use the bundled references:
- API contract →
references/api-contract.md - Console setup + dynamic filters →
references/console-setup.md - Backend patterns (auth, retries, timeouts) →
references/backend-patterns.md - Security/key handling →
references/security-and-keys.md - Personalization + dynamic filters →
references/personalization-and-dynamic-filters.md - Debugging checklist →
references/debugging.md
Workflow (copy + check off)
API-triggered campaign progress:
- [ ] 1) Confirm goals + trigger source (what backend event sends the message?)
- [ ] 2) Define campaign contract (properties keys/types; PII policy)
- [ ] 3) Configure campaign in console (API-triggered + audience rules + templates)
- [ ] 4) Implement backend trigger wrapper (auth, timeout, retries, logging)
- [ ] 5) Validate trigger plan JSON (schema + naming + safety)
- [ ] 6) Verify in Clix (test payloads, Message Logs, segment matching)
1) Confirm the minimum inputs
Ask only what’s needed:
- Campaign: where is it in the console? do you already have
campaign_id? - Channel: push / in-app / email / etc. (affects message template fields)
- Audience mode: broadcast vs explicit targets
- Dynamic filter keys: which
trigger.*keys are used in audience rules - Properties: list of keys + types + example values (avoid PII by default)
- Backend: runtime and HTTP client (Node/Fetch, Axios, Python, Go, etc.)
2) Create a “Trigger Plan” (before touching backend code)
Create api-trigger-plan.json in .clix/ (recommended) or project root.
Recommended location: .clix/api-trigger-plan.json
Plan schema (high-level):
campaign_id(string)audience.mode:"broadcast" | "targets" | "default"audience.targets(if mode is"targets")dynamic_filter_keys(array of up to 3 snake_case keys)properties(map of snake_case keys →{ type, required?, example?, pii? })
Example:
{
"campaign_id": "019aa002-1d0e-7407-a0c5-5bfa8dd2be30",
"audience": {
"mode": "broadcast"
},
"dynamic_filter_keys": ["store_location"],
"properties": {
"store_location": {
"type": "string",
"required": true,
"example": "San Francisco"
},
"order_id": { "type": "string", "required": true, "example": "ORD-12345" },
"item_count": { "type": "number", "required": true, "example": 3 },
"pickup_time": { "type": "string", "required": false, "example": "2:30 PM" }
}
}
3) Configure campaign in the console (API-triggered)
- Set the campaign type to API-Triggered.
- Build audience rules using
{{ trigger.* }}for dynamic filters. - Use
{{ trigger.* }}in message templates + deep links.
See: references/console-setup.md for exact guidance and limitations.
4) Implement backend trigger wrapper (best practices)
Backend wrapper responsibilities:
- Auth: load
X-Clix-Project-IDandX-Clix-API-Keyfrom environment/secret store (never commit). - Timeout: set a short timeout (e.g., 3–10s) and fail fast.
- Retries: retry only on transient failures (network/5xx), with backoff; do not retry blindly on 4xx.
- Dedupe: prevent double-sends in your system (e.g., unique key per order event) since the API call is “send-like”.
- Logging: log
campaign_id, your correlation id (order id), and the Clix response (e.g.,trigger_id).
Copy/paste examples:
- Node:
examples/trigger-campaign-node.js - Python:
examples/trigger-campaign-python.py
5) Validate the plan (fast feedback loop)
Run:
bash <skill-dir>/scripts/validate-api-trigger-plan.sh .clix/api-trigger-plan.json
This validator checks:
- valid JSON
campaign_idpresentdynamic_filter_keysis ≤ 3 and snake_casepropertieskeys are snake_case and have valid types- example values match declared types
targetsentries specify exactly one ofproject_user_idordevice_id
6) Verify (Clix + end-to-end)
Minimum verification:
- Campaign is API-Triggered and
campaign_idmatches. - If using dynamic audience filters, the
trigger.*keys exist in the API call and match audience rules exactly. - Trigger once with a known-good payload; confirm delivery + inspect Message Logs for rendering errors.
See references/debugging.md.
Progressive Disclosure
- Level 1: This
SKILL.md(always loaded) - Level 2:
references/(load when implementing details) - Level 3:
examples/(load when copy/pasting backend code) - Level 4:
scripts/(execute directly; do not load into context)
References
references/api-contract.mdreferences/console-setup.mdreferences/backend-patterns.mdreferences/security-and-keys.mdreferences/personalization-and-dynamic-filters.mdreferences/debugging.md
Score
Total Score
Based on repository quality metrics
SKILL.mdファイルが含まれている
ライセンスが設定されている
100文字以上の説明がある
GitHub Stars 100以上
1ヶ月以内に更新
10回以上フォークされている
オープンIssueが50未満
プログラミング言語が設定されている
1つ以上のタグが設定されている
Reviews
Reviews coming soon
