# Bulk Award a badge to a set of users

**URL:** https://meta.discourse.org/t/bulk-award-a-badge-to-a-set-of-users/138694
**Category:** Announcements
**Tags:** badges, new-feature
**Created:** [January 15, 2020, 3:39pm UTC](https://meta.discourse.org/t/bulk-award-a-badge-to-a-set-of-users/138694 "2020-01-15T15:39:19Z")
**Posts on this page:** 20
**Page:** 1

<div class="post-metadata">

### Author: ![Roman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/roman/32/157504_2.png) [@Roman](https://meta.discourse.org/u/Roman)
#### Post date: [January 15, 2020, 3:39pm UTC](https://meta.discourse.org/t/bulk-award-a-badge-to-a-set-of-users/138694/1 "2020-01-15T15:39:19Z")

</div>

Badges are an excellent way to acknowledge someone who is doing a good job. Discourse now allows awarding a badge to a set of users.

If you go to the badges section in the admin panel, you’ll notice that a new button called “Bulk Award” is now available next to the “new” button:

![Screen Shot 2020-01-15 at 11.34.31](https://global.discourse-cdn.com/meta/optimized/3X/f/f/ff548793e1486a72dae130c4d088f4f907fe0cc9_2_690x59.png)

After clicking it, you’ll be prompted to select a badge and get started:

 ![Screen Shot 2020-01-15 at 11.34.43](https://global.discourse-cdn.com/meta/original/3X/2/c/2cd21d2cd2162767807a5c05b6186517c559ad4e.png)

Select the badge you want to award and upload a CSV file containing a list of user emails or usernames (one per line)

 ![image](https://global.discourse-cdn.com/meta/original/4X/b/8/c/b8cb0bb69bbbcc62dede6c178cba46f6fa5cfb0a.png)

Then you’ll be prompted with this message:

 ![Screen Shot 2020-01-15 at 11.39.25](https://global.discourse-cdn.com/meta/original/3X/4/4/4450592eeb14f8e903f0030400b13f3f9d0e490b.png)

Discourse will find matching users, award them the badge, and send them a notification.

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [January 15, 2020, 4:45pm UTC](https://meta.discourse.org/t/bulk-award-a-badge-to-a-set-of-users/138694/2 "2020-01-15T16:45:28Z")

</div>

This is cool.

> [@Roman](#):
>
> Discourse now allows awarding a badge to a group of users.

I propose changing this language to “awarding a badge to a _set_ of users”, as _group_ has a specific meaning in Discourse and a bunch of random email addresses in a CSV isn’t it 😉.

---

<div class="post-metadata">

### Author: ![ondrej](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ondrej/32/198804_2.png) [@ondrej](https://meta.discourse.org/u/ondrej)
#### Post date: [January 15, 2020, 4:51pm UTC](https://meta.discourse.org/t/bulk-award-a-badge-to-a-set-of-users/138694/3 "2020-01-15T16:51:34Z")

</div>

Very nice, This will be useful 🙂

---

<div class="post-metadata">

### Author: ![markwilkin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/markwilkin/32/133810_2.png) [@markwilkin](https://meta.discourse.org/u/markwilkin)
#### Post date: [January 16, 2020, 11:08am UTC](https://meta.discourse.org/t/bulk-award-a-badge-to-a-set-of-users/138694/4 "2020-01-16T11:08:19Z")

</div>

Awww Yiss, that’s very handy. Thanks 🙂.

---

<div class="post-metadata">

### Author: ![Mark\_Walkom](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/mark_walkom/32/77411_2.png) [@Mark\_Walkom](https://meta.discourse.org/u/Mark_Walkom)
#### Post date: [January 19, 2020, 1:54am UTC](https://meta.discourse.org/t/bulk-award-a-badge-to-a-set-of-users/138694/5 "2020-01-19T01:54:18Z")

</div>

This is great, thanks for the feature 🙂

---

<div class="post-metadata">

### Author: ![Anatolia](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/anatolia/32/133777_2.png) [@Anatolia](https://meta.discourse.org/u/Anatolia)
#### Post date: [January 21, 2020, 11:50pm UTC](https://meta.discourse.org/t/bulk-award-a-badge-to-a-set-of-users/138694/6 "2020-01-21T23:50:45Z")

</div>

Selecting them from a user list could be easier if possible. Good feature anyway.

---

<div class="post-metadata">

### Author: ![ondrej](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ondrej/32/198804_2.png) [@ondrej](https://meta.discourse.org/u/ondrej)
#### Post date: [January 22, 2020, 7:37am UTC](https://meta.discourse.org/t/bulk-award-a-badge-to-a-set-of-users/138694/7 "2020-01-22T07:37:32Z")

</div>

Yes that’s my ideal idea. 😁

Just press on users you want to award too.

---

<div class="post-metadata">

### Author: ![Mittineague](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/mittineague/32/114259_2.png) [@Mittineague](https://meta.discourse.org/u/Mittineague)
#### Post date: [January 22, 2020, 8:40am UTC](https://meta.discourse.org/t/bulk-award-a-badge-to-a-set-of-users/138694/8 "2020-01-22T08:40:10Z")

</div>

> [@Roman](#):
>
> one per line, separated by a comma

Sorry, but I’m not 100% clear on this. Terminology I’m familiar with is:

enclosure, delimiter (the separator) and terminator

enclosure is often quotation marks  
delimiter is often a comma  
terminator is often a newline

eg.

```plaintext
"1", "Bob", "rkelly@gmail.com", "CA" 
"2", "Carol", "counselor@hotmail.com", "CA" 
"2", "Ted", "tman@yahoo.com", "FL" 

```

I doubt you mean

```plaintext
rkelly@gmail.com 
, 
counselor@hotmail.com 
, 
tman@yahoo.com 

```

---

<div class="post-metadata">

### Author: ![Roman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/roman/32/157504_2.png) [@Roman](https://meta.discourse.org/u/Roman)
#### Post date: [January 22, 2020, 2:38pm UTC](https://meta.discourse.org/t/bulk-award-a-badge-to-a-set-of-users/138694/9 "2020-01-22T14:38:54Z")

</div>

What I meant was:

```plaintext
rkelly@gmail.com,
counselor@hotmail.com, 
tman@yahoo.com

```

I edited the post.

---

<div class="post-metadata">

### Author: ![Helios](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/helios/32/169714_2.png) [@Helios](https://meta.discourse.org/u/Helios)
#### Post date: [February 12, 2020, 10:53pm UTC](https://meta.discourse.org/t/bulk-award-a-badge-to-a-set-of-users/138694/10 "2020-02-12T22:53:03Z")

</div>

When bulk-adding users to a group, the system expects a list of user names. When bulk-adding users to a badge, the system expects a .csv file with e-mail addresses.

Personally I prefer the list of usernames, as it’s a lot easier to get those from the forums without jumping through admin-y hoops, and I’ve got some Excel tricks that can spit out a copy-and-pastable list. I used to bulk-assign badges by bulk-adding a list to a temporary group, then changing the badge query to assign to that whole group. When ‘award a badge to a set of users’ popped up I’d hoped to cut out a step…

Is there any way to make the list-of-users method a valid alternative way to bulk-assign badges?

---

<div class="post-metadata">

### Author: ![zogstrip](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/zogstrip/32/512781_2.png) [@zogstrip](https://meta.discourse.org/u/zogstrip)
#### Post date: [February 14, 2020, 9:36am UTC](https://meta.discourse.org/t/bulk-award-a-badge-to-a-set-of-users/138694/11 "2020-02-14T09:36:32Z")

</div>

> [@Helios](#):
>
> When bulk-adding users to a group, the system expects a list of user names. When bulk-adding users to a badge, the system expects a .csv file with e-mail addresses.

I agree we should be supporting both.

If the first item in the list has an “`@`”, then import by email, otherwise, import by username.

Also, we could be a little more lenient when it comes to the format of that list.

We could just require the emails/usernames to be on their own line and then do a `split("\n")`, remove any empty lines, remove any trailing “`,`” and remove any pair of single/double quotes (eg. `gsub(/^['"]|['"]$/, "")`).

---

<div class="post-metadata">

### Author: ![pacharanero](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pacharanero/32/500583_2.png) [@pacharanero](https://meta.discourse.org/u/pacharanero)
#### Post date: [February 14, 2020, 10:59am UTC](https://meta.discourse.org/t/bulk-award-a-badge-to-a-set-of-users/138694/15 "2020-02-14T10:59:08Z")

</div>

I know it’s hard and starts to risk mission-creep, but I wonder if over time the admin UI could aim towards more consistency across _all_ Admin bulk operations? For example when:

1. Awarding Badges in bulk: **Select badge** then **upload a CSV** of users’ **email addresses**

2. Adding users to a Group in bulk: **Select group** then **paste** a list of **usernames or emails** , one per line

3. Inviting users to Discourse in bulk: **Upload a CSV** containing users’ **email addresses** (optionally specifying groups(s) to add them to and the initial post to show them)

Clearly these have areas of commonality but also areas of definite disparity where they are _not_ doing the same thing. So how easy it is to work towards a consistent UI paradigm for all Admin bulk actions, I don’t know. But I thought I’d raise the issue here since it is being discussed.

Of all three variants, I’d say the nicest at the moment is the Bulk Add To Group ‘Paste a list of usernames or emails, one per line’.

Quite often I want to Invite several users (say 5-10) and the one-by-one invite method is a bit irritatingly slow, but the CSV invite method is a bit faffy and requires me to fire up another program, or edit CSV manually. Even if the CSV upload was kept for the really BIG bulk invites, it would be great to have an Invite Users dialog like the Bulk Add To Group one. Of course it could only accept email addresses, one per line, but this would be fine.

---

<div class="post-metadata">

### Author: ![Roman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/roman/32/157504_2.png) [@Roman](https://meta.discourse.org/u/Roman)
#### Post date: [February 21, 2020, 8:05pm UTC](https://meta.discourse.org/t/bulk-award-a-badge-to-a-set-of-users/138694/16 "2020-02-21T20:05:34Z")

</div>

Thanks everyone for the feedback! 🙂

We added username support here:

[https://review.discourse.org/t/feature-support-uploading-a-csv-with-either-user-emails-or-usernames-8971/9183](https://review.discourse.org/t/feature-support-uploading-a-csv-with-either-user-emails-or-usernames-8971/9183)

---

<div class="post-metadata">

### Author: ![Helios](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/helios/32/169714_2.png) [@Helios](https://meta.discourse.org/u/Helios)
#### Post date: [February 22, 2020, 1:27pm UTC](https://meta.discourse.org/t/bulk-award-a-badge-to-a-set-of-users/138694/19 "2020-02-22T13:27:34Z")

</div>

> [@Roman](#):
>
> We added username support here

Though still not as simply as pasting a list of usernames into a box, that’s a great step forward from needing e-mails! Are there any plans to unify the bulk handling of adding users to groups or badges? I’m not a programmer, but that sounds like re-usable code to me 🙂

---

<div class="post-metadata">

### Author: ![E.D](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/e.d/32/154885_2.png) [@E.D](https://meta.discourse.org/u/E.D)
#### Post date: [March 11, 2021, 1:53pm UTC](https://meta.discourse.org/t/bulk-award-a-badge-to-a-set-of-users/138694/20 "2021-03-11T13:53:53Z")

</div>

Is it possible to award users a badge multiple times using this? It seems to not be supported according to my own tests.

Awarding a badge in bulk to a list of users doesn’t grant the ones that already had the badge a second time.

---

<div class="post-metadata">

### Author: ![simon](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/simon/32/339122_2.png) [@simon](https://meta.discourse.org/u/simon)
#### Post date: [March 11, 2021, 7:07pm UTC](https://meta.discourse.org/t/bulk-award-a-badge-to-a-set-of-users/138694/21 "2021-03-11T19:07:16Z")

</div>

> [@E.D](#):
>
> Awarding a badge in bulk to a list of users doesn’t grant the ones that already had the badge a second time.

If the badge’s “Can be granted multiple times” checkbox is checked (found in the bottom section of the badge admin page), you should be able to award the badge multiple times in this way.

---

<div class="post-metadata">

### Author: ![E.D](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/e.d/32/154885_2.png) [@E.D](https://meta.discourse.org/u/E.D)
#### Post date: [March 11, 2021, 7:24pm UTC](https://meta.discourse.org/t/bulk-award-a-badge-to-a-set-of-users/138694/22 "2021-03-11T19:24:07Z")

</div>

I have it enabled, but with a CSV import (even only a list of usernames of people that already have the badge) it does not grant it again. I have to manually grant the badge to the user before it shows up as being granted multiple times.

---

<div class="post-metadata">

### Author: ![Kyle\_Pollock](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/kyle_pollock/32/262774_2.png) [@Kyle\_Pollock](https://meta.discourse.org/u/Kyle_Pollock)
#### Post date: [July 21, 2022, 10:13pm UTC](https://meta.discourse.org/t/bulk-award-a-badge-to-a-set-of-users/138694/23 "2022-07-21T22:13:05Z")

</div>

Can you award a badge to just one or two people manually rather than upload a CSV?

For some reason the “enthusiast” which is log-in for 10 consecutive days is not working for someone who has logged in for 12 consecutive days.

---

<div class="post-metadata">

### Author: ![JammyDodger](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jammydodger/32/254611_2.png) [@JammyDodger](https://meta.discourse.org/u/JammyDodger)
#### Post date: [July 22, 2022, 7:36am UTC](https://meta.discourse.org/t/bulk-award-a-badge-to-a-set-of-users/138694/24 "2022-07-22T07:36:21Z")

</div>

I think that badge is pretty reliable, but sometimes the difference between timezones and UTC can make it appear otherwise.

I don’t think you can manually grant that badge currently, but creating a csv with the username(s) in only takes a second or two. I’ve just had a run through using Google sheets on my phone, and it was really quick. 👍

---

<div class="post-metadata">

### Author: ![per\_coh](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/per_coh/32/271009_2.png) [@per\_coh](https://meta.discourse.org/u/per_coh)
#### Post date: [June 27, 2023, 7:43am UTC](https://meta.discourse.org/t/bulk-award-a-badge-to-a-set-of-users/138694/27 "2023-06-27T07:43:06Z")

</div>

> [@Roman](#):
>
> What I meant was:
> 
> ```plaintext
> rkelly@gmail.com,
> counselor@hotmail.com, 
> tman@yahoo.com
> 
> ```

Just highlighting this post, because it wasn’t very clear from the OP how to format the csv correctly.

[Next page](https://meta.discourse.org/t/bulk-award-a-badge-to-a-set-of-users/138694.md?page=2)
