> For the complete documentation index, see [llms.txt](https://mango-5m.gitbook.io/mango5m-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mango-5m.gitbook.io/mango5m-docs/resources/mango-achievements/features/hidden-awards.md).

# Hidden Awards

Secrets your players genuinely cannot spoil.

```lua
{
    id     = 'kifflom',
    name   = 'Kifflom!',
    description = 'Find the Epsilon Program.',
    hidden = true,
}
```

A hidden award shows as `???` in the menu with a padlock, until it is earned.

## Genuinely hidden

`config/achievements.lua` is loaded **server-side only**. Each player is sent a definition list in which a hidden award they have not earned carries only its id, category and point value — the name, description, icon, goal, prerequisites and reward are withheld entirely.

{% hint style="success" %}
A player who reads every file the resource sends their game still learns nothing about it. Earning it re-sends the list with that entry revealed.
{% endhint %}

The id itself must be sent, because progress rows are keyed on it. Everything that would spoil the award is not.

## They still count

Hidden awards count toward the totals at the top of the menu, so the completion percentage never lies about how much is left.

## Unlocking one

Hidden awards are usually driven from your own scripts:

```lua
if atTheRightPlace then
    exports['mango_achievements']:UnlockAchievement(source, 'kifflom')
end
```
