← Al Davies, 250 High Street

A visitor sign-in log in SharePoint

Put a Microsoft Form on a front-desk tablet or QR code and send each answer to a SharePoint list, so every visit is one searchable row with name, company, host, time in and purpose. A form cannot record sign-out, so have the front desk fill in Time out, or add a second sign-out form. Exact names may differ on your screen.

Why the paper book falls short

A paper sign-in book works until you need something from it. Handwriting is hard to read. Visitors skip the "time out" column. The book sits at the desk, so only the person at the desk can look at it. Finding who visited last Tuesday means flipping pages.

Problems:

A list fixes the first, third and fourth problems well. The second one, sign-out, needs a plan. That plan is below.

Paper, Excel or a SharePoint list

Our advice, not a Microsoft rule: a paper book or an Excel sheet is enough for a tiny desk with one person who reads it. Choose the list when several people need to search visits, when you do not want visitors to read earlier names, or when you want a record that survives a lost book. This guide has no file to download. It lists the columns to build.

Columns: Visitor name, Company, Host, Time in, Time out, Purpose. A sample row: Visitor name Test Visitor, Company Test Company, Host a staff member, Time in 9:05 AM, Time out empty until sign-out, Purpose 1 Meeting.

What you are building

You will build three things:

The form-to-list steps are in "Save Microsoft Forms answers to a SharePoint list". This guide does not repeat them. It shows what to change for a visitor log.

Privacy first: collect the minimum

A visitor log holds names and the times people were in your building. Plan it before you build it.

  1. Collect only what you will use. One way to start is a name, a company, who they are visiting, and why. Do not ask for a phone number, a car plate or an ID number unless you have a clear reason and a rule that says so.
  2. Put the list on a site that only the front desk and the people who need it can open. Hiding rows in a view does not protect them, because anyone with access to the list can pick another view. For real limits, see "Let each person see only their own items in a SharePoint list" and "Keep one column private (like pay or notes) in a shared list".
  3. Keep the rows as long as your own policy says. Ask your admin or your office manager how long visit records should be kept, and on what date they should be removed. Then write that date in your process. This guide does not tell you what any law requires.
  4. Each answer also stays in the form, under View responses, until you delete it. Delete old answers there on the same date as the list rows, and do not share a summary link. Microsoft says: "When you paste this link, anyone that has the link will be able to view a summary of responses for your form."
  5. Do not show the list on the tablet. The tablet shows the form only. Visitors should never see who signed in before them.

Step 1. Create the list

Create a blank SharePoint list named "Visits". Microsoft's pages give the general method for creating a list. Add these columns:

Choose the column types before you create them. Changing a type later can damage the data already in a column.

Step 2. Build the form

Create the form at forms.office.com with a work or school account. Microsoft's pages on creating a form give the steps. Add these questions:

  1. First and last name (Text).
  2. Company (Text).
  3. Who are you here to see? (Text).
  4. Reason for your visit (Choice) with the same five options as the list: "1 Meeting", "2 Delivery", "3 Interview", "4 Contractor", "5 Other".

Write the choices in the form with the same words and numbers as in the list. If they differ, the row may fail or may save a value your views do not match. Add a short line in the question, such as "Choose 1 to 5". Make every question required so rows are not half empty.

Step 3. Choose who can respond

Visitors do not have accounts in your organization, so this choice matters. Microsoft's help page on choosing who can fill out a form lists three choices:

The same page says "Record name" keeps the name and email of each respondent, and it says: "Respondents must be from your school in order for you to record their names." The same rule applies to a work organization. A visitor is not from your organization. So for a visitor log you will probably choose "Anyone can respond", and the form must ask for the name in a question, as in Step 2. In that case "Record name" does not help you. Check with your admin which choice fits.

The same page says "One response per person" is also an option when responses are limited to your organization. For visitors this setting does not apply. A person who visits twice will sign in twice, which is what you want.

Step 4. Put the form on a tablet or a QR code

Microsoft's help page on sending a form and collecting responses says you open the form, select "Collect responses", and choose a way to send it, such as a link, an invitation, a QR code or an embed code. For a front desk, there are two ways to use it:

A tablet is better when you want a visitor to sign in even if they have no data on their phone. A QR code is better when the desk is busy. You can offer both with the same form.

A tablet in a public spot is a shared device. Do not sign it in to the Microsoft 365 account of a person. Ask your admin how to set up a device for this use.

Step 5. Connect the form to the list

Build the flow as in "Save Microsoft Forms answers to a SharePoint list". The trigger is "When a new response is submitted". Microsoft's Forms connector page lists a second trigger with the same name marked [DEPRECATED], so pick the one without that mark. Microsoft also says the connector only works with organizational accounts. The next action is "Get response details". Then add the SharePoint action "Create item". Map the fields:

Leave Time out empty. Test with one real-looking answer, and delete the test row when you are done.

