{"title":"Account subdomains","slug":"account-subdomains","url":"https://support.storeconnect.com/articles/account-subdomains","url_markdown":"https://support.storeconnect.com/articles/account-subdomains.md","subtitle":null,"summary":"Give an account its own subdomain of your store\u0026#39;s domain, such as ambassador.example.com, so that host resolves to your store instead of returning an error. Use this when a partner, reseller, location, or customer group needs a branded URL, and to diagnose an account subdomain that does not load.","type":"Help_Documentation","video_url":"","keywords":"account subdomain, vanity subdomain, subdomain name, custom subdomain, branded url, partner url, reseller url, location url, dns, ssl, web domain, host, no store could be found at that url, subdomain not working, vip url, account.subdomain","last_modified":"2026-09-15T02:32:04+0000","body_markdown":"An account subdomain lets one label in front of your store's domain resolve to that store. Set **Subdomain name** to `ambassador` on an account, and `ambassador.example.com` serves your store instead of returning an error.\n\nUse this when a partner, reseller, location, or customer group needs a URL of their own, sometimes called a vanity subdomain. For example, `ambassador.example.com` for a partner program, or `downtown.example.com` for a store location. Use the troubleshooting section when an account subdomain does not load.\n\n## What an account subdomain does and does not do\n\nAn account subdomain is a routing gate. It decides whether a host reaches your store, and nothing else.\n\n**It does:**\n\n-   Resolve `\u003clabel\u003e.\u003cstore domain\u003e` to your store.\n-   Keep visitors on the branded URL. StoreConnect redirects traffic from your other connected hosts to your primary domain, but leaves a valid account subdomain alone.\n-   Keep generated links on the host the visitor arrived on, rather than rewriting them to the store domain.\n-   Expose `account.subdomain` to your theme and to POS templates.\n\n**It does not:**\n\n-   Sign the visitor in, or associate them with that account. The account record is used to decide whether the host is valid and is then discarded. Anyone can visit the URL.\n-   Switch the price book, catalog, pricing, or theme.\n-   Grant API access. That is a separate `api` subdomain.\n-   Grant POS access. That is the `pos_subdomain` store variable. See [Configure your POS access URL](configure-pos-url-access).\n\n:::warning\nThe description of the **Subdomain name** field, shown in Setup and in the [Account object reference](account-object-reference), suggests using the subdomain to apply a different price book. That describes something you could build, not behavior StoreConnect provides. Visiting an account subdomain changes no pricing on its own. See [Build behavior behind the host](#build-behavior-behind-the-host).\n:::\n\n## Before you start\n\n-   Connect your domain and set it as the store domain. See [Set your store domain and go live](setting-up-a-custom-domain-name).\n-   You must own the domain, or have permission to manage its DNS settings.\n\n## Connect the subdomain\n\nEach account subdomain is a host of its own. Connect it the same way as any other subdomain, so that DNS resolves it and SSL is provisioned for it.\n\n1.  Create a **Web Domain** record with **Domain Name** set to the full host, for example `ambassador.example.com`.\n2.  At your DNS provider, add a **CNAME** record for the host pointing at the record's generated **Target** value.\n3.  Select **Active** on the **Web Domain** record and save. Wait until **Status** reads **Success**.\n\nFor the full procedure, including the status values, see [Connect a domain to StoreConnect](how-to-register-a-domain-to-use-with-storeconnect).\n\nCreate one **Web Domain** record per account subdomain. Leave **Store Domain Name** on the **Store** record as it is; the parent domain already identifies the store.\n\n## Set the subdomain on an account\n\n1.  Open the **Account** record.\n2.  Enter the label in **Subdomain name** (`s_c__Subdomain__c`). Enter the label only, not the full host: `ambassador`, not `ambassador.example.com`.\n3.  Click **Save**.\n\nThe field holds up to 18 characters and must be unique across your whole org. Two accounts cannot share a label, even when they trade with different stores, because subdomain labels share one namespace.\n\n## Diagnose an account subdomain that does not load\n\nAn account subdomain has to clear four checks in order, and the symptom tells you which check failed.\n\n| Symptom | Failing check | Fix |\n|---------|---------------|-----|\n| The browser cannot find the address at all | DNS does not resolve the host | Check the **CNAME** record points at the **Target** on the **Web Domain** record, and that the record's **Status** is **Success**. |\n| A certificate warning appears before the page loads | SSL has not been provisioned for the host | Confirm the **Web Domain** record reached **Success**. If it did and the warning persists, [contact support](storeconnect-support). |\n| The page reads \"No store could be found at that URL\" | Either the parent domain does not match the store, or no account holds that label | Open your store domain on its own. If it loads, the parent domain is correct and the label is the problem. Check the spelling of **Subdomain name** on the account. The lookup ignores case, so capitalization is not the cause. |\n| The browser lands on your store domain instead of staying on the subdomain | A host-level redirect on your deployment catches the request before StoreConnect sees it | [Contact support](storeconnect-support) to have account subdomains excluded from the redirect. |\n\nA wrong parent domain and a missing label produce the same message, because both leave StoreConnect with no store to serve. The store domain test above tells them apart.\n\n## Build behavior behind the host\n\nBecause the account is only used to validate the host, your theme has to work out what to do with it. Three values are available:\n\n| Liquid | Returns |\n|--------|---------|\n| `account.subdomain` | The subdomain label held by an account |\n| `current_request.host` | The hostname the visitor arrived on |\n| `current_account` | The signed-in customer's account, or blank when nobody is signed in |\n\nRead the label off the host with a filter:\n\n\n```liquid\n\n{%- assign label = current_request.host | split: \".\" | first %}\n```\n\n\nFor anything that affects pricing or entitlement, drive the branch from the signed-in customer's account rather than the host. The host is public, so treating it as proof of identity would let anyone claim a partner's pricing by typing their URL.\n\n\n```liquid\n\n{%- if current_account != blank and current_account.subdomain == label %}\n  \u003cp\u003eWelcome back to the {{ current_account.name }} store.\u003c/p\u003e\n{%- endif %}\n```\n\n\nUse the host for presentation, such as a partner logo or a welcome message, and the signed-in account for anything that changes what a customer pays or sees.\n\nOnce the **Web Domain** record reads **Success** and the account label is saved, the account subdomain serves your store, visitors stay on it rather than being redirected, and `account.subdomain` is available to your theme."}