A bakery order form that turns pickup chaos into a list

Updated 2026-10-30

Saturday morning at the counter is not the time to learn who ordered what. Notes on napkins get lost, and the last sourdough goes to the wrong person. I would rather have orders arrive in one list, each with a day and a pickup window.

What can customers order?

Quantity boxes for loaves, croissants, cinnamon buns, muffins and cupcakes, plus a free text box for anything else. Quantities are easy to total: add up one column at a time for your bake list. See forms for restaurants and food businesses and forms for ecommerce and Shopify stores.

When do they collect?

They pick a pickup date and a window: morning, lunchtime or afternoon. That spreads collection through the day and helps you box orders in the right order.

What if someone has an allergy or wants a gift?

A dietary box catches allergies, and a tick box asks for a gift box. A customer's AI might ask "Which items and how many of each?" Then "Which day and time window?" Then "Any allergies?" It shows the answers and sends only after a yes. Read about agent-fillable forms.

Where does a bigger order go?

A custom cake needs more detail, so send those customers to a cake order form. Biscuits by the dozen suit a cookie order form. Weekly lunches for a school fit a school lunch order form.

Questions

Can customers order several items at once?

Yes. Each item has its own quantity box, so one order can hold loaves, croissants and cupcakes. A box left at zero means the customer does not want that item.

What if my menu is different?

The items here are examples. When you create the form, replace them with your own bakes, such as bagels, scones or pies. Keep one quantity box per product, so the CSV is easy to total.

Can I offer a weekly standing order?

The repeat question records that a customer wants an order every week. It does not schedule anything, so you add standing orders to your own plan.

Try the form

Live demo ยท nothing is saved

Order from the bakery

Choose what you would like and when you will collect it. Leave a quantity at zero for anything you do not want.

When will you collect? (required)
Please pack my order as a gift box
Is this a repeat order?

Or paste the JSON

Give this to your AI. It needs the AI Form API MCP server or an API key. It makes the form and sends you the link.

