My Website 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.
| 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.


Top comments (2)
good stuff, hisashi. the t.co substring match misclassifying chatgpt.com as X is worth the read alone. referrer strings from chat products are flakier than anyone admits.
keeping the first-visit source on the signup row is the right call. last-click would never have surfaced this, with two thirds of chat signups arriving referrer-less. and the "what i can't tell you" section is honest, correlation on signups isn't a clean causal claim.
have you compared signup quality between the chat cohort and the search one, or is 30 days too short a window to say anything real yet?
The landing-URL point is the one I'd underline for anyone copying this. If two thirds of ChatGPT sign-ups arrive with no referrer but 98% carry utm_source=chatgpt.com, a referrer-only dashboard shows roughly a third of the real channel, and the rest quietly inflates "direct".
One question the data could answer: where do the ChatGPT visitors land? If it's mostly blog articles with the key-points box and FAQ JSON-LD, that's the change doing the work. If it's job postings or the home page, it's more likely ChatGPT recommending the site by name. Those call for different next steps.
Also nice that the numbers are recounted from raw landing URLs instead of trusting the old admin screen.