Order form
Each store chooses what its order form asks. Dashboard → Checkout form;
through the API, GET and PUT /api/checkout-form. A store that never
changes it keeps the original form.
What can change
| Field | Choices | Why |
|---|---|---|
| Full name, phone, wilaya, commune | Always required | A cash-on-delivery parcel needs a name and a phone; the wilaya and commune set the delivery price |
| Address | Required or optional | It cannot be hidden: carriers need it for a home delivery. Required applies to home delivery only; a stop-desk parcel is collected at the desk |
| Order notes | Optional or hidden | Hiding it shortens the form; shoppers can no longer leave delivery instructions |
| Required, optional or hidden | Hidden by default | |
| Delivery options | Home, stop desk, or both | At least one stays on |
| Your own questions | Up to 5 | Short text, long text, number, or a list of choices; each can be required |
Your own questions
Answers appear on the order in the dashboard. They are never sent to carriers.
Each answer is kept with the question's wording at the time of the order, so renaming or deleting a question later never changes what an old order says.
The server enforces it
The storefront shows the form the store configured, and the server checks every order against it:
- something hidden that still arrives, like a note from an old cached page, is dropped and the order goes through;
- something the shopper agreed to that the store no longer allows, like a delivery option turned off, refuses the order with a message in the store's language, rather than silently changing the delivery fee.
Product and landing pages may be cached for a short time, so a shopper can be looking at the form as it was before a change. Making the form stricter can then refuse an order from that page, with a message asking the shopper to refresh; making it looser never refuses one.
What the email is for
When a shopper gives one, it is shown on the order and sent to Meta, hashed, with the conversion, which improves how Meta matches the order to an ad. It is never sent in clear.
Orders your team creates in the dashboard are not checked against this form.
Permissions
checkout_form:read to see the form's settings, checkout_form:manage to
change them.