Use a Contact / feedback form integration to collect messages from your site (contact, support, feedback). Each submission creates a message in Mailoo and a linked feedback record with structured fields.
:::: important ::: title Important :::
Server-side only: Post from your backend or BFF; call Mailoo with X-API-Key from environment variables. Do not expose the key in browser JavaScript or public bundles.
::::
:::: note ::: title Note :::
Legacy: Calling the feedback webhook directly from the browser can work if CORS and allowed origins match, but it exposes the API key. Use a backend or BFF for new integrations. ::::
Quick start
- In the dashboard, open your project → Create New Integration → Contact / feedback form.
- Optionally set allowed origins (Origin allowlist). Leave empty to skip Origin checks; the API key remains required. A BFF may forward the browser
Origin, so a filled list still applies. - Create an API key with scope Feedback form submissions (
webhook.feedback-submission) if you use a RESTRICTED key, or use Full Access. Store the key on the server only. - From your server,
POSTto the feedback webhook (see API reference below). - View submissions under Messages for that integration.
Outbound SMTP (dashboard)
On the integration Connection & settings tab, Outbound email (SMTP) lets you configure mail for subscriber flows and operator replies that use integration-level SMTP (see outbound-smtp{.interpreted-text role="doc"}). Use Send test email to verify the current SMTP fields; the test is delivered to your Mailoo account email and does not auto-save the form.
API reference
Endpoint
POST /api/v1/webhooks/feedback/{projectUid}/{integrationId}
Headers
Header Required Description
Content-Type Yes application/json
X-API-Key Yes Project API key with webhook.feedback-submission (or FULL)
Origin No When allowedOrigins is non-empty, must match an entry. Omit or leave allowlist empty to skip Origin checks (API key still required).
JSON body
Field Required Description
email Yes Sender email
message Yes Message body (plain text)
name No Sender name
subject No Subject line (defaults to a generic title if omitted)
metadata No Object with extra key/value data (stored with the submission)
Success response (200)
{
"success": true,
"messageId": "...",
"feedbackId": "...",
"message": "Feedback submission processed successfully"
}
Dashboard
Open Project → Integration → View Messages to list and open individual messages. Feedback integrations do not use the newsletter subscribers/campaigns tabs.
Integrating from your Next.js app
Wire a BFF route with @mailoo/forms so the browser never sees the API key. Full walkthrough, env options, and client patterns: feedback-form-nextjs-example{.interpreted-text role="doc"}.
See also
feedback-form-nextjs-example{.interpreted-text role="doc"} --- Next.js BFF, optional allowlist, client submitoutbound-smtp{.interpreted-text role="doc"} --- integration outbound SMTP, dashboard test email,MAIL_SMTP_ENCRYPTION_KEY../index{.interpreted-text role="doc"} --- other integration types- OpenAPI:
https://api.mailoo.app/docs/v1--- API keys andallowedOperations