# 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.

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](https://www.uova.com/help/build/editor/booking).

| 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

1. **Select the element** Click it on the canvas.
2. **Open the Design tab and the Advanced group** The group is closed by default. `Cmd+Shift+I` opens it.
3. **Type declarations** The **Custom CSS** box reads "one CSS rule per line". Write each as `property: value`, for example `text-shadow: 0 1px 2px rgba(0,0,0,0.4);`.
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.

> **Custom CSS applies to every size:** It is written to the element's base styles, not to the size you are previewing. Use the Design tab's controls with Tablet or Mobile active for responsive values. See [Responsive preview](https://www.uova.com/help/build/editor/responsive-preview).

## 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 (`Cmd+K`). The inspector has no HTML field for it, so the AI chat is how you fill it. See [Edit with AI chat](https://www.uova.com/help/build/editor/ai-chat-edit).

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.

> **Not allowed:** Your own JavaScript, iframes and embeds cannot run on a site, because the sanitiser removes them. A pasted video, map or chat widget will be removed. For a booking calendar, use the Book section instead. See [Booking calendars](https://www.uova.com/help/build/editor/booking).

## 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

**Can I add a chat widget or a booking embed?**

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](https://www.uova.com/help/build/editor/booking).

**Can I add my own CSS file?**

No. Use the per-element **Custom CSS** box, or the Design tab.

**How do I verify my site with Google Search Console?**

Paste the verification tag into Site settings, **Code**, after you publish.

**My Custom CSS line did nothing.**

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.

Source: https://www.uova.com/help/build/editor/custom-code