> ## Documentation Index
> Fetch the complete documentation index at: https://ecommos.co/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Create your first sales form

> Create a public order form, copy the hosted link, and test one submission.

# Create your first sales form

Forms are the primary public intake path for orders. A form is a hosted, no-auth-required page that turns visitor submissions into structured orders in your queue.

## Create the form

1. Go to **Products**.
2. Open your first product.
3. Open the **Channels** tab, then **Forms**.
4. Click **Create form**.

Each form has:

* A **public key** (used in the hosted URL)
* A name
* A status (active/inactive)
* A schema version
* An **Offers** section — the price/quantity choices a customer can pick (this is what older material may call "package options")
* An **Options** section — extra choices you let the customer make, like a fragrance or color, separate from the offer itself

## Required customer fields

Every form collects these by default:

* Full name
* Phone number
* Optional WhatsApp phone
* State
* Address
* Offer selection

Phone numbers are normalized on submission. Contacts are upserted by org + normalized phone, so returning customers are recognized.

## Publish and share

1. Save and set the form to **active**.
2. Copy the **public form URL** (hosted at `/public/forms/[publicKey]`).
3. Copy the **API submit URL** if you are integrating your own landing page.
4. Copy the **embed snippet** if you are embedding the form on a WordPress or custom site.

The public form route renders without auth. Anyone with the link can submit.

If you're connecting a form builder like Elementor instead of using EcommOS's hosted form, see [Connect other systems with Channels](../operations/channels) for the webhook path.

## Test one submission

Before going live, run one test submission:

1. Open the form URL in another browser profile or device.
2. Submit sample customer details and pick your offer.
3. Return to **Orders** in the app.
4. Confirm a new order appears with:
   * A sequential order number (per product)
   * The customer and contact snapshot
   * The selected offer as the order's package
   * An `order.created` event in the timeline
   * Round-robin assignment to an eligible Sales rep (if one exists with product scope)

For non-production testing, use `/tools/test-submit` on staging to fire controlled submissions without going through the public form UI.

## What good first forms look like

* Short: name, phone, address, offer. Nothing else.
* One product, one or two offers.
* WhatsApp field included if your team contacts customers on WhatsApp.
* State field required so dispatch routing works.

Avoid adding custom fields until your team has worked at least 20 real orders. Most custom fields are noise on day one.

## What's next

* [Create and handle your first order](./first-order)
* [Add staff and set roles](../operations/staff-onboarding)
