Skip to main content
A form needs no configuration: post to /_cactal/forms/{name} and Cactal stores the submission, emails the recipients, and lists it in the Forms tab. See Forms for the full contract.

Prerequisites

1

Write the form

Use a literal action path and a visible label on every input. This baseline works without JavaScript: the endpoint redirects back to the page with ?submitted=contact.
2

Enhance it with fetch

Submit with fetch and Accept: application/json so visitors keep what they typed when something fails, and show a pending state, a thank-you, and field errors.
429 means the visitor should retry shortly; 403 with code limit_reached means the site used its Free plan allowance for the month.
3

Test on the draft preview

Submit the form on the draft host. Draft submissions are stored as test submissions and never count toward limits.
Read test submissions
Response
4

Choose who gets the email

Each form emails its own recipients, starting with the organization owners. Add the business address to the form; addresses outside the organization confirm by email before they receive anything.
Add a recipient
The notification subject uses the form name from the action path, so quote-request reads as “Quote Request”.

Next steps

  • Export submissions as CSV from the Forms tab, or filter the API by form, status, and source.
  • Restore a false positive from the Spam folder with Not spam; the missed notification is sent.