# A visitor sign-in log in SharePoint

> For the full documentation index, see https://250highstreet.com/llms.txt

> Replace the paper sign-in book at the front desk with a Microsoft Form on a tablet or QR code that fills a SharePoint list. Includes sign-out options.

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:

- Names are unreadable, so you cannot tell who came in.
- Nobody signs out, so you do not know who is still in the building.
- The book is one copy in one place. If it is lost or full, the record is gone.
- Everyone who signs can read the names above theirs.

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:

- One Microsoft Form for the front desk tablet, with a few short questions.
- One SharePoint list named "Visits" with one column for each answer.
- One Power Automate flow that copies each answer into the list as a new row.

The form-to-list steps are in "[Save Microsoft Forms answers to a SharePoint list](/guides/microsoft-forms-to-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](/guides/people-see-only-their-own-items-sharepoint-list/)" and "[Keep one column private (like pay or notes) in a shared list](/guides/hide-a-column-from-some-people-sharepoint-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:

- Title (Single line of text). Rename it to "Visitor name". Store the name as the visitor typed it, first and last name in one box.
- Company (Single line of text).
- Host (Single line of text). This is the person being visited. A Person column is nicer, but a Person column does not accept a plain typed name. Text is the simple way to start.
- Time in (Date and time, with time shown). The flow fills this.
- Time out (Date and time, with time shown). Leave it empty at first. Sign-out fills it.
- Purpose (Choice). Add these choices: "1 Meeting", "2 Delivery", "3 Interview", "4 Contractor", "5 Other". Our advice, not a Microsoft rule: keep the numbers in front of each choice.

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:

- Anyone can respond. Anyone inside or outside your organization with the link can respond.
- Only people in my organization can respond.
- Specific people in my organization can respond.

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:

- Tablet. Open the form link in the tablet's browser and leave it on that page. After each submit, the form shows a thank-you screen. Set the tablet so that the screen goes back to a blank form for the next visitor. Test this before opening day.
- QR code. Print the QR code on a card at the desk. Visitors scan it with their own phone and fill in the form there. Keep the card where it cannot be taken.

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](/guides/microsoft-forms-to-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:

- Title: the first and last name answer.
- Company: the company answer.
- Host: the "who are you here to see" answer.
- Purpose: the reason answer.
- Time in: an expression. Microsoft's guidance page for Get items uses the Power Automate function utcNow() in a filter, so the function exists. In a Date and time field, use the expression utcNow() to stamp the time the flow ran. The time is in UTC, so check how it shows in your list and adjust the time zone setting of the site if needed.

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

- Keep a view named "In the building" and a view named "All visits, newest first". Sort the second one by Time in, newest at the top.
- Add a view for each month if the list grows large.
- Do not use a calculated column for "hours on site" that depends on today's date. A calculated column cannot use today's date, because SharePoint blocks \[Today\] in formulas. If a visit has both Time in and Time out, a calculated column on those two columns is fine.
- Name one person who owns the list and who deletes old rows on the date your policy says.

## 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](/guides/sharepoint-list-export-to-excel-not-working/)".

## What to avoid

- Asking for too much. Every extra question is data you must protect and delete.
- Showing the list to visitors. The tablet should show the form only.
- Skipping the privacy step. Decide who can open the list before the first visitor signs in.
- Relying on views to hide names. A view is not security.
- Treating the log as a safety record without a backup plan. If you need to know who is in the building during an emergency, a list on a phone may not load. Keep a printed copy for that use.
- Skipping Top Count and Pagination in a flow. Without them Get items returns only 100 rows by default, and an older visit is never found.
- Leaving test rows in the list.

## 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](/guides/what-a-sharepoint-tracker-costs/)". Bring one example of the problem to a free call.

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](/portfolio/)

## 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

- [Microsoft Support, Check and share your form results](https://support.microsoft.com/en-us/forms/check-and-share-your-form-results)
- [Microsoft Support, Choose who can fill out a form or quiz (Anyone can respond, Record name, One response per person)](https://support.microsoft.com/en-us/topic/choose-who-can-fill-out-a-form-or-quiz-c90c641e-6f88-45c5-9cb9-aca2b4083949)
- [Microsoft Support, Send a form and collect responses (link, QR code, embed)](https://support.microsoft.com/en-us/forms/send-a-form-and-collect-responses)
- [Microsoft Learn, Microsoft Forms connector reference](https://learn.microsoft.com/en-us/connectors/microsoftforms/)
- [Microsoft Learn, SharePoint connector reference (Get items, Update item)](https://learn.microsoft.com/en-us/connectors/sharepointonline/)
- [Microsoft Learn, Get items and Get files actions in Power Automate (Top Count, filter query, order by, Pagination)](https://learn.microsoft.com/en-us/sharepoint/dev/business-apps/power-automate/guidance/working-with-get-items-and-get-files)
- [Microsoft Learn, Workflow definition language functions reference (utcNow)](https://learn.microsoft.com/en-us/azure/logic-apps/workflow-definition-language-functions-reference#utcNow)
- [Microsoft Support, Export to Excel from SharePoint or Lists](https://support.microsoft.com/en-us/sharepoint/lists/data-and-lists/export-to-excel-from-sharepoint-or-lists)

## Related guides

- [Daycare attendance and pickup log in SharePoint](/guides/daycare-attendance-tracker-sharepoint/)
- [A key checkout log in SharePoint](/guides/key-checkout-log-sharepoint/)
- [Help desk ticket tracker in a SharePoint list](/guides/help-desk-tracker-sharepoint/)
- [PPE issue log: who got which gear, size and date](/guides/ppe-issue-log-sharepoint/)

Source: https://250highstreet.com/guides/visitor-log-sign-in-sharepoint/
