Customer portal

Assets

Upload static files, reference them in pages and safely remove unused assets.

Upload files in Customer portal → Assets or with upload_portal_asset through MCP. Each upload returns an immutable path such as /_portal/assets/<uuid>. Use that relative path in your HTML so the same page works on the business's built-in address and custom domains.

Supported files

Each asset can be at most 2 MiB. Supported types are:

FileMIME type
PNGimage/png
JPEGimage/jpeg
GIFimage/gif
WebPimage/webp
AVIFimage/avif
WOFF / WOFF2font/woff / font/woff2
PDF downloadapplication/pdf

PDFs are served as downloads. HTML, JavaScript, CSS and SVG uploads are not supported. Put scripts, styles and SVG markup inline in the HTML document. Uploading a replacement file creates a new asset ID and path; existing bytes are not overwritten.

MCP uploads take canonical base64 bytes without a data-URI prefix, a filename and the matching content type. Filenames are limited to 200 characters and use ASCII letters, numbers, dots, underscores, spaces or hyphens, starting with a letter or number. The backend validates both the declared type and file signature.

Page references

Copy the asset's path into your page, for example:

<img
  src="/_portal/assets/00000000-0000-4000-8000-000000000001"
  alt="Our logo"
/>

Replace the example UUID with the uploaded asset's actual ID.

The dashboard editor automatically attaches assets whose literal paths occur in the HTML. If JavaScript constructs a path dynamically, use the editor's manual Attach control. Through MCP, always include every used asset ID in the page's assetIds array; the backend does not infer this array from HTML. A page accepts up to 100 asset IDs, all belonging to the same business.

Prefer literal paths: previews rewrite those references to authorized preview asset URLs. Dynamically assembled paths are not rewritten, even when attached, and may fail for assets that are not yet public.

Visibility and deletion

Uploads are stored privately. An asset becomes publicly accessible when a published page in that business includes it in its asset manifest. A valid preview can access assets in that draft's manifest. Simply uploading a file or saving a draft does not make it public.

Assets cannot be deleted while any draft or published page references them. To retire an asset:

  1. Remove its path and any manual attachment from every relevant draft. Save those drafts, or update their assetIds arrays through MCP.
  2. Publish the updated pages, or unpublish/delete the pages that no longer need to be live. Saving drafts alone retains the old published asset references.
  3. Delete the now-unused asset from Assets or with delete_portal_asset.

If another published page still references an asset, its public URL remains available. Disabling the portal blocks new customer asset requests but cannot revoke files already downloaded.

On this page