# Landing Page Specifications and Troubleshooting

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

Landing Page Delivery in Treasure AI Engage Studio publishes static website packages on Active custom subdomains. This reference gives marketers, web operations teams, and administrators the exact package limits, URL rules, permissions, related workflow boundaries, and recovery paths needed to publish reliably. Use it before packaging content or when a domain, upload, or lifecycle action cannot proceed.

## Static Package Specifications

Landing Page Delivery validates the unarchived files declared in a static ZIP package. Keep each package within every listed limit before uploading it.

| **Specification**  | **Value**  |
|  --- | --- |
| Files in one package | 1,000 maximum |
| Size of one file | 20 MB maximum |
| Total unarchived package size | 100 MB maximum |
| Relative file path length | 512 bytes maximum |
| Custom subdomains | 100 maximum per Treasure AI account |
| Package paths | Clean relative paths only. Paths cannot use traversal segments, backslashes, or control characters. |


The package can contain only the extensions listed below.

| **Category**  | **Allowed extensions**  |
|  --- | --- |
| HTML and data | `.html`, `.json`, `.txt`, `.xml`, `.webmanifest` |
| Styles and scripts | `.css`, `.js` |
| Images | `.png`, `.jpg`, `.jpeg`, `.gif`, `.svg`, `.webp`, `.ico` |
| Fonts | `.woff`, `.woff2`, `.ttf`, `.otf` |


### Local Asset Paths

Landing Page packages must use relative paths for local CSS, JavaScript, image, and font files. A path beginning with `/` is root-absolute: it resolves at the custom domain root rather than relative to the Landing Page slug. It can load a file from the root Landing Page or fail to load the intended file. External URLs beginning with `https://` are allowed.

```html
<!-- Use relative paths for files in the ZIP package. -->
<link rel="stylesheet" href="assets/app.css">
<script src="scripts/app.js"></script>
<img src="images/logo.png" alt="Logo">

<!-- Do not use root-absolute paths for files in the ZIP package. -->
<link rel="stylesheet" href="/assets/app.css">
<script src="/scripts/app.js"></script>
<img src="/images/logo.png" alt="Logo">

<!-- External URLs are allowed. -->
<link rel="stylesheet" href="https://cdn.example.com/app.css">

<!-- Loads styles.css from the landing page published at the domain root. -->
<link rel="stylesheet" href="/styles.css">

<!-- Loads styles.css from this landing page. -->
<link rel="stylesheet" href="styles.css">
```

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.

## URL and Lifecycle Rules

Landing Page URLs combine an Active custom subdomain with an optional slug. A blank slug serves the root URL, such as `https://promo.example.com/`.

| **Rule**  | **Behavior**  |
|  --- | --- |
| Slug characters | Use lowercase letters, digits, and hyphens. Separate multiple path segments with `/`. |
| Slug length | 255 characters maximum. A slug cannot begin or end with `/`. |
| Duplicate URLs | Each slug must be unique across every landing page that uses the same custom subdomain, including pages in different workspaces when the subdomain is shared. A blank slug reserves the domain root. |
| Publish prerequisites | The selected custom subdomain must be **Active**, and the package upload must be complete. |
| After first publication | The custom subdomain cannot change after the first publication. The slug is locked while the page is **Published**; unpublish the page to return it to **Draft** and edit the slug before publishing it again. |
| Publish and unpublish propagation | Changes can take about one minute, and occasionally longer, to reach the edge. A public URL may continue to serve the previous state immediately after either action. |
| Delete a landing page | A landing page must be **Draft**. Unpublish a Published page first. |


Landing Page Delivery serves static assets only. It does not evaluate Liquid variables or provide server-side dynamic personalization, consent logging, native conversion tracking, scheduled publishing, or a default Treasure AI domain. Landing Page Delivery does not currently include a no-code page builder or native form processing.

## Permissions

Landing pages do not have a dedicated permission entry. Their effective access is derived from Campaign permissions in **Workspace Feature Permissions**. Web domain operations use the **EngageDomain** permission in **Domain Permissions** and are account-scoped.

| **Permission**  | **Landing page access**  |
|  --- | --- |
| Campaign **View** | View landing pages and upload attempts in the permitted workspace. |
| Campaign **Edit** | Create and update landing page drafts, upload packages, and delete Draft pages. This permission does not publish or unpublish pages. |
| Campaign **Launch** | Publish and unpublish landing pages in addition to the access granted by Campaign Edit. |
| Engage Domain view | View web domains and their statuses when the domain is available to the permitted workspace. |
| Engage Domain edit | Register, update, delete, and restart deployment for web domains. |


## Integration Boundaries and Related Workflows

Landing Page Delivery hosts static website content. Use the related products and implementation paths below when your campaign requires behavior outside static content delivery.

### Handle Form Submissions

Landing Page Delivery does not currently include native form processing. Use a third-party form service or custom JavaScript and HTML to handle form submissions. Do not treat a published landing page as a Treasure AI form-processing endpoint.

### Track Visitor Behavior

Use the [Web SDK](/products/marketing-cloud/personalization-studio/web-sdk-integration) in the static package to track visitor behavior.

### Personalize Landing Page Content

