A sign in sheet template for visitors, guests and classes

Updated 2026-10-30

Paper sign in sheets go missing, and nobody can read the handwriting anyway. When someone asks who was in the building on Tuesday, the clipboard has no answer. I would rather keep the log in one place where I can search it.

How it works

  1. The visitor gives a name and company, so you can read it later.
  2. They say who they came to see and why, so the right person gets told.
  3. They add the date and the time they arrived, so the log has an order.
  4. They leave a phone or email only if you need to reach them.
  5. They tick the box for the house rules, if you post any at the door.

What a visitor's AI would ask

"What is your name and company?" Then "Who are you here to see?" Then "What is the reason for the visit?" It lists the answers and sends them only after you say yes. You can read how agent-fillable forms work.

Good to know

Use one form per door or per event, so each CSV is one clean list. Keep optional questions optional. People skip a form that asks too much.

For a front desk, see forms for IT and operations. For parties and meetings, see forms for events. A guest check-in form suits a private event with a guest list. Performers can add their names with an open mic sign up sheet. A class with a fixed roster fits the attendance template.

Questions

How is this different from an attendance list?

An attendance list ticks off people you already know. A sign in sheet records anyone who walks in, with who they came to see and why. For a fixed class roster, use the attendance template.

Can visitors sign out too?

This form records arrivals only. For departures, make a second form with a time out question and share its link at the exit. Match both lists by name in the CSV.

Where should I put the link so people use it?

Print the link on a card at the desk or the door sign. Visitors open it on their phone. A guest can also hand it to their own AI, which asks for each missing answer.

Try the form

Live demo ยท nothing is saved

Visitor sign in

Please sign in before you go further. It only takes a moment.

Reason for your visit (required)

For example 09:30.

Only if we may need to reach you during your visit.

I have visited here before
I have read the house rules posted at the entrance

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": "Visitor sign in",
  "description": "Please sign in before you go further. It only takes a moment.",
  "fields": [
    {
      "id": "visitor_name",
      "label": "Your name",
      "type": "short_text",
      "required": true,
      "max_length": 120
    },
    {
      "id": "visitor_company",
      "label": "Company or organisation",
      "type": "short_text",
      "max_length": 150
    },
    {
      "id": "visiting_whom",
      "label": "Who are you here to see?",
      "type": "short_text",
      "required": true,
      "max_length": 120
    },
    {
      "id": "visit_reason",
      "label": "Reason for your visit",
      "type": "single_choice",
      "required": true,
      "options": [
        "Meeting",
        "Interview",
        "Delivery or collection",
        "Class or session",
        "Event",
        "Maintenance or repair",
        "Other"
      ]
    },
    {
      "id": "sign_in_date",
      "label": "Today's date",
      "type": "date",
      "required": true
    },
    {
      "id": "time_in",
      "label": "Time you arrived",
      "type": "short_text",
      "required": true,
      "help": "For example 09:30.",
      "max_length": 20
    },
    {
      "id": "visitor_phone",
      "label": "Phone number",
      "type": "phone",
      "help": "Only if we may need to reach you during your visit."
    },
    {
      "id": "visitor_email",
      "label": "Email address",
      "type": "email"
    },
    {
      "id": "been_before",
      "label": "I have visited here before",
      "type": "checkbox"
    },
    {
      "id": "house_rules_read",
      "label": "I have read the house rules posted at the entrance",
      "type": "checkbox"
    }
  ]
}

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":"Visitor sign in","description":"Please sign in before you go further. It only takes a moment.","fields":[{"id":"visitor_name","label":"Your name","type":"short_text","required":true,"max_length":120},{"id":"visitor_company","label":"Company or organisation","type":"short_text","max_length":150},{"id":"visiting_whom","label":"Who are you here to see?","type":"short_text","required":true,"max_length":120},{"id":"visit_reason","label":"Reason for your visit","type":"single_choice","required":true,"options":["Meeting","Interview","Delivery or collection","Class or session","Event","Maintenance or repair","Other"]},{"id":"sign_in_date","label":"Today'\''s date","type":"date","required":true},{"id":"time_in","label":"Time you arrived","type":"short_text","required":true,"help":"For example 09:30.","max_length":20},{"id":"visitor_phone","label":"Phone number","type":"phone","help":"Only if we may need to reach you during your visit."},{"id":"visitor_email","label":"Email address","type":"email"},{"id":"been_before","label":"I have visited here before","type":"checkbox"},{"id":"house_rules_read","label":"I have read the house rules posted at the entrance","type":"checkbox"}]}'

JSON definition

json
{
  "title": "Visitor sign in",
  "description": "Please sign in before you go further. It only takes a moment.",
  "fields": [
    {
      "id": "visitor_name",
      "label": "Your name",
      "type": "short_text",
      "required": true,
      "max_length": 120
    },
    {
      "id": "visitor_company",
      "label": "Company or organisation",
      "type": "short_text",
      "max_length": 150
    },
    {
      "id": "visiting_whom",
      "label": "Who are you here to see?",
      "type": "short_text",
      "required": true,
      "max_length": 120
    },
    {
      "id": "visit_reason",
      "label": "Reason for your visit",
      "type": "single_choice",
      "required": true,
      "options": [
        "Meeting",
        "Interview",
        "Delivery or collection",
        "Class or session",
        "Event",
        "Maintenance or repair",
        "Other"
      ]
    },
    {
      "id": "sign_in_date",
      "label": "Today's date",
      "type": "date",
      "required": true
    },
    {
      "id": "time_in",
      "label": "Time you arrived",
      "type": "short_text",
      "required": true,
      "help": "For example 09:30.",
      "max_length": 20
    },
    {
      "id": "visitor_phone",
      "label": "Phone number",
      "type": "phone",
      "help": "Only if we may need to reach you during your visit."
    },
    {
      "id": "visitor_email",
      "label": "Email address",
      "type": "email"
    },
    {
      "id": "been_before",
      "label": "I have visited here before",
      "type": "checkbox"
    },
    {
      "id": "house_rules_read",
      "label": "I have read the house rules posted at the entrance",
      "type": "checkbox"
    }
  ]
}