diff --git a/contents/handbook/company/merch-store.md b/contents/handbook/company/merch-store.md
index f189d8ad878f..fec22343cf20 100644
--- a/contents/handbook/company/merch-store.md
+++ b/contents/handbook/company/merch-store.md
@@ -4,7 +4,11 @@ sidebar: Handbook
showTitle: true
---
-We have a [merch store](https://merch.posthog.com/) where our community can purchase high quality PostHog-branded merch. Instructions for how to get a merch code to our customers is [below](https://posthog.com/handbook/company/merch-store#customers), however if you need any help just send a message to the #merch channel and somebody from Ops will be happy to help.
+We have a [merch store](/merch) where our community can purchase high quality PostHog-branded merch.
+
+Instructions for how to get a merch code to our customers is [below](https://posthog.com/handbook/company/merch-store#customers), however if you need any help just send a message to the #merch channel and somebody will be happy to help.
+
+Merch codes can also be generated directly from within Zendesk.
## How do we think about merch?
@@ -16,28 +20,26 @@ We care about:
## How do we manufacture merch?
-We use [Printfection](https://app.printfection.com/account/dashboard_merchandise.php) to manufacture and store our merch - request access from the Marketing team if required. Anyone can suggest a product for us to sell or give away.
+We use [Brilliant](https://www.brilliantmade.com/) to manufacture and fulfill our merch. Anyone can suggest a product for us to sell or give away.
-1. The Marketing team ultimately decide on what items we wish to sell or give away (including how many and sizes)
+1. The Words & Pictures team ultimately decide on what items we wish to sell or give away (including how many and sizes)
2. Lottie provide assets to produce and order these items in to stock
## How do we ship merch?
-Shipping is also done through [Printfection](https://app.printfection.com/account/dashboard_merchandise.php) - they can ship to over 200 territories worldwide:
+Shipping is also done through Brilliant - they can ship to over 200 territories worldwide:
-* When orders come in from our Shopify store they will automatically be shipped to the people who order them via Printfection
-* If you want to ship merch for an event or as part of a giveaway, create a one-off [campaign](https://help.printfection.com/hc/en-us/articles/208654107-Collection-campaigns-How-to-collect-review-and-approve-orders-via-external-ordering-or-csv)
+* When orders come in from our Shopify store they will automatically be shipped to the people who order them via Brilliant
+* If you want to ship merch for an event or as part of a giveaway, do this from the Brilliant dashboard.
## How do we sell merch?
-We sell it through our [merch store](https://merch.posthog.com/) store on Shopify - access details are in 1Password.
+We sell it through our [merch store](/merch) store on Shopify - access details are in 1Password.
## How do we give away merch for free?
### Customers
-Create a discount code in [Shopify admin](https://admin.shopify.com/store/posthog/discounts). When creating the discount, select "amount off products" then choose if it is a percentage off or a fixed amount - usually we do fixed amounts of $50 or $100 depending on the purpose. The you can choose "specific collections" and choose "All Products". Limit the use to one use per customer, otherwise it's unlimited free stuff for them, unlimited high cost for us! For code contributions we tend to do $50, with no expiration date.
-
-Alternatively, if you want to send them a specific product via Printfection, you can create a 'New Order' under [this campaign](https://app.printfection.com/account/campaign/manage.php?storeid=304946).
+Create a discount code in Shopify admin. When creating the discount, select "amount off products" then choose if it is a percentage off or a fixed amount - usually we do fixed amounts of $50 or $100 depending on the purpose. The you can choose "specific collections" and choose "All Products". Limit the use to one use per customer, otherwise it's unlimited free stuff for them, unlimited high cost for us! For code contributions we tend to do $50, with no expiration date.
### PostHog team
@@ -49,51 +51,23 @@ As always, we expect you to use this with restraint and with your own good judge
You can find instructions for this on the dedicated [YC Deal page](/handbook/growth/sales/yc-onboarding).
-### Events
-Follow Printfection's instructions on creating a giveaway [campaign](https://help.printfection.com/hc/en-us/articles/208654107-Collection-campaigns-How-to-collect-review-and-approve-orders-via-external-ordering-or-csv) for this.
-
-## How are Prinfection and Shopify connected?
+## How are Brilliant and Shopify connected?
-This uses a custom Shopify app [using these instructions](https://help.printfection.com/hc/en-us/articles/218014268-Integrating-Shopify-Printfection). It leverages product metafields to send product/variant info to Printfection.
-
-[Here's the Printfection collection](https://app.printfection.com/account/campaign/overview.php?storeid=301365) (login requried) linked to our Shopify store where available products can be managed.
+The Website & Vibes team built the integration with Brilliant. It relies on webhooks to check stock levels and sends orders to Brilliant via their API.
## How do I add a new product to Shopify?
-If you have created a new product in Printfection, adding it to Shopify is quite straightforward but a little nuanced - and _very_ important to get right.
-
-### If the product has variants (like sizing, color options):
-
-1. On Printfection in the [Merch store collection](https://app.printfection.com/account/campaign/overview.php?storeid=301365), click _Items_ and make sure the item is added to the campaign.
-1. Once added, click to the details and copy the **Item ID**.
-1. In Shopify, add the product (Products -→ Add product) and add product details
-1. Add the **Item ID** from Printfection to the _SKU (Stock Keeping Unit)_ field in Shopify (under _Inventory_)
-1. Scroll to the bottom and look for _Product metafields_ and _Variant metafields_.
- 1. In _Product subtitle_, add a short description. This will appear on the merch store collection page with the title and price. (The full product description only appears when viewing product details.)
- 1. For _CampaignID_, enter `301365` which is the ID of the Merch store collection campaign ID in Printfection.
-1. If the item has variants (eg: multiple sizes, color options)...
- 1. Add the relevant variant (eg: Size)
- 1. In Printfection, when viewing the item details, look for _Size breakdown_ which will have a list of sizes and a _Size ID_ field for each.
- 1. In Shopify, click into a variant.
- 1. Make sure the SKU is entered same as above
- 1. Scroll to bottom and make sure the CampaignID is set to `301365`
- 1. Copy/paste the `SizeID` from Printfection for the applicable size`
- 1. Set the variant's inventory to match
-1. Make sure the product is set to Active
-
-> **Note:** Because of how PostHog.com is built, product changes will only appear the next time the site is built. (Merging any PR will do this, but will take up to 45 minutes to be live.)
+[Follow these instructions.](/handbook/engineering/posthog-com/merch-store)
## Troubleshooting customer orders
Sometimes customers get in touch with us because their order hasn't arrived. There are a couple of things you can do:
-1. Log into Shopify and [check that an order was actually created for them](https://posthog.myshopify.com/admin/orders?inContextTimeframe=last_30_days). If it was, and it has shown as dispatched, use your judgement to determine whether it is probably lost in the post. Cancel that order and issue them a new gift card for the value of that order so they can place it again.
-2. Sometimes [the Zap connecting Printfection to Shopify fails](https://zapier.com/app/history?status=error%2Chalted%2Cdelayed&end_datetime=2022-12-22&start_datetime=2022-01-01&root_id=146890498), usually because the customer hasn't entered their address details completely (e.g. no postal/zip code). In this case, cancel their order in Shopify and ask them to place it again with full address details.
+1. Check the orders status in Brilliant.
+1. If you don't see the order listed in Brilliant, check Shopify. If the order is listed there, there may have been a problem with transmitting the order from Shopify to Brilliant. Please mention this in the #merch channel immediately so the Website & Vibes team can look into it.
+
+> **Note:** There have been some issues with fulfilling orders to Brazil due to the country's customs policies.
If for some reason their second order attempt doesn't make it through, refund their money and apologetically let them know that unfortunately our supplier is having issues shipping to their address. It's better to stop the back-and-forth at that point, rather than having a frustrated customer placing multiple orders that don't work. We aren't an e-commerce business, so ensuring a flawless merch store experience for a handful of edge case orders is not a priority!
If the customer was given a merch code to thank them for submitting a PR, you can offer to make a donation on their behalf for the equivalent amount to a company of their choice on [Open Collective](https://opencollective.com/search?q=&type=COLLECTIVE) instead.
-
-## Legacy setups
-
-We have integrations with many other providers from Printify to Printful and Gelato. For the most part you can ignore anything that references these as these are legacy settings from previous fulfillment channels that are no longer used.
diff --git a/contents/handbook/engineering/posthog-com/merch-store.mdx b/contents/handbook/engineering/posthog-com/merch-store.mdx
index 61f78f536590..276491766f33 100644
--- a/contents/handbook/engineering/posthog-com/merch-store.mdx
+++ b/contents/handbook/engineering/posthog-com/merch-store.mdx
@@ -2,6 +2,43 @@
title: Merch store development
---
+> [Read this primer](/handbook/company/merch-store) on how our merch store works.
+
+## Adding new products
+
+Products need to be first created in Brilliant, then added to Shopify.
+
+### Create the product in Brilliant
+
+Brilliant handles adding products in inventory. Once the product appears in [inventory](https://app.brilliantmade.com/store/3002/inventory), it needs to be linked to the product in Shopify.
+
+After the product is created, you'll need to find the `variant_id`. If the product has no variants (ie: a sticker), you'll only need to enter one `variant_id` to Shopify. If the product has variants (ie: a t-shirt with sizes like S, M, L, etc.), you'll need to enter one `variant_id` per variant.
+
+To find the `variant_id`, click **Download CSV** from the inventory page.
+
+### Create the product in Shopify
+
+1. Give the product a name
+1. Description appears when the product sidebar is opened
+1. Add photos
+1. Set the product category
+1. Set the product status to **Active**
+1. For sales channels, make sure it's available in **Shop**, **Headless PostHog Merch Store**, and **Shopify GraphQL API**.
+1. Set the price
+1. Uncheck **Track quantity** as this is handled through the Brilliant API.
+1. Under **Metafields**, add a **Product subtitle**. This appears in the index view for the product.
+1. Save the product
+
+### Link the product to Brilliant
+
+1. Reference the CSV downloaded from Brilliant and look for the `variant_id` column.
+ - For single variant products, find the **Variant metafields** section and enter it in the `BrilliantID` field.
+ - For multi-variant products, first create the variants and save the product. Then click into the variant, scroll to the **Metafields** section and enter the `BrilliantID` from the CSV. Do this for each variant, as the `variant_id` will be unique for each variant.
+1. Add the product to the **Home page** collection.
+1. Save the product
+1. Note: the website needs to be rebuilt for the product to appear. Run the `/rebuild-website` command in Slack. The site is typically rebuilt within 20 minutes.
+
+## Running the merch store locally
You'll need to set environment variables to source products from Shopify and build [the merch store](/merch).
```
diff --git a/contents/handbook/growth/sales/yc-onboarding.md b/contents/handbook/growth/sales/yc-onboarding.md
index bc1d2683286c..c4403535b8a3 100644
--- a/contents/handbook/growth/sales/yc-onboarding.md
+++ b/contents/handbook/growth/sales/yc-onboarding.md
@@ -47,7 +47,7 @@ There are three Approve buttons for each row in the table corresponding to the d
* Stripe Customer ID (for Stripe credit)
* Company Name (for Zendesk tagging)
* Domain (for Zendesk tagging)
-* Email (for confirmation and to share Printfection giveaway links)
+* Email (for confirmation and to share Brilliant giveaway links)
If the Stripe Customer ID is set to `unknown` it's because we couldn't automatically find a Stripe subscription for the email they used. You need to populate it yourself or ask the customer to subscribe if they've not yet set up billing. There's a handy *Subscribe Please* button in each table row which will email them asking to subscribe.
@@ -55,7 +55,7 @@ Once you click the correct Approve button the [Zap](https://zapier.com/editor/19
1. Apply the correct credit amount to their Stripe customer object, and also update the plan expiry data metadata
2. Set up their org on Zendesk and tag them as on the startup plan (meaning their tickets will be tagged with Normal priority)
-3. (Current batch only) Generate a Printfection giveaway link
+3. (Current batch only) Generate a Brilliant giveaway link
4. Email the details of the plan and giveaway link to the customer (from Cameron)
### If we need to send giveaways outside of the Zapier automation
@@ -89,7 +89,7 @@ Please do _not_ send Airpods or Timbuk2 outside of the US and Canada - this crea
-
+
@@ -106,10 +106,11 @@ US and Canada addresses only*
To create a one-time giveaway link:
-- [Login to Printfection](https://app.printfection.com/account/secure_login.php)
-- Go to **Campaigns** -> **Giveaways** -> **The PostHog YC Program**.
-- Click the **Get New Link** button and copy the link.
-- Send the link to the YC contact and mark the link as sent in Printfection.
+- Login to Brilliant ([details](/handbook/company/merch-store)).
+- _These instructions need updating._
+- ~~Go to **Campaigns** -> **Giveaways** -> **The PostHog YC Program**.~~
+- ~~Click the **Get New Link** button and copy the link.~~
+- ~~Send the link to the YC contact and mark the link as sent in Printfection.~~
|
diff --git a/contents/handbook/people/onboarding.md b/contents/handbook/people/onboarding.md
index 23b9da4c8d24..499a180db625 100644
--- a/contents/handbook/people/onboarding.md
+++ b/contents/handbook/people/onboarding.md
@@ -111,7 +111,6 @@ We use a number of different tools to organise our work and communicate at PostH
- Slack - we have an internal workspace and a users Slack as well
- Brex (US, RoW) or Revolut (UK, EU) - company cards and expenses tracking
- Shopify - powers our merch store
-- Printfection - merch inventory management, [YC onboarding](/handbook/growth/sales/yc-onboarding) merch, and merch [drop-shipping for small events](https://github.com/PostHog/meta/issues/31)
- CharlieHR - holiday tracking, personal details
- Gusto - payroll and benefits (US)
- Deel - contractor payroll (EU and special arrangements)
@@ -136,6 +135,7 @@ We use a number of different tools to organise our work and communicate at PostH
- Gusto - US payroll and benefits management
- Deel - international payroll and contracts management
- Ashby - recruitment
+- Brilliant - merch inventory management, [YC onboarding](/handbook/growth/sales/yc-onboarding) merch, and merch [drop-shipping for small events](https://github.com/PostHog/meta/issues/31)
## Signatories
diff --git a/src/navs/index.js b/src/navs/index.js
index 69f9f1c9bace..a15f8894d929 100644
--- a/src/navs/index.js
+++ b/src/navs/index.js
@@ -594,6 +594,79 @@ export const handbookSidebar = [
url: '/handbook/company/merch-store',
},
],
+ },{
+ name: 'PostHog.com',
+ url: '',
+ children: [
+ {
+ name: 'Community',
+ url: '',
+ children: [
+ {
+ name: 'Overview',
+ url: '/handbook/community',
+ },
+ {
+ name: 'Answering community questions',
+ url: '/handbook/community/questions',
+ },
+ {
+ name: 'Profiles',
+ url: '/handbook/community/profiles',
+ },
+ ],
+ },
+ {
+ name: 'Designing PostHog.com',
+ url: '/handbook/design/designing-posthog-website',
+ },
+ {
+ name: 'Developing PostHog.com',
+ url: '',
+ children: [
+ {
+ name: 'Developing the website',
+ url: '/handbook/engineering/posthog-com/developing-the-website',
+ },
+ {
+ name: 'How PostHog.com works',
+ url: '/handbook/engineering/posthog-com/how-posthog-website-works',
+ },
+ {
+ name: 'MDX setup',
+ url: '/handbook/engineering/posthog-com/mdx-setup',
+ },
+ {
+ name: 'MDX components',
+ url: '/handbook/engineering/posthog-com/markdown',
+ },
+ {
+ name: 'Uploading assets',
+ url: '/handbook/engineering/posthog-com/assets',
+ },
+ {
+ name: 'Merch store',
+ url: '/handbook/engineering/posthog-com/merch-store',
+ },
+ {
+ name: 'Posting a new job',
+ url: '/handbook/engineering/posthog-com/jobs',
+ },
+ {
+ name: 'Managing small teams',
+ url: '/handbook/engineering/posthog-com/small-teams',
+ },
+ {
+ name: 'Managing the company roadmap',
+ url: '/handbook/engineering/posthog-com/roadmap',
+ },
+ {
+ name: 'Editing API docs',
+ url: '/handbook/engineering/posthog-com/api-docs',
+ },
+ ],
+ },
+ ],
},
{
name: 'Product',
@@ -737,80 +810,6 @@ export const handbookSidebar = [
},
],
},
- {
- name: 'Website & Vibes',
- url: '',
- children: [
- {
- name: 'Community',
- url: '',
- children: [
- {
- name: 'Overview',
- url: '/handbook/community',
- },
- {
- name: 'Answering community questions',
- url: '/handbook/community/questions',
- },
- {
- name: 'Profiles',
- url: '/handbook/community/profiles',
- },
- ],
- },
- {
- name: 'Designing PostHog.com',
- url: '/handbook/design/designing-posthog-website',
- },
- {
- name: 'Developing PostHog.com',
- url: '',
- children: [
- {
- name: 'Developing the website',
- url: '/handbook/engineering/posthog-com/developing-the-website',
- },
- {
- name: 'How PostHog.com works',
- url: '/handbook/engineering/posthog-com/how-posthog-website-works',
- },
- {
- name: 'MDX setup',
- url: '/handbook/engineering/posthog-com/mdx-setup',
- },
- {
- name: 'MDX components',
- url: '/handbook/engineering/posthog-com/markdown',
- },
- {
- name: 'Uploading assets',
- url: '/handbook/engineering/posthog-com/assets',
- },
- {
- name: 'Merch store',
- url: '/handbook/engineering/posthog-com/merch-store',
- },
- {
- name: 'Posting a new job',
- url: '/handbook/engineering/posthog-com/jobs',
- },
- {
- name: 'Managing small teams',
- url: '/handbook/engineering/posthog-com/small-teams',
- },
- {
- name: 'Managing the company roadmap',
- url: '/handbook/engineering/posthog-com/roadmap',
- },
- {
- name: 'Editing API docs',
- url: '/handbook/engineering/posthog-com/api-docs',
- },
- ],
- },
- ],
- },
{
name: 'Words & Pictures',
url: '',