Documentation

In-App Purchasing

Client API

SDK API

In-App Purchasing

Webshop limits reference

Find the structural, naming, media and runtime limits that apply to Unity Webshops.
Read time 5 minutesLast updated 13 hours ago

This page lists limits that apply to Unity Webshops. For the concepts these limits constrain, refer to Introduction to webshops and Themes and branding in webshops.

Structural limits

The following limits apply to how many webshops, environments, and studios you can create.

Object

Limit

Notes

Webshops per Unity Cloud project1Creating a second webshop for the same project returns a conflict response.
Environments per webshop25Includes the production environment.
Publishing environmentProduction onlyNon-production environments are draft-only; use Apply to production to copy a non-production draft into production.
Studio scopeOne per Unity organizationSet on first webshop creation. You can rename it from Organization settings, but you can't transfer it between organizations.

Naming rules

The following rules apply to the studio name, slug, and other identifiers you set.

Field

Rule

Studio name
^[a-z0-9][a-z0-9-]{1,62}[a-z0-9]$
(3–64 characters; lowercase letters, digits, and hyphens; cannot start or end with a hyphen). Globally unique across Unity.
Slug
^[a-z0-9][a-z0-9-]{1,62}[a-z0-9]$
(3–64 characters; lowercase letters, digits, and hyphens; cannot start or end with a hyphen). Unique within a studio.
Display name1–255 characters.
Deep link
scheme
Up to 31 characters (34 with a trailing
://
), pattern
^[a-z][a-z0-9+.\-]{0,30}(?:://)?$
(must start with a lowercase letter; lowercase letters, digits,
+
,
.
, and
-
only). The webshop rejects the values
javascript
,
data
,
vbscript
,
file
,
blob
, and
about
.
Deep link
successPath
Up to 512 characters.

Media limits

The Unity Dashboard supports the following image upload types for webshops:
  • Hero banners: Displayed to players in the webshop.
  • Thumbnails: Displayed to players in the webshop.
  • Screenshots: Used as reference inputs for AI theme generation and not displayed in the webshop.
All image upload types support PNG, JPEG, and WebP formats. The Unity Dashboard re-encodes each upload before storing it.

Upload

Purpose

Max file size

Files per request

Notes

Hero bannerDisplayed at the top of the shop5 MB1The Dashboard re-encodes it to a 1920 × 384 px (5:1) WebP. Upload at this aspect ratio or wider to avoid cropping.
ThumbnailUsed in link previews and link cards1 MB1The Dashboard re-encodes it to a 48 × 48 px (square) WebP.
ScreenshotReference for AI theme generation2 MB per fileUp to 6 per requestNot shown in the shop; used only as additional input to the theme generator. A single upload request can carry up to 10 MB in total across all screenshots.

Runtime limits

The following limits apply to live traffic and API calls.

Value

Limit

Notes

Dashboard preview-link token72 hours from issuance.The signed token in a Dev preview URL (
?token=
). Generate a fresh link for each review cycle.
SDK draft-preview linkAbout 1 hour from issuance.The short-lived draft URL returned by the storefront-link endpoint when your game resolves a draft. The SDK re-resolves it on each launch, so the short lifetime is invisible to players.
Player session tokenShort-lived, single-use.The restricted Player Auth token the game mints (with
GenerateRestrictedTokenAsync
) and appends as
sessionToken
to open the shop. Your game sets its lifetime and single-use properties today; a future Unity SDK method will manage them. The shop exchanges it once, in the browser, for a player session. Refer to Integrate a webshop into a Unity game.
Player ID token1 hour, refreshed automatically.The webshop refreshes the player's ID token shortly before it expires, so players don't reauthenticate mid-session.
Player sessionNo fixed expiry.A player session stays valid until the server revokes it. The webshop persists it in the browser —
localStorage
on the live shop,
sessionStorage
on the Dashboard preview path — scoped to the project and environment.
Admin API rate limit40 requests per second per source IP.Applies to every internal API call (dashboard requests, Service Account programmatic calls). Bursty automation that exceeds the limit gets
429 Too Many Requests
.
Player catalog request rate limit600 requests per minute per (player, project, environment) and a per-IP backstop of 20 requests per second and 300 requests per minute.Applies to the player frontend's runtime catalog fetches. The two limits stack so a single misbehaving player can't exhaust an IP's allowance.
Player shell trafficNot rate-limited by the service.The shop's HTML shell and media are served from the content delivery network and never hit the Dashboard service.

Access and visibility

A webshop serves uploaded media and Dev preview links as public web content — the same way a content delivery network serves any static asset. Anyone with the URL can open them without signing in. The URLs use unguessable identifiers and aren't linked from the shop, so they aren't easy to discover, but they aren't access-controlled either. Keep that in mind when you choose what to upload and who to share a preview link with.

Resource

Who can access it

Notes

Dev preview URLAnyone with the link, until the token expiresThe webshop serves the preview at a
/_preview/{publisher}/game/{slug}
path and authorizes it with a signed, time-limited token in the URL (the
token
query parameter). The render uses an anonymous session, so there's no sign-in or per-user check — the token is the only thing protecting the link. Anyone you share it with can view the draft until the token expires (72 hours). Generate a fresh link for each review cycle.
Uploaded media (hero banner, thumbnail, screenshots)Anyone with the URLMedia you upload is re-encoded to WebP and stored as public objects in a cloud storage bucket served through the content delivery network at your shop's
_media/
path (for example,
https://shop.unity.com/_media/{projectId}/branding/logo.webp
). There's no per-request authentication, and the objects are cached publicly. Branding files use fixed names and screenshots use content-hashed names, so the project ID in the path is the only unguessable part — anyone with a URL can open the file. Treat uploaded media as publicly visible.

AI theme generation

The following values apply to AI theme generation.

Detail

Current value

Model used to generate themesA large language model (subject to change as better models become available).
Source for generation inputAn Apple App Store listing URL that you provide, screenshots that you upload, or both. The Dashboard scrapes a provided listing for its icon, screenshots, and color palette.
Theme generation rate limitRate-limited per project as an abuse safeguard. The limit is set well above normal interactive use — generating and refining themes as fast as the Dashboard allows doesn't reach it — so it only trips on runaway automation. Requests that exceed it return
429 Too Many Requests
.
Theme generation budgetA per-project daily and weekly spending cap on theme generation. When a project reaches its cap, further generation is blocked until the window resets. The cap is tracked per project and isn't reset by deleting and recreating a webshop.
For the user-facing procedure that uses this generator, refer to Generate a webshop theme with AI.