text
Create this form with the AI Form API create_form tool (or POST https://aiformapi.com/v1/forms with my API key). Then reply with the public_url.

{
  "title": "Order from the bakery",
  "description": "Choose what you would like and when you will collect it. Leave a quantity at zero for anything you do not want.",
  "fields": [
    {
      "id": "customer_name",
      "label": "Your name",
      "type": "short_text",
      "required": true,
      "max_length": 120
    },
    {
      "id": "customer_phone",
      "label": "Phone",
      "type": "phone",
      "required": true
    },
    {
      "id": "customer_email",
      "label": "Email",
      "type": "email"
    },
    {
      "id": "pickup_date",
      "label": "Pickup date",
      "type": "date",
      "required": true
    },
    {
      "id": "pickup_window",
      "label": "When will you collect?",
      "type": "single_choice",
      "required": true,
      "options": [
        "Morning",
        "Lunchtime",
        "Afternoon"
      ]
    },
    {
      "id": "sourdough_loaves",
      "label": "Sourdough loaves",
      "type": "number",
      "min": 0,
      "max": 12
    },
    {
      "id": "croissants",
      "label": "Croissants",
      "type": "number",
      "min": 0,
      "max": 48
    },
    {
      "id": "cinnamon_buns",
      "label": "Cinnamon buns",
      "type": "number",
      "min": 0,
      "max": 48
    },
    {
      "id": "muffins",
      "label": "Muffins",
      "type": "number",
      "min": 0,
      "max": 48
    },
    {
      "id": "cupcakes",
      "label": "Cupcakes",
      "type": "number",
      "min": 0,
      "max": 48
    },
    {
      "id": "other_bakes",
      "label": "Anything else you would like?",
      "type": "long_text",
      "max_length": 600
    },
    {
      "id": "gift_box",
      "label": "Please pack my order as a gift box",
      "type": "checkbox"
    },
    {
      "id": "standing_order",
      "label": "Is this a repeat order?",
      "type": "single_choice",
      "options": [
        "Just this once",
        "Every week",
        "Every other week"
      ]
    },
    {
      "id": "dietary_notes",
      "label": "Allergies or dietary needs",
      "type": "long_text",
      "max_length": 500
    }
  ]
}

Or call the API

bash
curl -X POST https://aiformapi.com/v1/forms \
  -H "Authorization: Bearer $AIFORMAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{"title":"Order from the bakery","description":"Choose what you would like and when you will collect it. Leave a quantity at zero for anything you do not want.","fields":[{"id":"customer_name","label":"Your name","type":"short_text","required":true,"max_length":120},{"id":"customer_phone","label":"Phone","type":"phone","required":true},{"id":"customer_email","label":"Email","type":"email"},{"id":"pickup_date","label":"Pickup date","type":"date","required":true},{"id":"pickup_window","label":"When will you collect?","type":"single_choice","required":true,"options":["Morning","Lunchtime","Afternoon"]},{"id":"sourdough_loaves","label":"Sourdough loaves","type":"number","min":0,"max":12},{"id":"croissants","label":"Croissants","type":"number","min":0,"max":48},{"id":"cinnamon_buns","label":"Cinnamon buns","type":"number","min":0,"max":48},{"id":"muffins","label":"Muffins","type":"number","min":0,"max":48},{"id":"cupcakes","label":"Cupcakes","type":"number","min":0,"max":48},{"id":"other_bakes","label":"Anything else you would like?","type":"long_text","max_length":600},{"id":"gift_box","label":"Please pack my order as a gift box","type":"checkbox"},{"id":"standing_order","label":"Is this a repeat order?","type":"single_choice","options":["Just this once","Every week","Every other week"]},{"id":"dietary_notes","label":"Allergies or dietary needs","type":"long_text","max_length":500}]}'

JSON definition

json
{
  "title": "Order from the bakery",
  "description": "Choose what you would like and when you will collect it. Leave a quantity at zero for anything you do not want.",
  "fields": [
    {
      "id": "customer_name",
      "label": "Your name",
      "type": "short_text",
      "required": true,
      "max_length": 120
    },
    {
      "id": "customer_phone",
      "label": "Phone",
      "type": "phone",
      "required": true
    },
    {
      "id": "customer_email",
      "label": "Email",
      "type": "email"
    },
    {
      "id": "pickup_date",
      "label": "Pickup date",
      "type": "date",
      "required": true
    },
    {
      "id": "pickup_window",
      "label": "When will you collect?",
      "type": "single_choice",
      "required": true,
      "options": [
        "Morning",
        "Lunchtime",
        "Afternoon"
      ]
    },
    {
      "id": "sourdough_loaves",
      "label": "Sourdough loaves",
      "type": "number",
      "min": 0,
      "max": 12
    },
    {
      "id": "croissants",
      "label": "Croissants",
      "type": "number",
      "min": 0,
      "max": 48
    },
    {
      "id": "cinnamon_buns",
      "label": "Cinnamon buns",
      "type": "number",
      "min": 0,
      "max": 48
    },
    {
      "id": "muffins",
      "label": "Muffins",
      "type": "number",
      "min": 0,
      "max": 48
    },
    {
      "id": "cupcakes",
      "label": "Cupcakes",
      "type": "number",
      "min": 0,
      "max": 48
    },
    {
      "id": "other_bakes",
      "label": "Anything else you would like?",
      "type": "long_text",
      "max_length": 600
    },
    {
      "id": "gift_box",
      "label": "Please pack my order as a gift box",
      "type": "checkbox"
    },
    {
      "id": "standing_order",
      "label": "Is this a repeat order?",
      "type": "single_choice",
      "options": [
        "Just this once",
        "Every week",
        "Every other week"
      ]
    },
    {
      "id": "dietary_notes",
      "label": "Allergies or dietary needs",
      "type": "long_text",
      "max_length": 500
    }
  ]
}