# Announcing The New Go Store
18 Jul 2019
Summary: **October 1, 2019, Update:** _The Go Store is currently offline._ _We are sorry for any inconvenience._ _We will update this post with any status changes._

Cassandra Salisbury

##

**October 1, 2019, Update:** _The Go Store is currently offline._
_We are sorry for any inconvenience._
_We will update this post with any status changes._

We are excited to launch the new Go official swag and merch store, shipping worldwide.
We are even more excited to announce that **100% of the proceeds** from the Go store go directly to GoBridge.
[GoBridge](https://github.com/gobridge/about-us) is a non-profit organization focused on building bridges to educate underrepresented groups by teaching technical skills and fostering diversity in the Go community.

.image store/gophers.jpg

At the **Go store** you’ll find our beloved gopher plushies and vinyls as well as new merchandise.
Visit the store for 20% off with code **Gopher20** through Sunday, July 21st at 11:59 PM PST.

We plan on adding stock to current items and bringing on new ones to the store.
If we are out of stock when you go to place an order, check back again soon.
Follow the [Twitter account](https://twitter.com/golang) for updates, we plan on adding new goodies for all our Go fans out there, so keep an eye out!

Happy shopping!
