Skip to content

shoplifter.json: connect the project

This is the project’s wiring file. It tells the SDK which Astro components to render. It does not define the text fields the owner edits.

shoplifter.json
{
"contractVersion": 1,
"components": {
"homepage": "src/components/HomePage.astro",
"header": "src/components/Header.astro",
"footer": "src/components/Footer.astro"
}
}
Key Meaning When to change it
contractVersion Version of the manifest format; currently 1 Keep it at the supported value. It is not your website’s release number.
components.homepage Component rendered for the home page When moving or replacing your home component.
components.header Shared header component When moving or replacing your header.
components.footer Shared footer component When moving or replacing your footer.
leads Optional lead-form source and compiled registrations When adding lead forms.

Paths are relative to the project root. All three component paths must point to .astro files under src/. The files must exist before CLI validation succeeds; an absolute path or ../ path is not supported.

For lead forms, initially point leads.source to your TypeScript form module. Generation adds the portable descriptors; do not hand-maintain those generated registrations.

This file selects HomePage.astro. definition.json defines hero.title. The store owner’s saved value arrives in that component as content.hero.title. editor.json decides where the input appears in the dashboard.

The SDK still owns the document wrapper, metadata and managed routes. Changing a component path does not grant ownership of those templates.

After changing paths, run shoplifter types and shoplifter validate. A missing component should be fixed at its declared path, rather than by changing the generated integration.