Skip to main content
Achievements are milestones members unlock by accumulating specific actions over time. They’re separate from challenges (which are discrete, repeatable units) — achievements are passive accumulators.

Creating an achievement

Top nav -> + New -> Achievement.

Basic info

Title, description, icon/badge image. Form ships with a loader to prevent double-submit (#939) and ergonomic fixes for common error flows (#2239).

Scope — defaults to community

New achievements default to the current community’s scope (#2151). Change to org-level if the achievement should unlock across every community in the org. See Cross-community scope.

Criteria

Pick the event that unlocks this achievement:
  • Built-in events — challenge completed, reward earned, check-in, streak milestone, etc.
  • Free-text custom event identifier (#2144) — for events you fire via the API.
Add thresholds: count >= 10, within 30d, etc.

Rewards

Attach points, XP, a badge, or any other reward. Achievements can carry their own reward distribution — see Designing Achievements.

Save

Achievements appear in the list immediately (#1897 fixed the “saved but doesn’t appear” bug). Duplicate names show a toast warning (#734).

Self-healing for dangling achievements

Nudj’s achievement processor (#2111) self-heals when it finds an achievement with a deleted source (e.g. the challenge that fires the event was archived). Rather than crashing, the processor logs and skips — you’ll see these in BetterStack logs if anything’s wrong.
When you archive a challenge, audit its linked achievements. Re-point the event criteria or archive the achievement too.

Listing & managing

The achievement list uses sticky columns (#782) for the key fields (title, status, scope, reward). Filter by status, scope, or tag. Sort is persisted.

Common patterns

Criteria: member_joined event, count 1. Reward: welcome badge + 100 points.
Criteria: check_in_streak >= 7. Reward: fire badge + XP boost.
Criteria: challenge_completed count >= 50. Reward: Gold badge + spotlight reward.
Use the free-text custom event identifier. Example: event purchase_completed fired from your Shopify webhook; criteria count >= 3 within 90d. Reward: VIP badge.

Next steps

Designing achievements

Criteria builder, event types, multi-language, form patterns.

Achievements as actions

Gate challenges behind earned achievements.

Reviewing submissions

Manual-approval achievement flow.

Playbook

Strategy for tiered progression systems.