Hugo builds in milliseconds. Adding a form takes one HTML partial.
Updated March 2026
Hugo builds thousands of pages in milliseconds. Written in Go, no JavaScript runtime needed. Markdown content, Go templates, taxonomies, i18n, asset pipelines. Output is plain HTML that goes anywhere. It is the fastest static site generator. That is basically the whole pitch.
Hugo generates static HTML. Sutrena hosts it. Adding a Sutrena form means including the embed snippet or writing a small inline script in a Hugo partial. No module, no shortcode library, no Go template complexity.
Make a partial that includes embed.js with your form ID. Drop it in any page template. Visitors see the form, submissions go to Sutrena, you get a dashboard. The entire integration is one HTML snippet.
For hosting: build your Hugo site, then deploy the output HTML to Sutrena Pages via the API or MCP tools. Multi-page sites, hierarchical slugs (blog/my-post), asset uploads to CDN, custom subdomains and custom domains — all supported. Hugo builds the pages, Sutrena serves them. No external hosting needed, no matter how many pages or how advanced your Hugo features are. The output is HTML, and Sutrena hosts HTML.
<!-- layouts/partials/sutrena-form.html -->
<!-- Hugo partial for embedding a Sutrena form -->
{{ $formId := .formId | default "frm_your_id" }}
<div id="sutrena-form-container"></div>
<script
src="https://sutrena.com/embed.js"
data-form-id="{{ $formId }}"
data-container="sutrena-form-container"
async
></script>
<!-- Usage in a Hugo template: -->
<!-- {{ partial "sutrena-form.html" (dict "formId" "frm_contact01") }} -->
<!-- Alternative: custom HTML form without iframe -->
<!--
<form id="contact-form">
<input name="name" placeholder="Name" required />
<input name="email" type="email" placeholder="Email" required />
<textarea name="message" placeholder="Message" required></textarea>
<button type="submit">Send</button>
</form>
<script>
document.getElementById("contact-form")
.addEventListener("submit", async (e) => {
e.preventDefault();
const data = Object.fromEntries(new FormData(e.target));
const res = await fetch(
"https://sutrena.com/api/forms/frm_contact01/submit",
{
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(data),
}
);
if (res.ok) {
e.target.innerHTML = "<p>Thanks! We will reply soon.</p>";
}
});
</script>
-->
<!-- Sutrena form created via API: -->
<!-- POST https://sutrena.com/api/forms -->
<!-- {
"name": "Hugo Site Contact",
"fields": [
{ "name": "name", "label": "Name", "type": "text", "required": true },
{ "name": "email", "label": "Email", "type": "email", "required": true },
{ "name": "message", "label": "Message", "type": "textarea", "required": true }
],
"createDashboard": true
} -->Hugo: free, open source. Cloudflare Pages (or GitHub Pages, Netlify): free. Sutrena Free: $0/month for 10 projects. Sutrena Builder: $9/month for 50 projects. Total: $0/month for a Hugo site with a few forms. Builder ($9/month) or Pro ($29/month) if you need more.
No. It is pure HTML. Copy the snippet into a partial. No Go modules, no npm packages, no plugins.
Yes. Pass the form ID as a parameter to the partial. Each page can embed a different form.
The embed script loads from a CDN, not through Hugo's pipeline. If you write a custom form, you can put the JS in a Hugo asset file and pipe it through minification.
Sutrena does not touch build time. The form loads client-side at runtime. Your build stays in the milliseconds regardless of how many forms you embed.
Sutrena is the web runtime for AI agents. Three primitives — pages, forms, and dashboards — accessible through one API. Your agent creates web artifacts, humans interact with them, and your agent gets the data back. Framework-agnostic. Works from any MCP client or HTTP client.
1. Get a trial key (no auth, no signup)
curl -X POST https://sutrena.com/api/trial2. Create a form + dashboard from a template
curl -X POST https://sutrena.com/api/forms \
-H "Authorization: Bearer st_trial_xxx" \
-H "Content-Type: application/json" \
-d '{"templateId": "waitlist", "createDashboard": true}'Get a trial API key instantly with no signup, or create an account for the full experience.