Check-In URL Configuration

The Check-In URL Configuration feature allows you to configure check-in stations using a specially formatted URL, eliminating the need for users to manually log in and configure each station. This is particularly useful for quickly setting up multiple kiosks or for situations where you want to ensure consistent configuration across stations.

Overview

Instead of manually entering credentials, kiosk name, profile, and camera settings at each check-in station, you can generate a single URL that includes all of this information. When a user navigates to this URL, the check-in station will automatically sign in with the provided credentials and apply the specified configuration.

URL Format

The check-in URL follows this format:

https://yourdatabase.tpsdb.com/CheckIn?name=KIOSK_NAME&profile=PROFILE_NAME&id=ENCODED_CREDENTIALS&cam=CAMERA_OPTION

Parameters:

name (required)

The unique name for this kiosk. This must match the name configured in your print server.

profile (required)

The name of the Check-In Profile to use. This must match an existing profile name (case sensitive).

id (required)

Base64-encoded credentials in the format username:password. The username must be for an account with the Checkin role.

cam (optional)

Camera configuration for QR code scanning. Options are:

  • none - No camera (default)

  • user - Front-facing camera

  • environment - Rear-facing camera

See also

Check-In Profiles for information on creating and managing profiles
Print Server for Check-In for information on configuring kiosk names in your print server

Creating Configuration URLs Manually

To create a configuration URL manually:

  1. Choose your kiosk name, profile name, and camera option

  2. Encode your credentials (username:password) using Base64 encoding

  3. Construct the URL with all parameters

Warning

The URL contains encoded credentials. Treat these URLs as sensitive information and do not share them publicly. Anyone with access to the URL can decode the credentials.

URL Generator Python Script

For convenience, you can use the following Python script as Special Content in TouchPoint to automatically generate configuration URLs with a user-friendly interface. This script provides a form where you can select your options and automatically generates the properly formatted URL.

Special Content Setup

  1. Go to Admin > Advanced > Special Content

  2. Create a new Special Content item

  3. Set the name (e.g., “Check-In URL Generator”)

  4. Paste the Python script below into the content area

  5. Save the Special Content

Python Script

# Pckgd
# Title: Check-in Link Generator
# Description: Kiosks can be configured to sign in automatically with credentials computed by this script.
# Updates from: GitHub/TenthPres/TouchPointScripts/CheckinLinkGenerator/CheckinLinkGenerator.py
# Author: James at Tenth

global model, q

# get profiles
profs = q.QuerySql("SELECT TOP 100 * FROM CheckinProfiles ORDER BY Name")

profileOpts = []
for p in profs:
    profileOpts.append('<option value="{0}">{1}</option>'.format(p.Name.lower(), p.Name))

# language=html
print('''

<div class="form-group">
<label class="control-label" for="cam">Camera</label>
<select class="form-control" data-bind="value: cam" name="cam">
<option value="none">None</option>
<option value="user">User / Front</option>
<option value="environment">Environment / Back</option>
</select>
</div>

<div class="form-group">
<label class="control-label" for="kioskName">Kiosk Name</label>
<input class="form-control" data-bind="value: name" name="kioskName" type="text" />
</div>

<div class="form-group">
<label class="control-label" for="profile">Profile</label>
<select class="form-control" data-bind="value: profile" name="profile">
%s
</select>
</div>

<div class="form-group">
<label class="control-label" for="user">Username</label>
<input class="form-control" data-bind="value: user" name="user" type="text" />
</div>

<div class="form-group">
<label class="control-label" for="pass">Password</label>
<input class="form-control" data-bind="value: pass" name="pass" type="password" />
</div>

<div class="form-group">
<label class="control-label" for="outputUrl">Configured Check-in URL</label>
<input class="form-control" data-bind="value: outputUrl, click: copyContent" name="outputUrl" type="text" />
</div>

      ''' % ('\n'.join(profileOpts)))


# language=html
print('''
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.5.0/knockout-min.js"></script>
<script>

function LinkGenModel(){
    this.host = "%s";
    this.cam = ko.observable("none");
    this.name = ko.observable("");
    this.profile = ko.observable("");
    this.user = ko.observable("");
    this.pass = ko.observable("");

    let model = this;

    this.outputUrl = ko.computed(function() {
        let url = model.host + "/CheckIn?";
        if (model.cam() && model.cam() !== "none") { // cam is optional
            url += "cam=" + encodeURIComponent(model.cam()) + "&";
        }
        if (!model.name()) {
            return ""
        } else {
            url += "name=" + encodeURIComponent(model.name()) + "&";
        }
        if (model.profile()) {
            url += "profile=" + encodeURIComponent(model.profile()) + "&";
        }
        if (!model.user() || !model.pass()) {
            return ""
        } else {
            let credentials = model.user() + ":" + model.pass();
            let encodedCreds = btoa(credentials);
            url += "id=" + encodeURIComponent(encodedCreds);
        }
        return url;
    });

    this.copyContent = function() {
        let copyText = model.outputUrl();
        if (!copyText) {
            return;
        }
        navigator.clipboard.writeText(copyText).then(function() {
            swal("Copied the URL to clipboard.");
        }, function(err) {
            console.warn("Could not copy text: ", err);
        });
    };
}

ko.applyBindings(new LinkGenModel());

</script>''' % (model.CmsHost))

Using the URL Generator

  1. Navigate to the Special Content item you created

  2. Select your camera option (None, User/Front, or Environment/Back)

  3. Enter the unique kiosk name

  4. Select the Check-In Profile from the dropdown

  5. Enter the username of an account with the Checkin role

  6. Enter the password for that account

  7. The configured URL will be automatically generated in the output field

  8. Click on the output URL field to copy it to your clipboard

Best Practices

Security Considerations

  • Create dedicated user accounts specifically for check-in kiosks rather than using personal accounts

  • Use different credentials for different kiosk groups (e.g., one account for children’s check-in, another for youth)

  • Regularly rotate credentials and update URLs if a device is lost or compromised

  • Store URLs securely and limit access to authorized personnel only

Configuration Management

  • Document which URL is used for each physical kiosk location

  • Create bookmarks or shortcuts on kiosk devices to make access easy

  • Test URLs before deploying to ensure proper configuration

  • If using browser kiosk mode, configure the shortcut with the full configuration URL

Browser Kiosk Mode with URL Configuration

If you are using Chrome in kiosk mode (see Using Check-In for details), you can combine kiosk mode with automatic URL configuration. In your Chrome shortcut properties, set the Target field to:

"C:\Program Files\Google\Chrome\Application\chrome.exe" --kiosk "https://mychurch.tpsdb.com/CheckIn?name=KIOSK_NAME&profile=PROFILE_NAME&id=ENCODED_CREDENTIALS"

Replace the URL parameters with your actual configuration values.

Warning

Do not use browser kiosk mode with Check-In profiles set to Continuous Admin or Scanning mode, as those modes do not display the numeric keypad needed to enter the logout code.

Troubleshooting

Station doesn’t log in automatically

  • Verify the username has the Checkin role

  • Check that credentials are correctly encoded

  • Ensure the profile name matches exactly (case sensitive)

  • Verify the account credentials are correct by manually logging in

Wrong profile loads

  • Profile names are case sensitive - check the exact capitalization

  • Ensure the profile name in the URL matches an existing profile

Camera doesn’t work

  • Verify the camera parameter is set correctly (user or environment)

  • Check browser permissions for camera access

  • Test the camera in a regular check-in session first

See also

Check-In Troubleshooting for additional troubleshooting information



Latest Update

12/01/2025

Initial documentation for URL configuration feature