Missing primary HTML in a GAM ZIP
Reviewed October 6, 2026 · Synthetic 160 × 600 example
This example contains styles.css but no HTML document. It cannot provide a primary HTML entry point.
Smallest correction
Add the creative's actual index.html, including its dimensions and click handler. A renamed empty file does not repair a creative. The fixed example places its HTML and CSS together at the ZIP root.
Broken: Fixed:
styles.css index.html
styles.css
A delivery ZIP that contains other ZIPs is not the same as an individual creative bundle. Inspect its contents before upload. A single wrapping folder is not the defect demonstrated here; Google documents referenced subfolders, and folder depth alone does not prove the cause of a generic upload error.
Download and compare
Each link downloads one creative ZIP. Upload that downloaded file directly to the validator; do not wrap it in another ZIP. Extract a copy only to inspect or edit its source.
These examples contain no client assets, vendor scripts or tracking pixels. The corrected banner's click opens Creative Validator's methodology page.
What has been verified
Automated local validation with the GAM profile reports STATIC-NO-INDEX for the broken ZIP. The corrected ZIP clears that finding and passes the completed static checks. These examples are generated from fixed source and checked byte-for-byte in the test suite.
GAM upload acceptance is unverified. The examples have not been uploaded to a Google Ad Manager account. A validator pass does not explain an unrelated generic rejection.
Check the destination platform
Upload the corrected individual bundle in the intended account. If accepted, check dimensions, rendering and the configured click destination in the available preview and serving environment. If rejected, preserve the exact error, ZIP and creative identifiers for support.
The GAM API error reference names PRIMARY_HTML_MISSING. This is an API classification, not a promise about the wording or cause of a UI error. Also consult Google's HTML5 guidelines.
GAM upload troubleshooting and support evidence
More worked examples
A click handler that bypasses clickTag · A missing asset inside an HTML5 ZIP