> ## 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.

# Getting Started with Achievements

> Design, scope, and launch achievements with community-scope defaults and self-healing

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**.

<Steps>
  <Step title="Basic info" icon="align-left">
    Title, description, icon/badge image. Form ships with a loader to prevent double-submit (#939) and ergonomic fixes for common error flows (#2239).
  </Step>

  <Step title="Scope — defaults to community" icon="users">
    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](/admin-guide/rewards/advanced-features#cross-community-rewards).
  </Step>

  <Step title="Criteria" icon="scale-balanced">
    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.
  </Step>

  <Step title="Rewards" icon="gift">
    Attach points, XP, a badge, or any other reward. Achievements can carry their own reward distribution — see [Designing Achievements](/admin-guide/achievements/designing-achievements).
  </Step>

  <Step title="Save" icon="save">
    Achievements appear in the list immediately (#1897 fixed the "saved but doesn't appear" bug). Duplicate names show a toast warning (#734).
  </Step>
</Steps>

***

## 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.

<Tip>
  When you archive a challenge, audit its linked achievements. Re-point the event criteria or archive the achievement too.
</Tip>

***

## 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

<AccordionGroup>
  <Accordion title="Join achievement" icon="door-open">
    Criteria: `member_joined` event, count 1. Reward: welcome badge + 100 points.
  </Accordion>

  <Accordion title="Streak master" icon="fire">
    Criteria: `check_in_streak >= 7`. Reward: fire badge + XP boost.
  </Accordion>

  <Accordion title="Power user" icon="bolt">
    Criteria: `challenge_completed count >= 50`. Reward: Gold badge + spotlight reward.
  </Accordion>

  <Accordion title="Custom event milestone" icon="gear">
    Use the free-text custom event identifier. Example: event `purchase_completed` fired from your Shopify webhook; criteria `count >= 3 within 90d`. Reward: VIP badge.
  </Accordion>
</AccordionGroup>

***

## Next steps

<CardGroup cols={2}>
  <Card title="Designing achievements" icon="pen-ruler" href="/admin-guide/achievements/designing-achievements">
    Criteria builder, event types, multi-language, form patterns.
  </Card>

  <Card title="Achievements as actions" icon="key" href="/admin-guide/achievements/achievements-as-actions">
    Gate challenges behind earned achievements.
  </Card>

  <Card title="Reviewing submissions" icon="eye" href="/admin-guide/achievements/reviewing-submissions">
    Manual-approval achievement flow.
  </Card>

  <Card title="Playbook" icon="book" href="/admin-guide/achievements/playbook">
    Strategy for tiered progression systems.
  </Card>
</CardGroup>
