Skip to content
This repository was archived by the owner on Mar 18, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .claude/settings.local.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@
"Bash(git -C /Volumes/data/git/fuww/about.fashionunited.com commit -m \"$(cat <<''EOF''\nFix pnpm version conflict in GitHub Actions\n\nRemoved explicit version numbers from pnpm/action-setup@v4 to allow\nit to automatically read the version from packageManager field in\npackage.json (10.15.0), avoiding version conflicts.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>\nEOF\n)\")",
"Bash(git -C /Volumes/data/git/fuww/about.fashionunited.com push)",
"Bash(git -C /Volumes/data/git/fuww/about.fashionunited.com add .npmrc Dockerfile)",
"Bash(git -C /Volumes/data/git/fuww/about.fashionunited.com commit -m \"$(cat <<''EOF''\nEnable build scripts via .npmrc configuration\n\nAdded .npmrc with enable-pre-post-scripts=true to allow Sharp and\nother dependencies to run their build scripts during installation.\nThis eliminates the need for explicit pnpm rebuild commands and\nresolves the \"Ignored build scripts\" warning.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>\nEOF\n)\")"
"Bash(git -C /Volumes/data/git/fuww/about.fashionunited.com commit -m \"$(cat <<''EOF''\nEnable build scripts via .npmrc configuration\n\nAdded .npmrc with enable-pre-post-scripts=true to allow Sharp and\nother dependencies to run their build scripts during installation.\nThis eliminates the need for explicit pnpm rebuild commands and\nresolves the \"Ignored build scripts\" warning.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>\nEOF\n)\")",
"Bash(python3:*)"
],
"deny": [],
"ask": []
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/claude-dispatch.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ jobs:
mode: 'remote-agent'

# Optional: Specify an API key, otherwise we'll use your Claude account automatically
# anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
# anthropic_api_key: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Commented-out config pairs anthropic_api_key param with OAuth token secret

The commented-out line # anthropic_api_key: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }} is semantically incorrect. The anthropic_api_key parameter expects an Anthropic API key, but CLAUDE_CODE_OAUTH_TOKEN is an OAuth token (as correctly used in .github/workflows/claude.yml:37 and .github/workflows/claude-code-review.yml with the claude_code_oauth_token parameter). If a developer uncomments this line, authentication will fail because an OAuth token is being passed as an API key. The original secrets.ANTHROPIC_API_KEY was the correct secret for this parameter name.

Suggested change
# anthropic_api_key: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
# claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Use OAuth input instead of anthropic_api_key

The commented auth example now maps secrets.CLAUDE_CODE_OAUTH_TOKEN into anthropic_api_key, which is inconsistent with the rest of this repo (.github/workflows/claude.yml and .github/workflows/claude-code-review.yml both pass this secret via claude_code_oauth_token). If someone enables this optional line in claude-dispatch.yml, they will likely provide an OAuth token through the wrong input and hit authentication failures when the dispatch workflow runs.

Useful? React with 👍 / 👎.


