Hisashi Space

September 26, 2026 · 4 min read

Traffic from ChatGPT now brings a quarter of our sign-ups. How we track it, and what we changed

@SOHO is a freelance marketplace in Japan that I've run since 2004.

Over the last few weeks, more and more of the people signing up have been arriving from ChatGPT. This is the share, week by week, and the list of what we changed on the site, with dates.

Share of @SOHO sign-ups that came from ChatGPT, by week

Share of all sign-ups that came from ChatGPT, by month

Month Share of sign-ups from ChatGPT
April 3.7%
May 10.6%
June 14.5%
July 15.3%
August 13.3%
September (1st to 26th) 24.5%

In the week of September 21 (six days so far), it was 33%. One in three.

Perplexity, Gemini, Copilot and Claude together were 1.4% of sign-ups over the whole period, against 14.6% for ChatGPT. Almost all of it is ChatGPT.

First, we couldn't see it

The counting turned out to be the hard part.

Since April 4, the site has recorded where each member first arrived from. On the first visit it stores the referrer and the landing URL in a cookie, keeps them for 30 days, and writes them to the member's record when they sign up.

Two things went wrong with that.

1. ChatGPT was being counted as X. The code decided the source by checking whether the referrer contained a known domain. chatgpt.com contains the string t.co, which is X's link shortener. So ChatGPT visits were labeled as coming from X. I fixed that on April 18.

2. Most ChatGPT visits have no referrer at all. Of the sign-ups from ChatGPT since April, two thirds arrived with no referrer. What almost all of them did have (98%) was ?utm_source=chatgpt.com on the landing URL, which ChatGPT adds to the links it shows. Our admin screen was deciding the source from the referrer only, so those sign-ups all showed up as "unknown". On August 24 I changed it to check the landing URL's utm_source first.

The landing URL itself had been saved all along, so every number in this post is recounted from the raw records, not from what the admin screen used to show.

If you're checking your own site, look at the landing URL, not only the referrer.

What we changed, in order

March 16 to 28

・Added a sitemap and robots.txt ・Added structured data to every page type: articles, breadcrumbs, FAQs, and job postings ・Added a "key points" summary box at the top of every blog article, with author and FAQ data in JSON-LD ・Connected Bing Webmaster Tools and started sending new URLs through IndexNow ・Opened a FAQ page ・On March 28, allowed AI crawlers by name in robots.txt

The robots.txt section now looks like this:

User-Agent: GPTBot
User-Agent: ChatGPT-User
User-Agent: OAI-SearchBot
User-Agent: ClaudeBot
User-Agent: Claude-SearchBot
User-Agent: Claude-User
User-Agent: PerplexityBot
User-Agent: Google-Extended
Allow: /
Disallow: /_admin/
Disallow: /api/

ChatGPT-User is the one that fetches a page when someone asks ChatGPT a question and it goes to read your site. OAI-SearchBot builds the index for ChatGPT search. GPTBot collects training data. They are three different bots, and blocking one does not block the others.

April 4

Started recording where each member first arrived from (described above).

July 9

・Added a block under every article showing who reviewed it, when it was published and last updated, and a link to the editorial policy ・Published an editorial policy page and a company information page ・Fixed dateModified in the structured data, which had been stuck at the publish date

July 21

Added CollectionPage and ItemList structured data to the directory pages.

September 20

・Put an llms.txt at the root: a short map of the site in plain text, with what each section is for ・For job listings that are no longer open, added only a publish date for machines. Open listings keep the full JobPosting data

Everything in this list is ordinary. None of it is a trick.

Where ChatGPT sends people

This is the part I didn't expect.

In April and May, most of the people ChatGPT sent to us landed on blog articles. From June, they started landing on individual job listings.

Month Landed on a blog article Landed on a job listing Elsewhere
April 80% 0% 20%
May 53% 13% 33%
June 12% 73% 15%
July 33% 57% 10%
August 16% 61% 23%
September 10% 71% 19%

(Share of sign-ups from ChatGPT in each month, by the page they first landed on.)

People are asking ChatGPT for work, and ChatGPT is pointing them at a specific listing. That's closer to a job board's search box than to a search engine sending traffic to an article.

JSON-LD on every page

Every page type on the site carries JSON-LD, and we keep it accurate. Job listings use JobPosting while they are open, with the application deadline and the fact that the work is remote. Once a listing closes, it no longer claims to be an open job. Blog articles carry Article with correct publish and update dates, and FAQPage where the article has questions and answers.

What I can't tell you

I can't tell you which change did it.

Look at the weekly chart. There's no step up the week after any one of these changes. The share rises slowly with a lot of noise, and the last two weeks are the highest so far.

What I can say is that the site was readable for these bots from late March, and that when sign-ups from ChatGPT started, we had already been recording where people came from, so we could go back and count them properly.

Get the next one by email

No schedule, no filler, and real numbers when there are any.

Subscribe

← All writing