Landing Page Delivery hosts static content and does not evaluate Liquid variables or provide server-side dynamic personalization. Use [Personalization Studio](/products/marketing-cloud/personalization-studio) or [Engage Studio In-Browser Messaging](/products/marketing-cloud/engage-studio/experiences/personalize-message-content) when an experience requires personalization.

### Host a One-Click Unsubscribe Confirmation Page

Landing Pages can host the static HTTPS confirmation page used for One-Click Unsubscribe. Landing Page Delivery does not process unsubscribe requests; before submitting the required POST request, the page must validate that `postTo` is an HTTPS URL with the `/unsubscribe` path on one of these exact endpoints: `https://engage-subscription.us01.treasuredata.com/unsubscribe`, `https://engage-subscription.eu01.treasuredata.com/unsubscribe`, `https://engage-subscription.treasuredata.co.jp/unsubscribe`, or `https://engage-subscription.ap02.treasuredata.com/unsubscribe`. Reject any other origin, path, protocol, credentials, or fragment rather than posting to an arbitrary URL from a query parameter. For the required page behavior and Sender Profile configuration, see [One-Click Unsubscribe Management](/products/marketing-cloud/engage-studio/channels/email/one-click-unsubscribe).

### Distinguish Landing Pages from HTML Email Hosting

[HTML Email Hosting](/products/marketing-cloud/engage-studio/channels/email/html-email-hosting) publishes a static, non-personalized View in Browser copy of an email campaign under a verified Email Domain. Use Landing Pages for a separately prepared static website package on an Active custom Web Domain.

## Troubleshooting

Landing Page Delivery uses domain activation, package completion, and page status to prevent an incomplete site from becoming public. Use the matching recovery path below.

### A Custom Subdomain Remains Pending

A Pending custom subdomain is waiting for ownership verification or certificate provisioning. Compare the public TXT and CNAME records with the generated values in Engage Studio, correct any differences at the DNS provider, and wait for automatic verification. Do not publish the landing page until the domain becomes **Active**.

### A Custom Subdomain Is Suspended

A Suspended custom subdomain did not complete verification or certificate provisioning before the deployment deadline. Confirm that the TXT and CNAME records are public and correct, then restart deployment from the web domain settings. Wait for the status to become **Active** before publishing a page.

### The Landing Page Cannot Be Published

Landing Page Delivery cannot publish a page until its custom subdomain is **Active** and its package upload is complete. Open the page draft, complete or re-upload the static package if needed, and select an Active domain before publishing.

### The Landing Page Cannot Be Deleted

A Published landing page cannot be deleted. Unpublish the page first, confirm that its status returns to **Draft**, and then delete it.

### Styles, Scripts, or Images Load from the Wrong Page

If a landing page displays another page's styles, scripts, or images, inspect the local asset references in the HTML and CSS. Replace each root-absolute path that begins with `/` with a relative path, then upload the package and publish the landing page again. Root-absolute paths resolve at the custom domain root and can load files from the Landing Page published at that root.

### The Custom Subdomain Cannot Be Deleted

A custom subdomain cannot be deleted while any workspace assignment or landing page references it. Remove every page reference and workspace assignment, then delete the domain.

### Landing Pages Does Not Appear in Engage Studio

Landing Page Delivery is generally available. If the Landing Pages area does not appear for your account, confirm that you are signed in to the intended account and workspace, then follow your organization’s established support or administrator process.

## Frequently Asked Questions

### Do Landing Pages include a visual editor?

No. Create the static website package outside Engage Studio, then upload the finished package. See [Prepare a Static Website Package](/products/marketing-cloud/engage-studio/landing-pages/prepare-a-static-website-package).

### Can Landing Pages process a form submission?

Landing Page Delivery does not include native form processing. See [Handle Form Submissions](#handle-form-submissions) for supported alternatives.

### How do I track visitor behavior on a landing page?

Use the [Web SDK](/products/marketing-cloud/personalization-studio/web-sdk-integration) in the static package. See [Track Visitor Behavior](#track-visitor-behavior) for details.

### How do I personalize a landing page?

Landing Page Delivery hosts static content. See [Personalize Landing Page Content](#personalize-landing-page-content) for supported alternatives.

### How do I change a published landing page?

Upload a revised static ZIP package to the landing page and publish it again. For the procedure, see [Update a Published Landing Page](/products/marketing-cloud/engage-studio/landing-pages/creating-and-publishing#update-a-published-landing-page).

### Can I publish to a Treasure AI default domain?

No. Landing Page Delivery requires an **Active** custom subdomain. See [URL and Lifecycle Rules](#url-and-lifecycle-rules) for the publication requirements.

## Related Tasks

- [Landing Pages Overview](/products/marketing-cloud/engage-studio/landing-pages)
- [Prepare a Static Website Package](/products/marketing-cloud/engage-studio/landing-pages/prepare-a-static-website-package)
- [Configure Custom Subdomains](/products/marketing-cloud/engage-studio/landing-pages/custom-subdomains)
- [Create and Publish Landing Pages](/products/marketing-cloud/engage-studio/landing-pages/creating-and-publishing)
- [Engage Studio Workspaces and Permissions](/products/marketing-cloud/engage-studio/permissions)
- [One-Click Unsubscribe Management](/products/marketing-cloud/engage-studio/channels/email/one-click-unsubscribe)
- [View in Browser in Engage Studio](/products/marketing-cloud/engage-studio/channels/email/html-email-hosting)