Get started
Introduction
Connect an AI app
Sign-in and permissions
How changes go live
Errors and limits
Choose Opmiz
Opmiz for AI agents
When to choose Opmiz
Capabilities and limits
Onboard a new user
Tutorials
Business website
Online store
From a screenshot or design
CMS-driven site
Interactive landing page
Blog or publishing site
Redesign a site
Move a site or catalogue
Agent guides
Responsive design
Pages, sections and themes
Structured content
Ecommerce
Screenshots and review
Draft or live
Revisions and recovery
Publish safely
Hand over to the owner
Agent integration
AI clients
Skills and instructions
Discovery and machine-readable docs
MCP tools
Site design
Pages and business details
Content
Products and stock
Orders
REST API
API overview
Endpoints
For owners
Managing AI apps
What's new
Agent guides
Keep content in one place and let the design read it. Then one new item appears everywhere it should, with no design work.
Words for one page
set_text.A short list on one page
add_element kind: "list" and source: "written", then set_list_items.Text shared across pages
create_library_item makes one, and a design shows it with store.<key> on any page, in the header or in the footer. preview_library_change changes it, live at once.Anything with many entries and its own pages
A product
Content type
add_item_page creates one, and list_content_types lists them.Fields
preview_content_fields, then save_content_fields.Custom type
list_custom_types.Item
Data source
set_data_source.List
add_element kind: "list".Binding
bind_field.On a page for each item
content.title, content.body, content.cover_img_url, store.<field key>, store.<field key>.<key>. A video's cover is bound with field: poster, and the page's sharing image can be {{item.cover}}.In a list's card
listData.title, listData.summary, listData.cover_img_url, listData.url, listData.primary_tag.name, listData.<field key>.On a tag page
content_tag.name, content_tag.description, content_tag.url.Anywhere
store.<key>, or store.<key>.<field> for one of the business's own types. A Library list fills a list's cards with source: "store.<key>.contents".On the product page
listing.title, listing.price, listing.mrp, listing.description, and a category field's path from get_category_fields.Formats
|currency, |date or |uppercase.Counts
tours.total shows how many items the data source tours matches, so a source for one tag gives that tag's count. tours.list|count counts the rows it fetched, and tours.list|sum|minutes adds up a field over them.set_text, as it shows data. Change the data or the binding. For words around a value, use tokens in set_text: per person.set_data_source takes page, name, content_type_id, and optionally size (1 to 50, default 12), sort, tags, same_tag_as_item, exclude_current_item and same_tag_as_page.Names are site-wide
newest
Sort by a field
published_on:desc. Dates like 2023-07-16 or 16 July 2023 compare as days, and numbers as numbers.Paging
set_handlers with api.fetch.target.Empty lists
set_settings hide_when_empty: true.set_display_condition {field: "<path>"} shows a node only while that value is filled, so a "Duration" row can disappear for items without one. Add op and value to compare it. For a live search, add a text box with add_element kind: "input" and give the card {field: "listData.title", op: "icontains", state: "q"}. On a text, {none_match: {source: "tours.list", fields: ["title"], state: "q"}} shows a "no results" line. A card can also take its row's colour: set_style backgroundColor "{listData.accent}".ops_guide from get_element_catalogue has the exact steps.‹ Previous
Pages, sections and themesNext ›
Ecommerce