Custom CSS, HTML blocks and head code
What code you can add to a UOVA site: per-element CSS, a sanitised HTML block and a short list of head snippets. Your own scripts and iframes are removed. The Book section is the one calendar embed.
For the complete documentation index, see llms.txt. This page is also available as Markdown.
UOVA lets you add limited code in three places. None of them runs JavaScript from you, and none accepts an iframe or an embed of your own. The one supported embed is the Book section, a booking calendar or button for Cal.com, Calendly and Square Appointments. See Booking calendars.
| Where | What it takes | Scope |
|---|---|---|
| Design tab, Advanced, Custom CSS | CSS declarations, one per line | The selected element only |
| An HTML block | Sanitised HTML | Where you place the block |
| Dashboard, Site settings, Code | Analytics and verification snippets from an allowed list | The whole site |
#Custom CSS for one element
Step 1: Select the element
Click it on the canvas.
Step 2: Open the Design tab and the Advanced group
The group is closed by default. CmdShiftI opens it.
Step 3: Type declarations
The Custom CSS box reads "one CSS rule per line". Write each as
property: value, for exampletext-shadow: 0 1px 2px rgba(0,0,0,0.4);.Step 4: Click outside the box
UOVA parses the lines and merges them into that element's styles, and saves an undo step.
This is element-scoped inline styling, not a stylesheet. Lines are split on line breaks and semicolons. A line without a colon, with an empty value, or starting with /* is skipped without an error, and names such as text-shadow are converted to the form the editor stores. There are no selectors, so you cannot target other elements or write media queries here.
#HTML blocks
An HTML block is an element that holds sanitised HTML, named HTML Block in Layers, at full width. Insert it with Insert raw HTML block from the command palette (CmdK). The inspector has no HTML field for it, so the AI chat is how you fill it. See Edit with AI chat.
The sanitiser removes script, style, iframe, object, embed, base, link and meta tags, and it strips event handlers such as onclick. Form controls such as input, textarea and select are kept, which is how some generated sites carry a newsletter box.
#Head code
Site-level snippets live in your dashboard, not in the editor. Open the site's Site settings, then Code. A draft site shows "Add code after you publish", so publish first.
| Accepted | Format |
|---|---|
| Google Analytics 4 | An ID starting G- |
| Google Tag Manager | An ID starting GTM- |
| Meta Pixel | A number of 9 to 20 digits |
| Site verification tags | Google, Bing (msvalidate.01), Facebook, Pinterest, Yandex, Ahrefs, Norton Safe Web, Naver and Baidu |
- A paste can be up to 8,000 characters and 20 tags.
- The server rebuilds your paste from the allowed data and drops everything else. It reports what it dropped and why.
- Microsoft Clarity and Plausible are recognised but refused, and so is any other script, style or link tag, and a meta refresh.
- Google Analytics and Meta Pixel load on the live site only after a visitor gives cookie consent.
- Verification tags are written into the page the server sends, on your site's own address only.
#What does not exist
- A Custom Code tab in the editor's Project settings.
- Per-page code.
- A GA4 connection from the editor.
#Common questions
A chat widget, no: it needs a script or an iframe, and both are removed from your own HTML. A booking calendar, yes, through the Book section, which accepts only Cal.com, Calendly and Square Appointments links. See Booking calendars.
No. Use the per-element Custom CSS box, or the Design tab.
Paste the verification tag into Site settings, Code, after you publish.
Check that it has the form property: value. Lines without a colon are skipped, and a value the browser does not understand has no visible effect.
