Between July 25 and September 1, Google sent me the same email six times. Same subject line every time: Action needed: your AdSense application result. Same polite paragraph saying a few things needed fixing before my site could be approved. Six applications, six rejections, roughly one a week.
Here's the embarrassing part: for the first five, I barely changed anything. I'd read the email, decide it was vague, assume the reviewer hadn't looked properly, and hit resubmit. I was treating a rejection like a coin flip. It is not a coin flip. If you submit the same site, you get the same answer, and you can burn six weeks learning that.
When I finally sat down and read one properly instead of skimming it, there was a line near the bottom I'd been scrolling past every single time:
Issues like low content volume or low content quality are common reasons for non-approval, and they're easy to fix.
That's not vague. That's the answer, printed in the email, six times. I just didn't want it to be about my content, because my content was the part I thought was fine.
Hatch & Build had one page. On that page: a header, two short paragraphs about me, a card
linking to my Instagram, a live drawing wall, and four cards linking to my four apps. That's
it. No other pages existed. I typed /about into the address bar and got a 404.
Same for /privacy. Same for everything.
In my head this was a website. In Google's terms it's a link page โ a site whose main purpose is sending you somewhere else. And Google is explicit that it doesn't approve those. Not as a punishment, but because the deal being offered makes no sense: advertisers pay to reach people reading something, and nobody reads a signpost. There was no page on my site where a visitor would spend ninety seconds. Where exactly was the ad supposed to go?
Once I framed it that way, the six rejections stopped feeling arbitrary and started feeling obvious. I'd built a business card and asked to be paid like a magazine.
The four project cards โ genuinely the most substantial text on the site โ weren't in the HTML at all. They were fetched from my server by JavaScript after the page loaded, and only then drawn onto the screen. In a browser it looks instant, so I never thought about it.
But a crawler doesn't have to run your JavaScript, and you don't get to assume it will. There was a real chance the reviewer's crawler saw a nearly empty page with a heading and two paragraphs. I'd hidden my best content behind a loading step and never noticed, because I only ever looked at the site the way a human looks at it.
The fix: write the cards into the HTML as plain markup, and let the JavaScript replace them with live data if and when it loads. Visitors see exactly what they saw before. Crawlers now see the text without doing any work. This is the single change I'd make first if I were starting over.
AdSense requires a privacy policy. I didn't have one, which is bad enough on its own. What made it worse is that my home page has a Live Wall where any visitor can post a message, a drawing, or a photo, publicly, in real time.
I'd built a feature that takes content from the public and displays it to the public, and I had written down nothing about it. Not how long it's kept. Not that it's visible to everyone immediately. Not how to ask me to take something down. I'd have told any of that to someone who emailed to ask โ but "I would have answered if asked" isn't a privacy policy. Writing the page took an hour, and honestly the useful part wasn't satisfying Google. It was being forced to answer questions about my own feature that I'd never actually answered.
No navigation, no about page, no contact page, no blog, no sitemap, no robots.txt. Every single link on the site pointed off the site. A visitor's only two options were leave, or draw something. There was no version of my site where a person moved from one page to another, because there was only one page.
In one afternoon: an about page, a privacy policy, a contact page, this build log with real posts in it, a sitemap and robots.txt, navigation at the top and links in the footer, and the project cards moved into the HTML.
None of that is clever. It's the boring furniture of a normal website, and I'd skipped all of it because I was building a link page and didn't know I was building a link page.
Not approved. I'm writing this the same day I made the changes, and I'm deliberately not resubmitting immediately โ the new pages need to exist long enough to be crawled, and one afternoon of writing is a thin blog. The plan is to keep publishing for a few weeks and apply again when there's genuinely something here to read.
If it gets rejected a seventh time, that'll be its own post. I'd rather write that one than pretend this ended neatly.
The thing I keep coming back to: I was annoyed at Google for six weeks for correctly describing my website. It really was thin. The email was right and I was the one not reading it.
More build-log posts as things break โ follow along on Instagram or in the build log.