Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.nudj.cx/llms.txt

Use this file to discover all available pages before exploring further.

A good achievement turns noisy behaviour into a clear milestone members can see and aspire to. The builder has three parts: criteria (what triggers it), reward (what members get), and scope (who can earn it).

Criteria

Pick the event type + threshold. Events fall into three groups:

Built-in events

EventFires when
challenge_completedMember completes a challenge
reward_earnedMember earns any reward
check_in_completedDaily check-in action
streak_milestoneStreak hits a configured length
level_reachedMember hits an XP level
member_joinedMember joins the community

Custom events

Use the free-text custom event identifier (#2144) to match events you fire via the Integration API. Example: purchase_completed, livestream_attended, survey_submitted.

Thresholds

Stack conditions:
  • count >= N
  • within Xd (rolling window)
  • Filter by tag, category, or other event attributes.

Reward distribution

Attach rewards that distribute when the achievement unlocks:
  • Points, XP (instant addition to balance)
  • Badge (shown on profile)
  • Asset reward (adds to wallet)
  • Entry reward (adds entries to a pending giveaway)
Multiple rewards per achievement are supported — a single unlock can grant a badge plus 500 points plus 3 entries.

Achievements as actions

The Complete-Achievement action (#729) inverts the relationship: a challenge requires members to have already unlocked an achievement before it can be started. This gates progression — useful for multi-stage programs like tutorials or certification paths. See Achievements as Actions.

Tiered achievements

Design a series of escalating milestones:
Bronze -> Silver -> Gold -> Platinum
 5 done    20 done   50 done   100 done
Implementation:
  1. Create four achievements, each with identical criteria shape but different thresholds.
  2. Link Silver -> Bronze via a Complete-Achievement action in the next challenge (or on the achievement’s own gating rules).
  3. Members unlock them sequentially as they accumulate.

Multi-language support

Achievements inherit your community’s language config. Edit translations per locale; the achievement’s title, description, and badge alt-text all translate. The language-switch bug in the achievement module was fixed in #845 — you can safely toggle between locales in the editor without losing your draft. See Language Management.

Scope decisions

Community-scoped

Default. Only counts events inside that community. Good for community-specific milestones (“Top 5 contributors in the Paris region”).

Org-scoped

Counts events across every community in the org. Good for brand-wide milestones (“100 total check-ins across all our stores”).
Scope is set at creation and immutable afterwards. Re-create the achievement if you need to change scope.

Best practices

Start with 3-5 achievements for a new community. More than that and members can’t hold the full picture in their head.
Pair each achievement with a visible reward (badge + points + something spendable). Achievements without visible rewards feel hollow.
Achievements with thresholds that take months to hit (e.g. count >= 1000) look like broken progress bars. Use tiered achievements instead so every 10-20% of progress unlocks something.