Error-message index
Find the code you saw in the table below, or search this page for the message. Every code has its own link that ends in the code, such as #NO_COMPOSITION_FOR_URL, so you can paste the code after # in this page's address to jump straight to it.
The examples on this page come from a blog. It has a Blog post content type with the UID blog_post, a Blog post template with the Template UID blog_post_template, and an entry, AI 101, at /blog/ai-101. The site reads published content from the production environment.
Find the code you saw
| What went wrong | Codes |
|---|---|
| Your site's setup is incomplete. Studio needs something from your site that isn't there yet. | API_KEY_MISSING, COMPONENT_NOT_REGISTERED, COMPOSITION_IDENTIFIER_MISSING, DELIVERY_TOKEN_MISSING, ENVIRONMENT_MISSING, INIT_NOT_COMPLETE, STACK_SDK_MISSING |
| Studio can't read your content. Something your site is set up with is wrong. | CONTENT_TYPE_NOT_FOUND, ENVIRONMENT_NOT_FOUND, HOST_UNUSABLE, LOCALE_NOT_CONFIGURED, STACK_NOT_FOUND_ON_HOST |
| Your content didn't load. Your site asked Contentstack for content and didn't get a usable answer. | TRANSPORT_FAILED, RESPONSE_UNUSABLE, SEARCH_INCOMPLETE, SPEC_UNREADABLE, UPSTREAM_ERROR, URL_OWNERSHIP_PROBE_FAILED |
| Nothing matches what your site asked for. Studio finished looking, and the content isn't there. | COMPOSITION_UID_NOT_FOUND, CONNECTED_ENTRY_NOT_FOUND, NO_COMPOSITION_FOR_TEMPLATE_CONTENT_TYPE, NO_COMPOSITION_FOR_URL, URL_LOCALE_NOT_FOUND, URL_MATCHED_NO_ENTRY |
Each code's entry tells you where you'll see it, how to fix it, and whether your site should answer with a 404. The messages come from the Studio SDK and are quoted exactly as it writes them. In them, "composition" means a template or a section.
Some codes are warnings, not errors, such as QUERY_RETURNED_NO_ROWS. The page still renders. They're listed under Warnings about content that didn't load.
Your site's setup is incomplete
Studio needs these from your site before it can load any content. Until they're in place, Studio can't show or edit anything on the canvas.
API_KEY_MISSING
Your site isn't giving Studio an API key
The Contentstack stack your site passes to Studio has no API key set. Studio needs the API key to ask Contentstack for anything.
Where you'll see it
-
In Studio, as the Your Site's Setup Is Incomplete card.
-
In your browser console or server log:
[Contentstack Studio] API_KEY_MISSING: The Contentstack stack passed to Composable Studio has no api key.
How to fix it
Set the API key. Add the API key to the Contentstack stack you pass to Studio.
The content isn't missing, so don't answer with a 404. For more, see Install the Studio SDK.
COMPONENT_NOT_REGISTERED
A component isn't registered
Your template uses a component that your site hasn't registered, so Studio can't draw it. The message names the components it couldn't find. They're either Studio's own built-in components, or components from your site, such as BlogHero.
Where you'll see it
-
In Studio, as the Your Site Reported a Problem card.
-
In your browser console or server log, as one of these:
[Contentstack Studio] COMPONENT_NOT_REGISTERED: These components are used by this composition and not registered: blog-hero.[Contentstack Studio] COMPONENT_NOT_REGISTERED: Studio's own components are not registered: ….
How to fix it when Studio's own components are missing
- Import the package once. The package root was never imported, so Studio's built-in components never registered themselves. Add
import "@contentstack/studio-react";once, before you fetch. - Keep the import in your server bundle. A server-only bundle can tree-shake the import out. Keep the root import in the bundle that runs the fetch.
For more, see Render on the server.
How to fix it when your own components are missing
- Register before you fetch. The fetch ran before
registerComponent()did. Import the module that registers your components above the code that fetches. - Register the missing component. The template uses a component this build doesn't have, such as
BlogHero. Register it, or remove it from the template.
For more, see Bring your own data.
The content isn't missing, so don't answer with a 404.
COMPOSITION_IDENTIFIER_MISSING
Your site didn't say which template it wanted
Your site asked Studio for content without saying which template it wanted. There are three ways to name one, and the call didn't use any of them.
Where you'll see it
-
In Studio, as the Your Site's Setup Is Incomplete card.
-
In your browser console or server log:
[Contentstack Studio] COMPOSITION_IDENTIFIER_MISSING: No composition was asked for.
How to fix it
Name the template in the call. Pass one of compositionUid, url or templateContentTypeUid, such as url: "/blog/ai-101". See Fetching by template UID and entry UID.
The template may well exist. Your site just didn't ask for one, so don't answer with a 404.
DELIVERY_TOKEN_MISSING
Your site isn't giving Studio a delivery token
The Contentstack stack your site passes to Studio has no delivery token set. Studio needs the delivery token to read your published content.
Where you'll see it
-
In Studio, as the Your Site's Setup Is Incomplete card.
-
In your browser console or server log:
[Contentstack Studio] DELIVERY_TOKEN_MISSING: The Contentstack stack passed to Composable Studio has no delivery token.
How to fix it
Set the delivery token. Add the delivery token to the Contentstack stack you pass to Studio.
The content isn't missing, so don't answer with a 404. For more, see Install the Studio SDK.
ENVIRONMENT_MISSING
Your site isn't telling Studio which environment to read
No environment is set on the Contentstack stack your site passes to Studio. Studio reads published content one environment at a time, so it can't read anything without one.
Where you'll see it
-
In Studio, as the Your Site's Setup Is Incomplete card.
-
In your browser console or server log:
[Contentstack Studio] ENVIRONMENT_MISSING: The Contentstack stack passed to Composable Studio has no environment. Studio queries published content per environment, so this is required.
How to fix it
Set the environment. Add the environment, such as production, to the Contentstack stack you pass to Studio.
The content isn't missing, so don't answer with a 404. For more, see Install the Studio SDK.
INIT_NOT_COMPLETE
Your site asked for a template before Studio was ready
Your site asked for a template before the Studio SDK had finished starting up. Studio waits 30 seconds for it, then gives up and reports this.
Where you'll see it
-
In Studio, as the Your Site's Setup Is Incomplete card.
-
In your browser console:
[Contentstack Studio] INIT_NOT_COMPLETE: A composition was requested before Studio finished starting up. Gave up after 30 seconds.
How to fix it, most likely first
- Call
studioSdk.init(...)on this code path. Init never ran here. Call it before anything renders a template. - Run init before you fetch. The fetch isn't waiting for init to finish. This happens most with server rendering, when the server code that fetches never imports the module that calls
studioSdk.init. Make sure init runs on the path that fetches, before the fetch.
The causes in the console message name initStudio() and a provider. Neither exists in the SDK. Both mean studioSdk.init(...).
The content isn't missing, so don't answer with a 404. For more, see Install the Studio SDK.
STACK_SDK_MISSING
Your site isn't giving Studio a Contentstack stack
Your site isn't passing a Contentstack stack to the Studio SDK, so Studio has nothing to ask for content. You see this at the first call that needs the stack, not when your site sets Studio up.
Where you'll see it
-
In Studio, as the Your Site's Setup Is Incomplete card.
-
In your browser console or server log:
[Contentstack Studio] STACK_SDK_MISSING: Composable Studio has no Contentstack stack to query.
How to fix it
Pass a stack to Studio. Pass your Delivery SDK stack to init, as studioSdk.init({ stackSdk: stack }), before you fetch a template. The fix in the console message mentions a Studio provider, which doesn't exist. It means this init call.
The content isn't missing, so don't answer with a 404. For more, see Install the Studio SDK.
Studio can't read your content
Your site is set up to talk to Contentstack, but one of the values it uses is wrong. Studio can't load anything here until a developer fixes it.
CONTENT_TYPE_NOT_FOUND
Studio's content types are missing
Studio reads every template from one content type, and there isn't one by that name on this stack. Unless your site names a different one, Studio looks for compositions.
Where you'll see it
-
In Studio, as the Studio's Content Types Are Missing card.
-
In your browser console or server log:
[Contentstack Studio] CONTENT_TYPE_NOT_FOUND: The content type "compositions" does not exist in this stack.
How to fix it when you didn't set contentTypeUid
- Set
contentTypeUid. Your site didn't say which content type to use, so Studio used the default,compositions, and this stack uses a different one. Find Studio's content type in Contentstack and setcontentTypeUidto its UID. - Install Studio's content types. Check that the API key points at the stack you meant. If it does, install Studio's content types there.
How to fix it when you set contentTypeUid
- Check the spelling. Compare the UID with the content type in Contentstack.
- Install Studio's content types. Check that the API key points at the stack you meant. If it does, install Studio's content types there.
The content isn't missing, so don't answer with a 404. For the UID, see Install the Studio SDK. For Studio's content types, see Create a project.
ENVIRONMENT_NOT_FOUND
Contentstack can't find that environment
Your site asked for content from the production environment, and Contentstack didn't find it.
Where you'll see it
-
In Studio, as the Studio Can't Read Your Content card.
-
In your browser console or server log, as one of these:
[Contentstack Studio] ENVIRONMENT_NOT_FOUND: Contentstack did not find the environment "production".[Contentstack Studio] ENVIRONMENT_NOT_FOUND: Contentstack did not find the environment this request was sent to.
How to fix it, most likely first
- Check the name. The environment may not exist on this stack, or it may have been renamed. Compare the name with the environments in Contentstack.
- Check the delivery token covers it. A delivery token covers specific environments, so
productioncan exist and still sit outside the token. Check that the delivery token you use covers it.
The content isn't missing, so don't answer with a 404. For more, see Install the Studio SDK.
HOST_UNUSABLE
Your site points at a Contentstack address it can't use
The Contentstack address your site is set up with can't be used as written, so the request never got anywhere. The message says which of two reasons applies. Either it isn't a valid address, or your site is served over https and the address is http, so the browser blocks the request.
Where you'll see it
-
In Studio, as the Studio Can't Read Your Content card.
-
In your browser console or server log, as one of these:
[Contentstack Studio] HOST_UNUSABLE: The Contentstack host "…" cannot be used: it is not a valid address.[Contentstack Studio] HOST_UNUSABLE: The Contentstack host "http://cdn.contentstack.io" cannot be used: the page is served over https and the host is http, so the browser will block the request.
How to fix it
- Check it's a valid address. Set a valid Contentstack address for this site.
- Use an https address. When your site is served over https, the browser blocks an http Contentstack address.
The content isn't missing, so don't answer with a 404. For more, see Install the Studio SDK.
LOCALE_NOT_CONFIGURED
This language isn't set up
Your site asked for content in en-US, and that language isn't set up on this stack. The language came from your SDK configuration, not from the address. Nothing loads for it until someone adds it, or your site asks for a language the stack has.
If the language came from the address instead, see URL_LOCALE_NOT_FOUND.
Where you'll see it
-
In Studio, as the This Language Isn't Set Up card.
-
In your browser console or server log:
[Contentstack Studio] LOCALE_NOT_CONFIGURED: Contentstack did not find the language "en-US" on this stack. The locale came from the SDK configuration.
How to fix it, most likely first
- Check the code matches exactly. Codes that differ only in case, such as
en-USanden-us, are different values. Compare it with the languages in Contentstack, exactly as they're written there. - Add the language. It may never have been added to this stack. Add it in Contentstack, or ask for one the stack has.
The content isn't missing, so don't answer with a 404. For more, see Install the Studio SDK.
STACK_NOT_FOUND_ON_HOST
The API key doesn't lead to a stack
Your site asked Contentstack for content and was turned away. The API key it's using doesn't lead to a stack on the Contentstack address it called.
Where you'll see it
-
In Studio, as the Studio Can't Read Your Content card.
-
In your browser console or server log:
[Contentstack Studio] STACK_NOT_FOUND_ON_HOST: Contentstack did not find a stack for this API key on cdn.contentstack.io.
How to fix it, most likely first
- Check the API key. It may not match the stack this project is connected to. Compare it with the stack's API credentials in Contentstack.
- Check the region. A key only answers on the region its stack lives in, so the key can be right and the address wrong. Check which region the stack is in and set the host to match. In that case the fix is the host, not the key.
The content isn't missing, so don't answer with a 404. For more, see Install the Studio SDK.
Your content didn't load
Your site asked Contentstack for content and didn't get an answer it could use. For most of these, nothing in your project caused it, and trying again is the first thing to do.
TRANSPORT_FAILED
Your site couldn't reach Contentstack
Your site sent a request to Contentstack and nothing came back.
Where you'll see it
-
In Studio, as the Your Content Didn't Load card.
-
In your browser console or server log:
[Contentstack Studio] TRANSPORT_FAILED: The request to cdn.contentstack.io did not complete.
How to fix it, most likely first
- Try again. The network between your site and Contentstack dropped the request. Check your internet connection and retry.
- Check your network. If it keeps happening, check outbound network access and any proxy in front of your site.
- Check the address. Nothing may be listening at the host, or it may be blocked from where your site runs. Check the address, and that it's reachable from this environment.
A site that can't reach Contentstack for a minute hasn't lost its content, so don't answer with a 404.
RESPONSE_UNUSABLE
Something other than Contentstack answered
Your site got a reply, but it isn't a usable Contentstack delivery response. Something answered on that address without being Contentstack, such as a proxy's error page.
Where you'll see it
-
In Studio, as the Your Content Didn't Load card.
-
In your browser console or server log:
[Contentstack Studio] RESPONSE_UNUSABLE: The reply from cdn.contentstack.io is not a usable delivery response.
How to fix it
- Check what sits in between. Look at anything between your site and Contentstack: a proxy, a gateway or an offline page.
- Contact Contentstack support. If there's nothing in between, contact Contentstack support. Include the code and the full message.
The content isn't missing, so don't answer with a 404.
SEARCH_INCOMPLETE
Studio stopped searching before it finished
Studio couldn't finish loading /blog/ai-101, and it isn't anything you've done. Your project has more templates than one search can cover, so the search for /blog/ai-101 stopped at its limit before it could rule a match out.
Where you'll see it
-
In Studio, as the Your Content Didn't Load card.
-
In your browser console or server log:
[Contentstack Studio] SEARCH_INCOMPLETE: Stopped after considering … compositions without finding a match for "/blog/ai-101". The search did not finish, so this is not a 404.
How to fix it
Contact Contentstack support. Nothing you change in your project fixes this. Include the code and the full message.
The search didn't finish, so the content may well be there. Don't answer with a 404.
SPEC_UNREADABLE
A stored layout won't open
Studio found the template or section, but its stored layout is damaged and won't open. It isn't anything you've done.
Where you'll see it
-
In Studio, as the Your Content Didn't Load card.
-
In your browser console or server log, as one of these:
[Contentstack Studio] SPEC_UNREADABLE: The stored layout for blog_post_template could not be read.[Contentstack Studio] SPEC_UNREADABLE: A stored layout could not be read.
How to fix it
Contact Contentstack support. Nothing you change in your project fixes this. Include the code and the full message.
Studio found the template, so don't answer with a 404.
UPSTREAM_ERROR
Contentstack couldn't answer
Contentstack couldn't give your site an answer. Nothing in your project caused it, and nothing in it needs changing. When Contentstack sent an HTTP status, the message includes it.
Where you'll see it
-
In Studio, as the Your Content Didn't Load card.
-
In your browser console or server log, as one of these:
[Contentstack Studio] UPSTREAM_ERROR: Contentstack answered this request with 503.[Contentstack Studio] UPSTREAM_ERROR: Contentstack's reply to this request could not be read.
How to fix it
- Try again in a few minutes. Nothing in your project needs changing first.
- Contact Contentstack support. If it keeps happening, contact Contentstack support. Include the status and the code from the error.
The content isn't missing, so don't answer with a 404.
URL_OWNERSHIP_PROBE_FAILED
Studio couldn't tell which template owns this address
More than one template is set up for /blog/ai-101, so Studio checks with Contentstack which one owns it. Every one of those checks failed to complete.
Where you'll see it
-
In Studio, as the Your Content Didn't Load card.
-
In your browser console or server log:
[Contentstack Studio] URL_OWNERSHIP_PROBE_FAILED: Could not check which composition owns "/blog/ai-101" — every ownership check failed.
How to fix it
- Try again shortly. Nothing in your project needs changing first.
- Contact Contentstack support. If it keeps happening, contact Contentstack support. Include the code and the full message.
The content isn't missing, so don't answer with a 404.
Nothing matches what your site asked for
Studio finished looking, and what your site asked for isn't there. These are the only codes where your site should answer with a 404.
COMPOSITION_UID_NOT_FOUND
That template isn't here
Your site asked for the template with the UID blog_post_template, and Studio didn't find it in this project.
Where you'll see it
-
In Studio, as the That Composition Isn't Here card.
-
In your browser console or server log, as one of these. The last one means your own fetcher returned nothing.
[Contentstack Studio] COMPOSITION_UID_NOT_FOUND: No composition with the uid "blog_post_template" in content type "compositions".[Contentstack Studio] COMPOSITION_UID_NOT_FOUND: No composition with the uid "blog_post_template" was found in content type "compositions".[Contentstack Studio] COMPOSITION_UID_NOT_FOUND: No composition with the uid "blog_post_template" was returned.
How to fix it, most likely first
- Check the UID. It may not be the one this template has. You can find the right one on the template in Studio.
- Check it's published. When your site reads published content, the template may not be published to
production. Check its publish status in Contentstack.
Your site should answer this one with a 404, because the content really isn't there. For more, see Bring your own data.
CONNECTED_ENTRY_NOT_FOUND
This template has no content to show
The template loaded, but the entry it reads its content from wasn't found in blog_post.
Where you'll see it
-
In Studio, as the This Page Has No Content to Show card.
-
In your browser console or server log:
[Contentstack Studio] CONNECTED_ENTRY_NOT_FOUND: No entry was found for the content type "blog_post" this composition is connected to.
How to fix it, most likely first
- Check there's an entry. No entry in
blog_postmay have this address, or match this template. Create one, or connect the template to a content type that has entries. - Check the entry UID. When your site asks for the entry by its UID, with
templateEntryUid, the UID may be wrong, or the entry may not be inblog_post. - Check it's published. The entry may exist and not be published to
production. Publish it, or check which environment your site reads. - Check the connected content type. The template may be connected to the wrong content type. Check it in Studio.
- Check for transformation rules. If your Custom Preview URL has transformation rules on a field in the template's URL, the address holds a changed value Studio can't look up. See Transformation rules aren't applied.
Your site should answer this one with a 404, because the content really isn't there. See Handling missing routes.
NO_COMPOSITION_FOR_TEMPLATE_CONTENT_TYPE
No template uses this content type
Your site asked for the template connected to blog_post, and nothing in this project is connected to it.
Where you'll see it
-
In Studio, as the No Composition for This Content Type card.
-
In your browser console or server log, as one of these:
[Contentstack Studio] NO_COMPOSITION_FOR_TEMPLATE_CONTENT_TYPE: No composition is connected to the content type "blog_post".[Contentstack Studio] NO_COMPOSITION_FOR_TEMPLATE_CONTENT_TYPE: No composition in this project is connected to the content type "blog_post".
How to fix it, most likely first
- Connect a template. Connect one to
blog_postin Studio, or ask for a different content type. - Check it's published. When your site reads published content, the template that uses
blog_postmay not be published toproduction. Check its publish status in Contentstack.
Your site should answer this one with a 404, because the content really isn't there. See Fetching by template UID and entry UID.
NO_COMPOSITION_FOR_URL
Nothing is set up for this address
Your site asked for /blog/ai-101, and no template in your project is set up for that address. Studio checked every template's URL and none of them matched, so there's nothing to show.
Where you'll see it
-
In Studio, as the Nothing Is Set Up for This Address card.
-
In your browser console or server log, as one of these:
[Contentstack Studio] NO_COMPOSITION_FOR_URL: No composition matches "/blog/ai-101". Considered 3 compositions.[Contentstack Studio] NO_COMPOSITION_FOR_URL: No composition is set up for the address /blog/ai-101.
How to fix it, most likely first
- Check the address. Compare
/blog/ai-101with the Template URL of the template you expect, in Studio. - Check the URL pattern. The template's URL pattern may not produce this address. Open the pattern in Studio and check it against
/blog/ai-101. See How template URLs work and Common Template URL pitfalls. - Check it's published. When your site reads published content, the template may not be published to
production. Check its publish status in Contentstack.
Your site should answer this one with a 404, because the content really isn't there. See Handling missing routes.
URL_LOCALE_NOT_FOUND
The language in this address isn't set up
The address /fr/blog/ai-101 asks for the language fr, and that language isn't set up on this stack. The language came from the address, not from your SDK configuration. If it came from your configuration instead, see LOCALE_NOT_CONFIGURED.
Where you'll see it
-
In Studio, as the Nothing Is Set Up for This Address card.
-
In your browser console or server log, as one of these:
[Contentstack Studio] URL_LOCALE_NOT_FOUND: "/fr/blog/ai-101" asks for the language "fr", which is not set up on this stack.[Contentstack Studio] URL_LOCALE_NOT_FOUND: This address asks for the language "fr", which is not set up on this stack.
How to fix it, most likely first
- Check the address. The language in it may not be one of this stack's languages. Check it against the languages in Contentstack.
- Add the language back. It may have been removed from the stack after this address was published. Add it back, or redirect the address to a language the stack has.
The address is what a visitor asked for, so a language the stack doesn't have means there's no such content. Your site should answer with a 404. See Handling missing routes.
URL_MATCHED_NO_ENTRY
This address has no content behind it
Two templates are set up for /blog/ai-101, but none of them has an entry for this address. Your routing is right, and the content is what's missing.
Where you'll see it
-
In Studio, as the This Address Has No Content Behind It card.
-
In your browser console or server log:
[Contentstack Studio] URL_MATCHED_NO_ENTRY: 2 compositions match "/blog/ai-101", and none of them has an entry for it.
How to fix it, most likely first
- Check there's an entry at this address. No entry in
blog_postmay have this address. Open the template in Studio and check the entry it reads from. - Check it's published. When your site reads published content, the entry may not be published to
production. Check its publish status in Contentstack. - Check the connected content type. A template may be connected to the wrong content type. Check the connected content type on each template in Studio.
Your site should answer this one with a 404, because the content really isn't there. For the URL side, see Common Template URL pitfalls. For the 404, see Handling missing routes.
Messages without a code
These messages don't carry a code. Find the one you saw in the table for where you saw it, then follow the link. A … in a message stands for a value that changes, such as a field name or a URL.
In the Studio editor
| Message | Where you'll see it | Go to |
|---|---|---|
Content type with this uid already exists in this stack. Please choose a different uid. | When you create a project | Create a project |
Content type with this name already exists in this stack. Please choose a different name. | When you create a project | Create a project |
No base URL found! | In Project Settings, under Configuration | Configure your project |
URL pattern cannot be empty. | In the Edit URL dialog | URL variables |
The variable "…" is invalid. Please check for typos. | In the Edit URL dialog | URL variables |
The variable "…" is not recognized. Check the syntax and spelling. | In the Edit URL dialog | URL variables |
You cannot use "…" in a freeform composition because no connected content type exists to query. | In the Edit URL dialog | URL variables |
The variable "…" is not allowed. Date variables and other pseudo variables are not supported. | In the Edit URL dialog | URL variables |
The field "…" does not exist. Please ensure you enter only existing fields. | In the Edit URL dialog | URL variables |
"…" is not a nested field and cannot be traversed further. | In the Edit URL dialog | URL variables |
The reference field "…" is not a valid reference. | In the Edit URL dialog | URL variables |
Could not load the referenced content type for "…". Try again or check that the referenced content type exists. | In the Edit URL dialog | URL variables |
The content type schema is still loading. Please wait a moment and try again. | In the Edit URL dialog | URL variables |
Invalid URL pattern syntax. Please check your variable formatting. | In the Edit URL dialog | URL variables |
Save failed: … | In the Edit URL dialog | URL variables |
Studio doesn't apply Custom Preview URL transformations to this pattern. There are a few ways to set up a pattern that matches. | In the Edit URL dialog, as a notice | Transformation rules aren't applied |
On the canvas
Cards that come from an error code are listed under that code, in Find the code you saw.
| Message | Where you'll see it | Go to |
|---|---|---|
Canvas URL is not configured | On the canvas, in place of the preview | Configure your project |
Studio Can't Connect to Your Site | A card on the canvas | Install the Studio SDK |
Content Types Don't Match | A card on the canvas | Create a project |
Use Studio Canvas Component | A card on the canvas, while you edit a section | Mount the section preview route |
No Section Canvas on This Route | A card on the canvas, while you edit a section | Mount the section preview route |
A Page Loaded, Not the Canvas | A card on the canvas, while you edit a section | Mount the section preview route |
We couldn't load your website | On the canvas, in place of the preview, while you edit a template | Create a template |
No entry matches this URL pattern | On the canvas, in place of the preview, while you edit a template | Create a template |
No entry has a URL field populated yet | On the canvas, in place of the preview, while you edit a template | Create a template |
Connected Content Type Not Available | On the canvas, in place of the preview, while you edit a template | Create a template |
No Studio Code on This Route | A card on the canvas, while you edit a template | Wire template preview routes |
Use Studio Component | A card on the canvas, while you edit a template | Wire template preview routes |
URL Pinned to Another Template | A card on the canvas, while you edit a template | Wire template preview routes |
A Closer URL Match Won | A card on the canvas, while you edit a template | Edit or reset a template's URL |
Another Entry Owns This URL | A card on the canvas, while you edit a template | Edit or reset a template's URL |
Two Templates Share This URL | A card on the canvas, while you edit a template | Edit or reset a template's URL |
This Address Is Nearly Right | A card on the canvas, while you edit a template | Edit or reset a template's URL |
URL Conflict Detected | A notice on the canvas, while you edit a template that loads | Edit or reset a template's URL |
This section isn't allowed in this slot. Choose one of the slot's allowed sections, or drop a different component. | When you drag onto the canvas | Build a template from sections |
This element is locked. Unlock it first, or drop into a different container. | When you drag onto the canvas | Select and arrange elements |
Condition blocks inside this repeater can only have one child container. | When you drag onto the canvas | Render a list of mixed things |
In the Settings, Data, Design and Layers tabs
| Message | Where you'll see it | Go to |
|---|---|---|
Direct binding isn’t supported because this field has no data—use a repeater to bind it to the schema. | In the Settings tab | Bind a component |
Direct binding isn’t supported for multiple-value fields—use a repeater to bind it to the schema. | In the Settings tab | Bind a component |
This content may not display correctly in this view. Please contact your development team to update the component so it can support this type of content. | In the component itself, on the canvas and on your live site, in place of the value | Bind a component |
Invalid source | In the Layers tab | Bind a component |
No source configured | In the Layers tab | Bind a component |
No condition configured | In the Layers tab | Show or hide content with a condition |
Data Mismatch Found | In the Settings tab | Component schema: props, types and defaults |
No properties available for the selected component. | In the Settings tab | Component schema: props, types and defaults |
No properties available for the selected component. | In the Design tab | Style on the canvas |
No styles are available for this section. Styles cannot be added or applied. | In the Design tab | Style on the canvas |
For design changes to take effect, the component must be configured to use the … property. | In the Design tab | Make your components styleable |
Could not load the data source. Please try again later. If the issue persists, please contact support. | In the Data tab | Add extra data to a template |
No data available for selected data source, please select one to continue | In the Data tab | Add extra data to a template |
Invalid binding | In the Settings tab, on a condition, and in the Layers tab | Show or hide content with a condition |
Clear this condition first and re-build it by selecting a field from the data binder. | In the Settings tab, on a condition | Show or hide content with a condition |
In the browser console or server log
These come from the Studio SDK in your app. If you expected a code here and there isn't one, your SDK may be older than the release that added error codes, which logs its errors without one.
| Message | Where you'll see it | Go to |
|---|---|---|
Either compositionUid, url, or templateContentTypeUid is required | In the browser console | Fetching by template UID and entry UID |
error while registering components | In the browser console | Register a component |
No request listener found for event "register-components" | In the browser console | Register a component |
[Contentstack Studio] StudioComposition requires either a `spec` or a `compositionUid`. | In the browser console or server log | Bring your own data |
[Contentstack Studio] StudioComposition: SDK not initialized. Call studioSdk.init(config) before rendering with a compositionUid. | In the browser console | Bring your own data |
[Contentstack Studio] Slot: failed to report slot data | In the browser console | Bring your own data |
From your framework or a library
These come from React, Next.js or a Contentstack library, not from Studio, but a Studio setup is a common cause.
| Message | Where you'll see it | Go to |
|---|---|---|
Attempted to call …() from the server | In your server log | Render on the server |
Invalid hook call | In the browser console or server log | Render on the server |
Only plain objects can be passed to Client Components | In your server log, in Next.js | Bring your own data |
From the Studio API
Every Studio API error, with its status code, error_code and exact message, is in API errors and validation.
Deciding what your site returns
This part is for developers who handle these errors in code. The Studio SDK doesn't log the errors it throws. It throws them, so you see one wherever your app logs errors: the browser console, your server log or your framework's error overlay.
The logged message starts with [Contentstack Studio] and the code, then the message, then the causes to check, most likely first:
[Contentstack Studio] NO_COMPOSITION_FOR_URL: No composition matches "/blog/ai-101". Considered 3 compositions.
What to do, most likely first:
1. The address "/blog/ai-101" may not be the one the composition is set up for. Compare it with the composition's URL in Studio.
2. The composition's URL pattern may not produce this address. Open the pattern in Studio and check it against the address.
The error carries its code as error.code and its class as error.errorClass. Each code belongs to one of five classes:
| Class | What it means | Answer with | On this page |
|---|---|---|---|
SETUP_INCOMPLETE | Something your site needed wasn't there when it was needed. | 5xx | Your site's setup is incomplete |
SETUP_INVALID | Something your site is set up with is wrong. | 5xx | Studio can't read your content |
NETWORK_ERROR | Your site sent the request and nothing came back. | 5xx | TRANSPORT_FAILED |
SERVER_ERROR | The SDK couldn't establish an answer. | 5xx | The rest of Your content didn't load |
NOT_FOUND | Nothing matched what your site asked for. | 404 | Nothing matches what your site asked for |
Only the NOT_FOUND codes mean the content isn't there. To decide whether your site answers with a 404, call isCompositionNotFound(error) from @contentstack/studio-react. It's true for the NOT_FOUND codes and false for every other code, which you'd answer with a 5xx.
Note: Error codes ship with the Studio SDK release that adds them. An earlier SDK logs its errors without a code.
Warnings about content that didn't load
These codes aren't errors. The page still renders, but something on it is blank or empty. The SDK doesn't throw them. It logs each one as a warning in the browser console or server log, with the code and the message, followed by an object with the details.
The SDK logs them in development, when NODE_ENV is development. In production it logs them only when you pass debug: true to studioSdk.init. It logs each message once per page load, even when a binding repeats inside a Repeater. A … in a message stands for a value that changes.
| Code | Message | What it means |
|---|---|---|
BINDING_PATH_MISSING | [Contentstack Studio] BINDING_PATH_MISSING: The binding "…" does not exist on …. | The field was renamed or removed on the content type, or it's empty on this entry. |
BINDING_SHAPE_MISMATCH | [Contentstack Studio] BINDING_SHAPE_MISMATCH: The binding "…" reads a single value and resolved to a …. | The binding points at a group or modular block. Point it at a field inside it. |
REFERENCES_UNRESOLVED | [Contentstack Studio] REFERENCES_UNRESOLVED: … references came back as pointers rather than entries, so anything bound past them has nothing to show. | The references nest deeper than one request follows, or a referenced entry was deleted. |
FEWER_ENTRIES_THAN_REQUESTED | [Contentstack Studio] FEWER_ENTRIES_THAN_REQUESTED: Asked "…" for … entries and got …. Missing: …. | The missing entries aren't published to this environment, or they were deleted. |
QUERY_RETURNED_NO_ROWS | [Contentstack Studio] QUERY_RETURNED_NO_ROWS: The data source "…" returned no entries. | A pinned query ran and its filter matched nothing. |
QUERY_REQUEST_FAILED | [Contentstack Studio] QUERY_REQUEST_FAILED: The data source "…" could not be fetched, so its list is empty. | A pinned query's request didn't complete. Its filter isn't the problem. Retry the page. |
DATA_SOURCES_UNREADABLE | [Contentstack Studio] DATA_SOURCES_UNREADABLE: The stored data sources for … could not be read, so none of its queries ran. | The composition's saved data sources are damaged. Report it to Contentstack. |
PREVIEW_ASSET_PROJECTION_NULL | [Contentstack Studio] PREVIEW_ASSET_PROJECTION_NULL: The asset at "…" on … came back empty from the preview service. The same request returns it from the published CDN. | A known Preview API defect. Check the published site before you change the binding. |
Where to go next
- For a message that isn't listed here, open the page for the task you were doing and check its "If it doesn't work" heading.
- Look up the rules behind the Edit URL messages: URL variables.
- Find out how Studio matches an address to a template: How template URLs work.