An inventory template for a stock count

Updated 2026-10-30

A stock count sheet on a clipboard gets coffee on it and is typed up on Monday. I would rather the counter enter each item as they go. Every entry becomes a row, so I can compare the shelf to the system without retyping anything.

Where and when

Counter, date and location. They tell me who counted and where to recount if a number looks wrong.

The item and the count

Item name, code, units, unit type and what the system says. The unit type matters, because five boxes and five single items are very different stock. You can use this as a stock count form for a shop, a kitchen or a store room.

Flags and notes

Damaged units, an expiry date and a reorder tick box. These are the facts a buyer needs.

Who fills it and who reads it

Warehouse or shop staff fill one entry per item. A manager downloads the CSV and sorts by SKU or location. The counter's AI can type for them: "Which item are you counting?" Then "How many units are on the shelf?" Then "Is any of it damaged?" It shows the answers and sends them only after a yes. See agent-fillable forms.

One tip

In a spreadsheet, subtract system_quantity from units_counted. Rows where the numbers differ are the ones worth a recount. The form does not scan barcodes or track stock levels.

Goods that just arrived belong on a delivery receipt. New suppliers can start with a supplier application. See IT and operations forms and forms for ecommerce and Shopify stores.

Questions

Can I count the same item on several shelves?

Yes. Send one entry per shelf. In a spreadsheet, add up `units_counted` for each SKU to get the total across locations.

Does the form update my shop stock?

No. It records counts. A signed webhook can fire for each response, so a developer can send counts to another system, but the form itself changes nothing.

How do I stop two people counting the same shelf?

Give each counter a shelf range before the count starts. The location and name columns in the CSV then show any overlap straight away.

Try the form

Live demo ยท nothing is saved

Stock count entry

Fill in one entry for each item you count. Count what is on the shelf, not what the system says.

What is one unit? (required)
This item needs reordering

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": "Stock count entry",
  "description": "Fill in one entry for each item you count. Count what is on the shelf, not what the system says.",
  "fields": [
    {
      "id": "counter_name",
      "label": "Your name",
      "type": "short_text",
      "required": true,
      "max_length": 150
    },
    {
      "id": "count_date",
      "label": "Date of the count",
      "type": "date",
      "required": true
    },
    {
      "id": "storage_location",
      "label": "Shelf, bin or room",
      "type": "short_text",
      "required": true,
      "max_length": 100
    },
    {
      "id": "item_name",
      "label": "Item name",
      "type": "short_text",
      "required": true,
      "max_length": 200
    },
    {
      "id": "sku_code",
      "label": "SKU or item code",
      "type": "short_text",
      "max_length": 80
    },
    {
      "id": "units_counted",
      "label": "Units you counted",
      "type": "number",
      "required": true,
      "min": 0
    },
    {
      "id": "unit_type",
      "label": "What is one unit?",
      "type": "single_choice",
      "required": true,
      "options": [
        "Each",
        "Box",
        "Case",
        "Pack",
        "Pallet"
      ]
    },
    {
      "id": "system_quantity",
      "label": "Quantity your system shows",
      "type": "number",
      "min": 0
    },
    {
      "id": "damaged_units",
      "label": "Damaged or unsellable units",
      "type": "number",
      "min": 0
    },
    {
      "id": "earliest_expiry",
      "label": "Earliest expiry date",
      "type": "date"
    },
    {
      "id": "needs_reorder",
      "label": "This item needs reordering",
      "type": "checkbox"
    },
    {
      "id": "count_notes",
      "label": "Notes",
      "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":"Stock count entry","description":"Fill in one entry for each item you count. Count what is on the shelf, not what the system says.","fields":[{"id":"counter_name","label":"Your name","type":"short_text","required":true,"max_length":150},{"id":"count_date","label":"Date of the count","type":"date","required":true},{"id":"storage_location","label":"Shelf, bin or room","type":"short_text","required":true,"max_length":100},{"id":"item_name","label":"Item name","type":"short_text","required":true,"max_length":200},{"id":"sku_code","label":"SKU or item code","type":"short_text","max_length":80},{"id":"units_counted","label":"Units you counted","type":"number","required":true,"min":0},{"id":"unit_type","label":"What is one unit?","type":"single_choice","required":true,"options":["Each","Box","Case","Pack","Pallet"]},{"id":"system_quantity","label":"Quantity your system shows","type":"number","min":0},{"id":"damaged_units","label":"Damaged or unsellable units","type":"number","min":0},{"id":"earliest_expiry","label":"Earliest expiry date","type":"date"},{"id":"needs_reorder","label":"This item needs reordering","type":"checkbox"},{"id":"count_notes","label":"Notes","type":"long_text","max_length":500}]}'

JSON definition

json
{
  "title": "Stock count entry",
  "description": "Fill in one entry for each item you count. Count what is on the shelf, not what the system says.",
  "fields": [
    {
      "id": "counter_name",
      "label": "Your name",
      "type": "short_text",
      "required": true,
      "max_length": 150
    },
    {
      "id": "count_date",
      "label": "Date of the count",
      "type": "date",
      "required": true
    },
    {
      "id": "storage_location",
      "label": "Shelf, bin or room",
      "type": "short_text",
      "required": true,
      "max_length": 100
    },
    {
      "id": "item_name",
      "label": "Item name",
      "type": "short_text",
      "required": true,
      "max_length": 200
    },
    {
      "id": "sku_code",
      "label": "SKU or item code",
      "type": "short_text",
      "max_length": 80
    },
    {
      "id": "units_counted",
      "label": "Units you counted",
      "type": "number",
      "required": true,
      "min": 0
    },
    {
      "id": "unit_type",
      "label": "What is one unit?",
      "type": "single_choice",
      "required": true,
      "options": [
        "Each",
        "Box",
        "Case",
        "Pack",
        "Pallet"
      ]
    },
    {
      "id": "system_quantity",
      "label": "Quantity your system shows",
      "type": "number",
      "min": 0
    },
    {
      "id": "damaged_units",
      "label": "Damaged or unsellable units",
      "type": "number",
      "min": 0
    },
    {
      "id": "earliest_expiry",
      "label": "Earliest expiry date",
      "type": "date"
    },
    {
      "id": "needs_reorder",
      "label": "This item needs reordering",
      "type": "checkbox"
    },
    {
      "id": "count_notes",
      "label": "Notes",
      "type": "long_text",
      "max_length": 500
    }
  ]
}