# Forms > A form in MailCamp is a hosted, embeddable page that collects subscribers or handles an unsubscribe. Forms are built in a step-by-step wizard that covers the whole flow — the form itself, the confirmation and thank-you pages, and the emails in between. ## What it is Forms are how new contacts enter MailCamp and how recipients leave. Most accounts embed a subscribe form on their website and keep the unsubscribe form that every campaign footer links to. A form is not just the input fields: the wizard builds the complete signup journey, including the double opt-in email and the pages a subscriber lands on after each step. ## Form types - **Subscribe** — collects a new contact for one mailing list. - **Unsubscribe** — the page recipients land on from a campaign footer, where they opt out, drop individual topics, or give a reason. An **Update** form type (for editing an existing contact's details) exists in the routing but is not part of the standard navigation. A popup-style form — an overlay on your own site — is on the roadmap; today the wizard builds a hosted, page-style form. ## Key concepts - **Linked mailing list**: a form belongs to one list and that link cannot be changed afterwards. To collect for another list, build another form. On single-audience accounts no list is picked at all. - **Status**: a form is only usable once set to **Completed**. Draft forms cannot be shared, embedded, or linked from a campaign. - **Fields**: email is always required; every other field is optional, with its own label, placeholder and required flag *per form* — the same field can be optional on one form and required on another. - **Topics**: when the linked list uses topics, the form can show them, so subscribers pick their interests at signup or adjust them when unsubscribing. - **Double opt-in**: new signups stay Unconfirmed until they click the link in the confirmation email. It keeps bots and typos off the list. - **Public URL and embed code**: every completed form has a hosted URL that works on its own, plus an embed snippet for your site. - **Live preview**: walks the full flow, including confirmation emails and redirects, before you publish. ## The subscribe form wizard 1. **Subscribe form** — arrange the fields in the editor. New forms start with a privacy-policy link under the button; edit or remove it as you see fit. 2. **Confirmation page** — shown right after submitting: "check your inbox". Design it, or redirect to your own site. 3. **Confirmation email** — the double opt-in mail. Set sender name, subject, preheader, from and reply-to addresses, then design the mail and its confirm button. 4. **Thank-you page** — where the subscriber lands after confirming. The signup is complete here. 5. **Thank-you email** — an optional welcome, toggled off if you would rather not send one. 6. **Ready** — the form is Completed. Copy the public URL, grab the embed code, or open the live preview. ## The unsubscribe form 1. **Unsubscribe or adjust preferences** — where the recipient confirms, or (when the list uses topics) keeps the subjects they still want. 2. **Reason for unsubscribing** — optional, with a few short options such as "too many emails" or "content isn't relevant". Aggregate counts per reason are shown on the form's detail view. 3. **Confirmation** — the change is saved. Each mailing list uses one unsubscribe form, and every campaign to that list links to it automatically. Editing the form applies to future campaigns immediately; there is no need to touch existing ones. ## Limits and edge cases - One form collects for exactly one mailing list. - Only Completed forms are used by sent campaigns — check the status before sending, as a draft form will not be linked. - Test emails do not contain an unsubscribe link; use the form's live preview to check it. - An unsubscribe mechanism is legally required on commercial email; the form can be minimal but must exist and work. - A contact who unsubscribed cannot be reactivated from your side — they have to opt in again through a subscribe form. - Embeds only work from a domain verified under [Websites](/llms/websites.txt); the hosted URL works without one. ## Web routes Paths use `:id` as the placeholder for a form's identifier. - `/forms/subscribe` — subscribe form overview. - `/forms/subscribe/create` — start the subscribe wizard. - `/forms/subscribe/:id/update` — reopen the wizard for an existing form. - `/forms/code/:id` — embed code and public URL. - `/forms/unsubscribe` — unsubscribe form overview. - `/forms/unsubscribe/create` — start the unsubscribe wizard. - `/forms/unsubscribe/:id/update` — edit an unsubscribe form. ## Related - [Mailing lists](/llms/mailing-lists.txt) — where signups land. - [Contacts](/llms/contacts.txt) — what forms create. - [Custom fields](/llms/custom-fields.txt) — what forms collect. - [Topics](/llms/topics.txt) — what subscribers pick on a form. - [Websites](/llms/websites.txt) — verifying a domain before embedding.