Step 6. Sign-out, the hard part

Microsoft Forms only adds new answers. It cannot change an old row. Microsoft's Forms connector page lists a trigger for a new response, and the SharePoint connector lists an "Update item" action that changes an existing row. A flow can use both, but it needs to know which row to update. A visitor who walks out the door is not going to look for a row. Be honest with yourself about this. There is no way to make every visitor sign out. Pick one of these two ways.

Option A. The front desk edits the row. This is the simplest.

  1. Create a view named "In the building" that shows visits from today. Microsoft says filters with [Today] or [Me] need the classic view editor (Edit current view, then Filters); our advice, not a Microsoft rule: use the classic view editor for blank and "is not equal to" filters too. One way to start is to filter on Time in for today and show only the columns the desk needs.
  2. When a visitor leaves, the desk person opens the row and fills in "Time out".
  3. At the end of the day, the desk person scans the rows with an empty Time out.

This works when someone is at the desk all day. It does not work with an unstaffed lobby.

Option B. A second form for sign-out. Visitors, or the host, fill in a short "Sign out" form with the visitor name.

  1. Create a second form with one question: First and last name (Text). Share it with a QR code on a card near the exit.
  2. Build a second flow. The trigger is "When a new response is submitted" for the sign-out form, then "Get response details".
  3. Add the SharePoint action "Get items" and choose the Visits list. In Filter Query, enter an OData filter in the form Title eq 'name', where name is the answer from the sign-out form, placed between single quotes. Microsoft's guidance page shows this pattern.
  4. In Order By, enter ID desc, so the newest visit comes first. Microsoft's page gives the pattern "column name followed by asc or desc".
  5. In Advanced options, set Top Count to 1. Microsoft says the default item limit is 100 and that Top Count sets how many items are returned. You want only the newest visit with that name. Also open the action settings and turn on Pagination. Microsoft's page says that on lists with more than 5,000 items, a filter query can return no rows unless Pagination is on. Turn it on from the start.
  6. Add the SharePoint action "Update item". For Id, use the expression first(body('Get_items')?['value'])?['ID']. Set Title to the same row's Title, because Update item needs it when Title is required. Set Time out to utcNow().

The weak point of Option B is the name. The visitor must type their name exactly as they did at sign-in. "Sam Reed" and "Sam Reid" do not match. If nothing matches, the flow finds no row and nothing is updated. Treat Option B as a help, not a proof. It also signs out the newest visit even if that visit was already signed out.

Option A is enough where the desk is staffed. Start with it, and add Option B only if you need sign-out when no one is at the desk.

Step 7. Make the list useful

Get the visits into Excel

To hand visits to someone in a spreadsheet, switch to All visits, newest first, clear any selected rows and use Export to Excel under Export on the command bar. Only rows in the current view go into the file, per Microsoft. See "SharePoint list export to Excel fails or misses rows".

What to avoid

Honest limits

This setup records who said they were there. It does not check ID. A visitor can type any name. It does not stop someone from skipping the form. It does not make people sign out. Time out stays empty on rows where nobody signed out. The flow runs under the account that built it, so if that person leaves, the flow can stop. Ask your admin about ownership. If you need badge printing, ID checks or alerts when a visitor arrives, a dedicated visitor management product may fit better than this. This setup is for a small office that wants a readable, searchable record.

When to get help

You can build all of this yourself in Microsoft 365. If you would rather have it built and tested for your team, I do that. A tracker like this is a fixed price: $5,000 for one, built in 2 weeks. See "What a SharePoint tracker costs to build". Bring one example of the problem to a free call.

Tell me what's still manual

I am Al Davies. I run 250 High Street LLC and build SharePoint trackers and Power Automate flows for operations teams. I work remotely. The first call is free, and I will not try to sell you anything.

See trackers I built: Tools I built

FAQ

Is there a free visitor log template for Excel?

Not as a file. Build the Visits list from the six columns above: Visitor name, Company, Host, Time in, Time out, Purpose.

Can I get a printable visitor log as a PDF or Word file?

This guide builds a list, not a PDF or Word file. Our advice, not a Microsoft rule: a paper book is fine for a tiny desk, but names are hard to search.

How do I create a visitor log in Excel?

This guide builds the log in SharePoint instead. To get the visits into Excel, open the Export menu on the list's command bar and choose Export to Excel.

How long should I keep visit records?

For as long as your own policy says. Ask your admin or office manager, set a date, and remove old rows and old form answers on that date. This guide does not state what any law requires.

Can a visitor sign in without a Microsoft account?

Yes, if the form is set to "Anyone can respond". Microsoft's help page says that choice lets anyone inside or outside your organization respond. Check with your admin whether your organization allows it.

Why does my sign-out flow find nothing?

The name in the sign-out form must match the Visitor name in the list exactly. Open the flow run history, select the run, and check the Filter Query and the rows that came back. Also check Top Count and Pagination.

Sources