# Prepare a Static Website Package

Private Beta
Landing Page Delivery is currently available as a private beta. Contact your Treasure AI account representative for access.

A Landing Page package is a ZIP archive of static assets that your browser extracts and uploads to Treasure AI Engage Studio. Preparing the package before creating a draft helps you verify that its pages and assets work at the destination URL. Use this task when you are providing a static website for a marketer to publish through Landing Pages.

## Prepare Static Assets Outside Engage Studio

Landing Page Delivery hosts a completed static website package; it does not build or edit the website for you. Build and test the site outside Engage Studio before uploading it, then package the allowed static files in a ZIP archive.

Use relative asset paths so that CSS, JavaScript, images, and fonts can load at the published URL. A local path that begins with `/` points to the custom domain root rather than the current Landing Page slug, so it can load the root page's asset or fail to load the intended file. External `https://` URLs are allowed. See [Local Asset Paths](/products/marketing-cloud/engage-studio/landing-pages/specifications-and-troubleshooting#local-asset-paths) for examples. The ZIP-root `index.html` serves the landing page's top URL, and each subdirectory URL that should serve a default page needs its own `index.html`. A directory URL without a matching `index.html` returns `404 Not Found`.

## Pull an Existing Landing Page

Use `tdx engage landing-page pull` to download an existing Landing Page before editing or repackaging it.

`pull` always retrieves the Landing Page configuration as `tdx.json` and `landing-page.yaml`. For a published page, it also reads the current published upload attempt's `webAssets` manifest and downloads every file in that manifest from the page's public URL, including files that are not referenced by HTML or CSS. For a draft or content-less page, it creates a configuration-only project with an empty `site/` directory; it does not retrieve a draft upload attempt or draft site files.

`pull` does not execute JavaScript, crawl navigation links or iframes, or retrieve historical versions. A published page with an invalid or unavailable published manifest fails rather than silently replacing the local site with a configuration-only project.

```bash
# Preview a pull without changing local files
tdx engage landing-page pull "Spring Launch" --workspace "Marketing Team" --dry-run

# Replace the project directory after confirmation
tdx engage landing-page pull "Spring Launch" --workspace "Marketing Team"

# Replace a chosen directory without confirmation
tdx engage landing-page pull "Spring Launch" --workspace "Marketing Team" --dir ./spring-launch --yes
```

Pull replaces the destination project directory, so files that are not in the pulled project are removed. Public-site crawler requests must **not** send TD API authorization headers, OAuth credentials, cookies, or any private session data.

## Check Package Specifications

Landing Page Delivery validates the files declared in the ZIP archive before it can be published. Review the [static package specifications](/products/marketing-cloud/engage-studio/landing-pages/specifications-and-troubleshooting#static-package-specifications) for the allowed extensions, file-count limit, individual file-size limit, total unarchived size limit, and relative-path rules.

Published content is public
Anything in a published package can be delivered to public visitors at the landing page URL. Do not include credentials, API keys, tokens, private customer data, or other secrets in the package.

## Verify the Package Before Uploading

Check the package before uploading it to a landing page:

- The website is a completed static ZIP package that you tested outside Engage Studio.
- CSS, JavaScript, images, and fonts use relative paths that resolve from the published page URL.
- The ZIP root contains `index.html` for the landing page's top URL, and each subdirectory URL that should serve a default page includes its own `index.html`.
- Every file and path meets the [static package specifications](/products/marketing-cloud/engage-studio/landing-pages/specifications-and-troubleshooting#static-package-specifications).
- The package contains no credentials, API keys, tokens, private customer data, or other secrets.


## Next Steps

After the package is ready, make sure that the custom subdomain is **Active** and available to the target workspace. Then [create and publish a landing page](/products/marketing-cloud/engage-studio/landing-pages/creating-and-publishing). If the custom subdomain is not ready, [configure a custom subdomain](/products/marketing-cloud/engage-studio/landing-pages/custom-subdomains) first.