Key Distribution
The Keys Distribution feature hands out game keys, such as Steam keys, to members of your project. You add a batch of keys and a list of the people who should get one. BetaHub gives each matching member one key and shows you who has which key.
Keys Distribution is an experimental feature, available on all plans. You set it up in the BetaHub web app. It has no API, and a connected coding agent cannot set it up for you.
When to Use
- You run a closed playtest and need to send each tester a Steam (or other store) key.
- You know who should get a key by their Discord account or email address.
Prerequisites
- The Developer role on the project, or organization Admin.
- The people who get keys must be members of the project. See Joining Projects for how testers join.
Enabling Keys Distribution
- Open Settings → General → Experimental Features.
- Check Keys Distribution.
- Click Save Changes.
The project sidebar then shows Keys Distribution to Developers and Product Keys to every member.
How It Works
Keys live in a key collection. A collection holds keys for one platform and a list of the people who may receive one. While the collection is Distributing, BetaHub gives one key to each project member who matches an entry on that list.
The setup has four steps: create a collection, add keys, list who should get a key, and start distributing.
Create a Collection
Open Keys Distribution and click New Key Collection:
- Collection name — internal name. If you leave it blank, BetaHub uses the current date and time.
- Platform — Steam, Epic Games Store, GOG, Origin, or Other. Testers see the platform name and redemption steps for it.
- Public title — optional. Testers do not see this field.
- Public description — optional. Testers see it on the key’s details page. For the Other platform, put your redemption steps here.
Click Create Collection. A new collection starts as Draft, which hands out nothing.
Add Keys
On the collection page, paste your keys into the Add Keys box, one per line, and click Add Keys. Spaces around a key and empty lines are ignored. A key that is already in the collection is skipped. You can add more keys at any time.
List Who Should Get a Key
In the Add Potential Users box, pick an identifier type, paste one identifier per line, and click Add Potential Users. To use more than one type, add each type separately.
| Identifier type | Matches |
|---|---|
| Discord Username | The username of the Discord account the member connected to BetaHub |
| Email Address | The email address of the member’s BetaHub account |
| Discord ID | The numeric user ID of the Discord account the member connected to BetaHub |
Matching is exact, including letter case. Type email addresses in lowercase: BetaHub stores account emails that way, so an entry with capital letters never matches.
You can list people before they join the project. They get a key once they are members.
Start Distributing
Open Change State and choose Distributing. Project members who match the list get their key right away, except those who still have to accept the project’s NDA.
When a Member Receives a Key
While a collection is Distributing, a member who matches its list receives a key when:
- you start distributing,
- they become a member of the project (by joining, accepting an invitation, or being added by you),
- they open the project page,
- you add them to the list, or
- they accept the project’s NDA, if they had to.
Each member gets at most one key per collection. A member who matches several collections gets one key from each.
When a collection has no Available keys left, matching members get nothing, and BetaHub does not alert you. After you add keys, those members get one the next time they open the project page.
Minimum Device
You can limit a collection to testers whose hardware meets a minimum. Click Set Minimum Device, choose a device type (PC, Mac, Mobile, Console, Virtual Headset, or Other), and fill in the specs.
A member then gets a key only if the device they selected for this project:
- is the same device type, and
- has the same or better CPU, GPU, and memory, and, on Windows, the same or a newer Windows version. A spec that is missing on either side is not compared.
Members who have not selected a device for the project see a card on the project page asking them to pick one and click Set device. A member whose device is below the minimum gets no key and no message.
You can change the minimum device later, but not remove it.
Collection States
| State | What happens |
|---|---|
| Draft | The starting state. No keys are handed out. |
| Distributing | Matching members receive keys. |
| Void | No more keys are handed out. Keys already given out stay with their holders, who still see them. A void collection cannot be edited or switched back. |
Switching from Distributing back to Draft pauses distribution. Keys already given out stay with their holders.
Who Got Which Key
The collection page shows counts of total, assigned, and available keys, and of potential and matching users. Below them:
- The keys table lists every key with its status (Available, Assigned, or Void), Assigned To, the assignment time, and Seen By User.
- The potential users table lists every entry with its Matching User in the project and whether that member Has Key.
Seen By User turns to Yes when the member opens their keys in BetaHub. The email they receive already contains the key, so No does not mean they have not seen it.
Managing Keys
Actions on a key:
- Unassign — takes the key from its holder and makes it available again. If that member is still on the list, they get a key again the next time they open the project page.
- Void Key — marks the key unusable and takes it from its holder. It is never handed out again. Use it for a key that was redeemed elsewhere or leaked. If the holder is still on the list, they get another key the next time they open the project page.
- Delete — removes the key from the collection.
Actions on a list entry:
- Remove — deletes the entry. You cannot remove an entry once the matched member has opened their key. Removing an entry does not take back a key already handed out.
Delete Collection deletes the collection with all its keys and its list. Members no longer see those keys in BetaHub.
Unassigning, voiding, or deleting a key in BetaHub does not deactivate it on the platform: the member already received it by email. To revoke a key, use the platform’s own tools.
What Testers See
When a member receives a key, they get:
- An email with the key and a link to redemption steps. It is sent even if they turned off email notifications.
- An in-app notification.
- A card on the project page with Claim Your Key, shown until they open their keys.
- The key in Product Keys in the project sidebar, with a copy button. Details shows redemption steps for Steam, Epic Games Store, GOG, and Origin, and the collection’s Public description.
When a Distributing collection lists Discord usernames or IDs, members who have not connected Discord see a card on the project page with Connect Discord Account.
Keys and NDA
Keys wait for the NDA. A member who still has to accept the project’s NDA gets no key, and no email with one, until they accept it. When they accept, they receive a key from each Distributing collection whose list they match, as they would have on joining.
Members who do not have to accept the NDA get their key as described above: the project has no NDA, they accepted the current version, or you released them from the requirement. A member you release gets their key the next time they open the project page.
When a new NDA version asks members to accept again, they keep the keys they hold but get no new one until they accept. You can check who signed on the NDA Management → NDA Status page.
Permissions
- Developers and organization Admins manage collections, keys, and lists.
- A custom role with the View game key collections scope can open the collection pages read-only, keys included. The Keys Distribution sidebar link is shown only to Developers, so give members with such a role the page’s link.
- Every other member sees only their own keys.
Troubleshooting
If a member on the list did not get a key, check that:
- Keys Distribution is still enabled for the project. With it off, no keys are handed out.
- The collection is Distributing.
- The person is a member of the project.
- They have accepted the project’s NDA, if they have to.
- Their identifier matches exactly: email in lowercase, or Discord connected to their BetaHub account.
- The collection has Available keys.
- Their device meets the minimum device, if one is set.
Then ask them to open the project page.
See Also
- NDA Management – Non-disclosure agreements for testers
- Joining Projects – How to access test projects
- Project Settings – Configure project options
- Custom Roles – Fine-grained permissions with custom roles