- A rules engine that evaluates conditions against incoming events and participant state. Rules live in ordered rule sets, and conditions use CEL (Common Expression Language). When conditions match, actions fire: credits, debits, holds, tags, counter increments, and more. Logic lives in configuration, not application code.
- A double-entry ledger that records every balance change as a journal entry. Every credit to a participant has a corresponding debit from a source (like a program wallet). Nothing is mutated in place, so you always have a complete audit trail.
How it works
- Your app sends an event (a purchase, a signup, a referral) with whatever data your rules need.
- The engine evaluates every active rule in the program against the event and the participant’s current state.
- When a condition matches, the rule’s actions fire: credit points, debit a balance, set a tag, increment a counter.
- Every balance change is recorded in the ledger as an immutable journal entry.
idempotency_key produces the same result, so retries are always safe.
Your app’s part is step 1. Rules, assets, and the rest of the program are set up in the dashboard, which is built on the same API. Which endpoints you need sorts the two.
Next Steps
Quickstart
Set up a program and process your first event.
Core Concepts
Programs, assets, rules, and the ledger.
Common Patterns
Copy-paste rule recipes for category multipliers, sign-up bonuses, streaks, referrals, and more.