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
Tutorials
Tabs, accordions, carousels and section links need no code. Page state, handlers and display conditions cover them.
get_element_catalogue lists the actions, conditions and patterns under interactivity.set_element_id.scrollIntoView {id}. For a link from another page, use an address like /#pricing. Handlers go on containers and buttons, not links, so wrap a link in a container if you need one.self.updateState handler, such as {tab: "group"}. Give each panel a display condition with the same state value, and a default for the first tab, so one panel shows before any click. To style the active tab, duplicate the button and show one of the two by the same condition. A link can open a tab directly with ?state.tab=group.self.toggleFromList {list_name: "faq_open", id: "q1"}, and its answer takes the condition {in_list: "faq_open", id: "q1"}.self.updateState {faq: "q1"} and the condition {state: "faq", value: "q1"}.add_element kind: "carousel". It starts with an empty card: add a quote and a name to it, and bind_field them to listData.quote and listData.name. set_list_items writes the rows, and set_settings controls cards per screen, gap, autoplay, interval and controls_type. Use only reviews the owner gave you. Never write your own.https://wa.me/... or tel: address, or a link to the owner's booking service. Add track_event {event_action: "whatsapp_click"} to count clicks in the site's Google Analytics, if the owner has set that up. Analytics' own names, such as purchase, are refused.set_style with breakpoint: "hover" changes a style while the pointer is over a node, and transition animates it. Phones have no hover, so never hide anything important behind it. Give buttons and links the same look with breakpoint: "focus", so people using a keyboard can see where they are.state to see the others: {"tab": "group"}, or {"faq": "q1"}. Lists can't be set this way, so the faq_open pattern is best checked in the owner's browser. Take each at phone width too.Scroll effects
YouTube chapters
seekVideo, but not a YouTube or Vimeo video. In a list's card, seconds: "{listData.seconds}" takes each row's own time.Outside requests
‹ Previous
CMS-driven siteNext ›
Blog or publishing site