docs
Getting Started
Tutorials
How-To Guides
Explanation
Reference
Help
Getting Started
Tutorials
How-To Guides
Explanation
Reference
Help

Build and Upload a Google Ads Playable

Google Ads calls this file an HTML5/Playable asset. App campaigns use a ZIP file.

Generated output

Needle creates dist/GoogleAds/playable.zip. The ZIP includes orientation data and the Google Exit API integration.

Requirements

  • A Google Ads account
  • A live iOS or Android app
  • An App campaign for installs
  • App conversion tracking
  • HTML5 upload access

1. Add the profile

playableAds: {
    name: "MyGame",
    platforms: [{
        platform: "google-ads",
        maxBytes: 5_000_000,
        reportPath: "artifacts/google-ads-playable-build-report.json",
        orientation: "portrait,landscape",
    }],
}

Set orientation to portrait, landscape, or portrait,landscape.

See Build Playable Ads for the complete Vite configuration.

2. Build the ZIP file

npm run build -- --production

Read the current Google App campaign specification.

Google applies these limits:

  • Maximum ZIP size: 5 MB
  • Maximum file count: 512
  • Layout: responsive
  • Game resources: local
  • Audio start: after interaction
  • Local storage: not permitted

Exit API

Needle includes Google's hosted exitapi.js. NeedlePlayableAd.open() calls ExitApi.exit().

Google reads the final store URL from the campaign.

3. Validate the ZIP file

  1. Open the Google HTML5 Validator.
  2. Select For App Campaigns.
  3. Upload dist/GoogleAds/playable.zip.
  4. Fix each applicable error.
  5. Build the ZIP again.
  6. Repeat the validation.

4. Add the ZIP to a campaign

  1. Create or open an App campaign for installs.
  2. Open the ad or asset editor.
  3. Find the HTML asset.
  4. Select + Add.
  5. Upload dist/GoogleAds/playable.zip.
  6. Test each configured orientation.
  7. Add the required text, image, and video assets.
  8. Save the campaign.
  9. Submit the campaign for review.

In Google Ads Editor, select Manage → Ads → App ads for installs → HTML5 → + Add.

Test on a device

Use the campaign preview for the host test.

Use a temporary HTTPS address for an additional iOS and Android test. This test covers touch, layout, audio, and performance.

The browser test does not test the Google Ads host API.

Test with an agent

Use the public HTML5 Validator. Record its complete report.

The upload control opens a native file chooser in some browsers. Handle the file chooser before the test continues.

Use an authenticated account only for an authorized draft. Do not publish a campaign or change its spend without permission.

Troubleshooting

ErrorAction
ZIP is too largeReduce the size below 5 MB. Keep free space below the limit.
Orientation rejectedSet a supported orientation value. Build the ZIP again.
CTA is missingBuild the Google Ads profile. Call NeedlePlayableAd.open().
External file rejectedStore game files in the ZIP. Keep only Google libraries that the specification permits.

Read Google HTML5 upload troubleshooting for more validator errors.

Related pages

  • Test Playable Ads
  • Playable Ad Build Profiles
Suggest changes
Last Updated: 8/4/26, 2:47 PM

Extras

Needle AI Ask Needle AI
Copy Markdown

Navigation

  • Getting Started
  • Tutorials
  • How-To Guides
  • Explanation
  • Reference
  • Help

Extras

Needle AI Ask Needle AI
Copy Markdown