A restaurant reservation form that gathers every request

Updated 2026-10-30

Phone bookings are fine until the phone rings during the dinner rush. Then messages pile up in three inboxes and a table gets missed. I would send guests to one link, where every request lands in the same shape.

When and how many

The date, the preferred time, a second time that would work and the party size. These are the facts you check against your table plan.

Where and why

Seating, the occasion and high chairs. A birthday gets the corner table, and the right chairs are waiting.

Needs and notes

Step-free access, dietary notes and special requests. You want to know these before the guests arrive, not at the door.

Who fills it and who reads it

Guests fill it in. The host or manager reads the CSV and replies. A guest's AI might ask "What date and time would you like?" Then "How many people are coming?" Then "Does anyone have allergies?" It shows every answer and sends only after a yes. Read more about agent-fillable forms.

A tip

Be clear on your site that this is a request and not a confirmed table. You reply with a yes or an alternative. The form sends no email to the guest. Put the link on your website and social profile, and read the day's requests while you run the morning routine in your restaurant opening checklist. After the meal, a restaurant feedback form asks how it went. See forms for restaurants and food businesses.

Questions

Does the form confirm a table?

No. It records a request. It has no calendar and cannot tell whether a table is free, so you check your book and reply to the guest yourself.

How do I avoid double booking?

Sort the CSV by reservation_date and arrival_time and compare it with your table plan. The second choice time gives you an alternative to offer.

Can guests mention allergies?

Yes. A notes box takes dietary needs and special requests. Read it before service, and ask the guest to confirm anything serious by phone.

Try the form

Live demo ยท nothing is saved

Request a table

Tell us when you would like to come. We check our book and reply to confirm your table.

Where would you like to sit?
Is it a special occasion?
Someone in my group needs step-free access

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": "Request a table",
  "description": "Tell us when you would like to come. We check our book and reply to confirm your table.",
  "fields": [
    {
      "id": "guest_name",
      "label": "Name for the booking",
      "type": "short_text",
      "required": true,
      "max_length": 120
    },
    {
      "id": "contact_phone",
      "label": "Phone",
      "type": "phone",
      "required": true
    },
    {
      "id": "contact_email",
      "label": "Email",
      "type": "email"
    },
    {
      "id": "reservation_date",
      "label": "Date",
      "type": "date",
      "required": true
    },
    {
      "id": "arrival_time",
      "label": "What time would you like?",
      "type": "short_text",
      "required": true,
      "max_length": 20
    },
    {
      "id": "second_choice_time",
      "label": "Another time that could work",
      "type": "short_text",
      "max_length": 20
    },
    {
      "id": "party_size",
      "label": "How many people?",
      "type": "number",
      "required": true,
      "min": 1,
      "max": 30
    },
    {
      "id": "seating_choice",
      "label": "Where would you like to sit?",
      "type": "single_choice",
      "options": [
        "Inside",
        "Outside",
        "At the bar",
        "No preference"
      ]
    },
    {
      "id": "occasion",
      "label": "Is it a special occasion?",
      "type": "single_choice",
      "options": [
        "Just dinner",
        "Birthday",
        "Anniversary",
        "Date night",
        "Business meal",
        "Celebration"
      ]
    },
    {
      "id": "high_chairs",
      "label": "How many high chairs do you need?",
      "type": "number",
      "min": 0,
      "max": 4
    },
    {
      "id": "step_free_access",
      "label": "Someone in my group needs step-free access",
      "type": "checkbox"
    },
    {
      "id": "dietary_notes",
      "label": "Allergies or dietary needs",
      "type": "long_text",
      "max_length": 500
    },
    {
      "id": "special_requests",
      "label": "Anything else we should prepare?",
      "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":"Request a table","description":"Tell us when you would like to come. We check our book and reply to confirm your table.","fields":[{"id":"guest_name","label":"Name for the booking","type":"short_text","required":true,"max_length":120},{"id":"contact_phone","label":"Phone","type":"phone","required":true},{"id":"contact_email","label":"Email","type":"email"},{"id":"reservation_date","label":"Date","type":"date","required":true},{"id":"arrival_time","label":"What time would you like?","type":"short_text","required":true,"max_length":20},{"id":"second_choice_time","label":"Another time that could work","type":"short_text","max_length":20},{"id":"party_size","label":"How many people?","type":"number","required":true,"min":1,"max":30},{"id":"seating_choice","label":"Where would you like to sit?","type":"single_choice","options":["Inside","Outside","At the bar","No preference"]},{"id":"occasion","label":"Is it a special occasion?","type":"single_choice","options":["Just dinner","Birthday","Anniversary","Date night","Business meal","Celebration"]},{"id":"high_chairs","label":"How many high chairs do you need?","type":"number","min":0,"max":4},{"id":"step_free_access","label":"Someone in my group needs step-free access","type":"checkbox"},{"id":"dietary_notes","label":"Allergies or dietary needs","type":"long_text","max_length":500},{"id":"special_requests","label":"Anything else we should prepare?","type":"long_text","max_length":500}]}'

JSON definition

json
{
  "title": "Request a table",
  "description": "Tell us when you would like to come. We check our book and reply to confirm your table.",
  "fields": [
    {
      "id": "guest_name",
      "label": "Name for the booking",
      "type": "short_text",
      "required": true,
      "max_length": 120
    },
    {
      "id": "contact_phone",
      "label": "Phone",
      "type": "phone",
      "required": true
    },
    {
      "id": "contact_email",
      "label": "Email",
      "type": "email"
    },
    {
      "id": "reservation_date",
      "label": "Date",
      "type": "date",
      "required": true
    },
    {
      "id": "arrival_time",
      "label": "What time would you like?",
      "type": "short_text",
      "required": true,
      "max_length": 20
    },
    {
      "id": "second_choice_time",
      "label": "Another time that could work",
      "type": "short_text",
      "max_length": 20
    },
    {
      "id": "party_size",
      "label": "How many people?",
      "type": "number",
      "required": true,
      "min": 1,
      "max": 30
    },
    {
      "id": "seating_choice",
      "label": "Where would you like to sit?",
      "type": "single_choice",
      "options": [
        "Inside",
        "Outside",
        "At the bar",
        "No preference"
      ]
    },
    {
      "id": "occasion",
      "label": "Is it a special occasion?",
      "type": "single_choice",
      "options": [
        "Just dinner",
        "Birthday",
        "Anniversary",
        "Date night",
        "Business meal",
        "Celebration"
      ]
    },
    {
      "id": "high_chairs",
      "label": "How many high chairs do you need?",
      "type": "number",
      "min": 0,
      "max": 4
    },
    {
      "id": "step_free_access",
      "label": "Someone in my group needs step-free access",
      "type": "checkbox"
    },
    {
      "id": "dietary_notes",
      "label": "Allergies or dietary needs",
      "type": "long_text",
      "max_length": 500
    },
    {
      "id": "special_requests",
      "label": "Anything else we should prepare?",
      "type": "long_text",
      "max_length": 500
    }
  ]
}