# Optional: Specify model (defaults to Claude Sonnet 4, uncomment for Claude Opus 4)
# model: "claude-opus-4-20250514"
Expand Down
31 changes: 24 additions & 7 deletions astro.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,33 @@ export default defineConfig({
{
label: 'Jobs',
items: [
{ label: 'Dashboard Access', link: '/docs/jobs/dashboard-access/' },
{ label: 'Posting a Job', link: '/docs/dashboard-jobs/posting-a-job/' },
{ label: 'Managing Applications', link: '/docs/dashboard-jobs/managing-applications/' },
{ label: 'Job Analytics', link: '/docs/dashboard-jobs/job-analytics/' },
{ label: 'Job Layout', link: '/docs/jobs/job-layout/' },
{ label: 'Employer Page', link: '/docs/jobs/employer-page/' },
{ label: 'Manual Job Posting', link: '/docs/jobs/manual-posting/' },
],
},
{
label: 'Premium Employer',
items: [
{ label: 'Overview', link: '/docs/jobs/premium-employer/' },
{ label: 'News Membership', link: '/docs/jobs/premium-employer/news-membership/' },
{ label: 'Premium Header Image', link: '/docs/jobs/premium-employer/premium-header/' },
{ label: 'Job Template', link: '/docs/jobs/premium-employer/job-template/' },
{ label: 'Employer Branding Page', link: '/docs/jobs/premium-employer/employer-branding-page/' },
],
},
{
label: 'Integration',
items: [
{ label: 'Integrations Overview', link: '/docs/jobs/integrations-overview/' },
{ label: 'Job Feed Inbound (JSON/XML)', link: '/docs/jobs/' },
{ label: 'Job Scraper', link: '/docs/jobs/job-scraper/' },
{ label: 'Job Feed Outbound', link: '/docs/jobs/outbound-feed/' },
{ label: 'Job Embedder', link: '/docs/fashionunited-for-websites/' },
],
},
{
Expand Down Expand Up @@ -84,13 +108,6 @@ export default defineConfig({
{ label: 'Editorial Style Guide', link: '/docs/editorial-style-guide/' },
],
},
{
label: 'Integration',
items: [
{ label: 'FashionUnited for Websites', link: '/docs/fashionunited-for-websites/' },
{ label: 'Jobs Feed (JSON/XML)', link: '/docs/jobs/' },
],
},
{
label: 'Brand Assets',
items: [
Expand Down
3 changes: 3 additions & 0 deletions src/content/docs/docs/dashboard-jobs/posting-a-job/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -158,3 +158,6 @@ You can view the version history of a job to see what changes were made over tim
- [Manage applicants who apply to your jobs](/docs/dashboard-jobs/managing-applications/)
- [Track how your jobs are performing](/docs/dashboard-jobs/job-analytics/)
- [Edit your company profile](/docs/company-profile/editing-your-profile/)
- [Job Layout](/docs/jobs/job-layout/) -- Logo and image requirements for job postings
- [Manual Job Posting](/docs/jobs/manual-posting/) -- Submit jobs via email to Customer Service
- [Integrations Overview](/docs/jobs/integrations-overview/) -- Automate job posting via ATS feed or scraper
4 changes: 4 additions & 0 deletions src/content/docs/docs/fashionunited-for-websites/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ Fashionunited for Websites is a suite of embeddable widgets, buttons, and
client-side scripting tools to integrate Fashionunited and display jobs on your
website or JavaScript application, including Embedded Jobs.

This is ideal for companies who do not have their own career page or do not have an ATS system. Jobs that are manually posted on FashionUnited automatically go live on your website as well. Via the Dashboard you are able to manage the jobs (publish, unpublish, repost, and edit). FashionUnited serves as "the source" -- the connection between our job board and your website.

The Customer Service team can create the embed code for you ([jobs@fashionunited.com](mailto:jobs@fashionunited.com)). For an overview of all integration options, see [Integrations Overview](/docs/jobs/integrations-overview/).

## Embedded Job Accordion

(Embed jobs on your site, loaded from our API)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ If you cannot see a feature described in this guide, your account may not have t

Now that you know your way around the dashboard:

- [Set up Dashboard access](/docs/jobs/dashboard-access/) if you haven't already
- [Post your first job](/docs/dashboard-jobs/posting-a-job/)
- [Review applicants](/docs/dashboard-jobs/managing-applications/)
- [Check job performance](/docs/dashboard-jobs/job-analytics/)
Expand Down
2 changes: 2 additions & 0 deletions src/content/docs/docs/header/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,5 @@ requirements:

Higher resolution or bigger image size is always better in this case. Also, we
can always downsize to the specified dimensions.

See also: [Premium Header Image](/docs/jobs/premium-employer/premium-header/) for premium employer banner images, and [Job Layout](/docs/jobs/job-layout/) for job posting image requirements.
25 changes: 25 additions & 0 deletions src/content/docs/docs/jobs/dashboard-access/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
---
title: Dashboard Access
description: "How to create a FashionUnited Dashboard login to manage jobs, candidates, statistics, and credits."
---

To submit and manage your jobs, candidate data (if applicable), access statistics and credit status, you can create a login for the FashionUnited Dashboard.

## Getting started

1. Go to [dashboard.fashionunited.com](https://dashboard.fashionunited.com) and create an account
2. Check your email inbox and verify your email address
3. Contact [jobs@fashionunited.com](mailto:jobs@fashionunited.com) and ask to have your account linked to your company profile (provide the email address you are logged in with)
4. Once your account is linked you can access and manage your data in the Dashboard

## What you can do in the Dashboard

Once your account is linked to a company profile, you can:

- [Post and manage jobs](/docs/dashboard-jobs/posting-a-job/)
- [Review and manage applications](/docs/dashboard-jobs/managing-applications/)
- [View job analytics](/docs/dashboard-jobs/job-analytics/)
- [Manage credits and billing](/docs/billing/credits-and-billing/)
- [Edit your company profile](/docs/company-profile/editing-your-profile/)

For a full tour of the Dashboard interface, see the [Dashboard Overview](/docs/getting-started/dashboard-overview/).
24 changes: 24 additions & 0 deletions src/content/docs/docs/jobs/employer-page/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
---
title: Employer Page
description: "Your company's employer page on FashionUnited -- setup, content, and how to update it."
---

Every company or brand publishing jobs on FashionUnited has their own employer page. An Employer Page is a basic page, also known as a "Work at" or "dedicated" page. It contains a preset banner image, the company or brand logo, company description, and job overview.

## Initial setup

We will set up the page using the logo from your first job posting and will add a company description (taken from either the job description or your own website).

## Updating your employer page

Logo and description can be changed by contacting [jobs@fashionunited.com](mailto:jobs@fashionunited.com). Send the link to your employer page along with the information you want updated.

### What you can provide

- **Logo** -- Your logo as SVG (or PNG) file. See the [Logo requirements](/docs/logo/) for specifications.
- **Company description** -- A short description of your company (who are you)?
- **Translations** -- When posting jobs internationally, the company description can be displayed in different languages (per country a job is published on).

## Premium employer page

For a fully customised employer page with additional tabs, custom banner images, and highlighted job listings, see [Employer Branding Page](/docs/jobs/premium-employer/employer-branding-page/).
28 changes: 24 additions & 4 deletions src/content/docs/docs/jobs/index.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
---
title: "Posting jobs, feed integration via JSON or XML"
title: "Job Feed Inbound (JSON/XML)"
author: Joost van der Laan
---

# Introduction

FashionUnited’s feed service provides a full suite of real-time, highly
available Jobboard transactions. This service opens the door to FashionUnited’s
infrastructure and enables you to execute a wide variety of jobboard
transactions empowering you to control your content at FashionUnited.

To be able to set up a feed we need a so-called XML URL. You can share this with the Customer Service team via [jobs@fashionunited.com](mailto:jobs@fashionunited.com). In this link all of your jobs should be found. Sometimes the link also contains jobs of several clients. The link can also be called RSS, JSON or API link/URL.

To keep things simple, we also accept existing feeds you might have created for
other jobboards, like:

Expand All @@ -21,7 +21,27 @@ other jobboards, like:

Therefore, as long as you make sure all the jobs you want posted on the
FashionUnited platform are in your JSON or XML feed, we make sure they are shown
on the FashionUnited platform.
on the FashionUnited platform. Also some providers give clients the ability to share a link with us in which all jobs they have open currently are visible.

The feed refreshes once per day during the week and syncs the content of the feed with what is displayed on the FashionUnited job board.

For an overview of all integration options, see [Integrations Overview](/docs/jobs/integrations-overview/). To send your FashionUnited jobs to your own website instead, see [Job Feed Outbound](/docs/jobs/outbound-feed/).

## Mandatory fields

The following fields are required in your feed:

- **Unique job ID** (`externalId`) -- unique identifier in your system
- **Job title** (`title`) -- only the title, no location etc.
- **Job category** (`category`) -- one of: "Design & Creative", "Internships", "Other", "Product & Supply Chain", "Retail Management & In-store", "Sales & Marketing"
- **Teaser text** (`qualifications`) -- short description for the job list
- **Vacancy text** (`description`) -- full job description
- **City** (`city`) -- an address can also be sent in an `address` field
- **Country** (`country`)
- **Company name** (`company`)
- **Apply URL** -- unique per job ID

## Supported locales

As of now we provide jobboard services for the following countries:

Expand Down
34 changes: 34 additions & 0 deletions src/content/docs/docs/jobs/integrations-overview/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
---
title: Integrations Overview
description: "How to connect your Applicant Tracking System (ATS) to FashionUnited for automated job posting."
---

An ATS (Applicant Tracking System) is a system which clients use to track the status of candidates who apply via their own career page. Posting positions via an ATS system gives you the ability to manage candidates that apply for positions -- including when the job is posted on FashionUnited, since we will most likely use an external application link which leads to your website and application form.

Various companies provide Applicant Tracking System software. These systems give you the ability to post open positions on your own career page and on external websites such as Indeed, LinkedIn, and FashionUnited.

## Checking your ATS connection

When you see "FashionUnited" as an external page you can select in your ATS system, we either already have a running connection, or are able to set it up. When in doubt, reach out to [jobs@fashionunited.com](mailto:jobs@fashionunited.com) and the Customer Service team will check if there already is a connection or if we need to set it up.

## Inbound integration methods (client to FashionUnited)

There are two ways to get your jobs from your system onto FashionUnited automatically:

| Method | Best for | Details |
|--------|----------|---------|
| **Job Feed** | Companies with an ATS that can produce an XML, JSON, or RSS feed | [Job Feed Inbound](/docs/jobs/) |
| **Job Scraper** | Companies without an ATS or whose ATS charges setup fees for new channels | [Job Scraper](/docs/jobs/job-scraper/) |

## Outbound integration methods (FashionUnited to client)

There are two ways to display your FashionUnited-hosted jobs on your own website:

| Method | Best for | Details |
|--------|----------|---------|
| **Job Feed Outbound** | Companies that can consume an XML feed on their end | [Job Feed Outbound](/docs/jobs/outbound-feed/) |
| **Job Embedder** | Companies without a career page or without an ATS | [Job Embedder](/docs/fashionunited-for-websites/) |

## Manual posting

If you do not have an ATS or prefer to post jobs manually, see [Manual Job Posting](/docs/jobs/manual-posting/).
30 changes: 30 additions & 0 deletions src/content/docs/docs/jobs/job-layout/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
---
title: Job Layout
description: "Job posting layouts, logo and image requirements for publishing jobs on FashionUnited."
---

Jobs on FashionUnited can be published in different layouts. For your first job posting (via the Dashboard or via the Customer Service Team), you can submit your logo and an image.

## Logo

Your logo as SVG (or PNG) file. SVG is recommended for the best quality across all devices. See the [Logo requirements](/docs/logo/) page for detailed specifications.

## Image

Submit 1 image showcasing your brand. Think of showing part of your collection, the office, the team -- a motive which gives potential candidates a good first impression.

### Image requirements

- Landscape format
- 970 px wide minimum
- High resolution

For header image specifications, see [Header Image Requirements](/docs/header/).

## Full HTML job layout

For more advanced branding options, including custom HTML styling, CSS, fonts, media embeds, and templates, see the [Job Feed Inbound](/docs/jobs/) documentation.

## Premium job templates

As a [Premium Employer](/docs/jobs/premium-employer/), you can receive a custom [job template](/docs/jobs/premium-employer/job-template/) with up to 3 images and a video.
29 changes: 29 additions & 0 deletions src/content/docs/docs/jobs/job-scraper/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
---
title: Job Scraper
description: "How FashionUnited can mirror jobs from your career page using a scraper tool."
---

You might have jobs on your own website but do not have an ATS system, or your ATS provider charges a setup fee (and possibly annual fees) when you request to add FashionUnited as an option in your system.

FashionUnited can build a scraper tool in this case. The scraper "copies" jobs that are currently live on your career page. Jobs that are no longer there when the scraper checks the page will go offline on our job board. A scraper basically "mirrors" the jobs on your page on our page.

## Setup

To set up a scraper, share the link to your career page with the Customer Service team via [jobs@fashionunited.com](mailto:jobs@fashionunited.com).

## How it works

- The scraper refreshes once per day during the week
- It syncs the content of your career page with what is displayed on the FashionUnited job board
- Jobs that are removed from your career page are automatically unpublished from FashionUnited

## Limitations

- Not all career pages are set up in a way that a scraper tool will work
- If you make any changes to the structure of your website or career page, the scraper may stop working
- Contact [jobs@fashionunited.com](mailto:jobs@fashionunited.com) if you experience any issues after making website changes

## Alternatives

- If you have an ATS that can produce a feed, consider using a [Job Feed](/docs/jobs/) instead for more reliable integration
- For a full overview of integration options, see [Integrations Overview](/docs/jobs/integrations-overview/)
42 changes: 42 additions & 0 deletions src/content/docs/docs/jobs/manual-posting/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
---
title: Manual Job Posting
description: "Two ways to manually publish jobs on FashionUnited: via the Dashboard or via Customer Service."
---

There are two different ways to manually publish jobs on FashionUnited.

## Submit via Dashboard

You can use the Dashboard to submit your jobs. You can either submit a new job (**Post a Job**) or duplicate an existing position from the job list. See [Posting a Job](/docs/dashboard-jobs/posting-a-job/) for a step-by-step guide.

- **No product linked:** When you do not have a product linked to your account or company, the Customer Service team will handle your request and might be in touch with you in case of questions before confirming the publication of the job.
- **Product linked:** When there is a product already linked to your account or company, you are able to publish the job immediately yourself via the Dashboard. The Customer Service team will still review the job and confirm it has been published. In some cases the team will make updates to the job before it gets published.

## Submit via Customer Service

You can submit your job posting request by contacting the Customer Service team via [jobs@fashionunited.com](mailto:jobs@fashionunited.com).

### What to include in your email

- **Job description** -- Attached as a Word document (preferred) or a direct link to the job description on your website (not a link to a general career page)
- **One job per email** -- We post 1 job per function and location
- Example: Assistant Store Manager & Store Manager = 2 positions = 2 jobs
- Example: Mini job / Trainee = 2 positions = 2 jobs
- **Job title + location** -- If not clear in the job description
- **Logo and image** -- If this is your first job posting, we need your [logo and an image](/docs/jobs/job-layout/). Make sure logo and image are sent as separate files (not embedded in a Word document or PDF)
- **Application method** -- Explain if you want:
- An external apply link (if yes, include that link)
- An apply button (specify which email address applications should be sent to)

### What happens next

The team will check the CRM system:

1. If this is your first time (or the first time in years), the team will onboard you
2. If there is a product linked to your account, the team will proceed with publishing accordingly
3. If you are doing single job postings, the team will proceed with publishing accordingly
4. In case of questions, the team will be in touch with you

## Automated posting

For automated job posting via feed integration or scraper, see [Integrations Overview](/docs/jobs/integrations-overview/).
Loading
Loading