Skip to content
✨ Publier v1 is live — a polished docs platform built for the open web.
On this page

Contact page

Contact information page at /contact — a simple list of email addresses with no required components.

The contact sub-page renders contact information at /contact. The default implementation is a plain list of email addresses — replace it with a form or anything else your stack supports.

Route control

The route comes from src/pages/contact.astro, not a YAML page flag. pages.contact does not create or suppress it. See Pages for current route controls and limits.

Starter implementation

The company-site template scaffolds src/pages/contact.astro:

src/pages/contact.astro
---
import BaseLayout from '@publier/shell/layouts/base-layout.astro';
---
<BaseLayout title="Contact — My Company" description="Sales, support, and general inquiries.">
<main class="max-w-xl mx-auto my-12 px-6 prose">
<h1>Contact</h1>
<ul>
<li><strong>Sales:</strong> <a href="mailto:sales@example.com">sales@example.com</a></li>
<li><strong>Support:</strong> <a href="mailto:support@example.com">support@example.com</a></li>
<li><strong>Press:</strong> <a href="mailto:press@example.com">press@example.com</a></li>
<li><strong>Security:</strong> <a href="mailto:security@example.com">security@example.com</a></li>
</ul>
<p>We aim to respond within 1 business day.</p>
</main>
</BaseLayout>

Adding a contact form

Replace the email list with a Qwik component$() form that posts to your backend or a form service:

src/pages/contact.astro
---
import ContactForm from '../components/ContactForm';
import BaseLayout from '@publier/shell/layouts/base-layout.astro';
---
<BaseLayout title="Contact — My Company">
<main class="max-w-xl mx-auto my-12 px-6">
<h1>Contact</h1>
<ContactForm />
</main>
</BaseLayout>

Create src/components/ContactForm.tsx as a Qwik component$() with useSignal state for the form fields.