Overview

The workshop has two attendance paths:

PathPurposeRequires
Live check-in (sign-in.html) Primary — records attendance in D1, links to roster Cloudflare Pages, D1, trainee site login (token + email)
Fallback form (Google Form) Backup — attendance only when live path is broken Google Form you create; optional embed on sign-in-fallback.html
Fallback does not replace site login Trainees still need Workshop Access (workshop token + roster email) for My Workshop, lab credentials, and Story/Modules. The Google Form is attendance only.

When to use fallback

Switch to the Google Form if any of these block live check-in at the door:

  • Check-in page errors after trainees are logged in (“Check-in failed”, network errors)
  • Cloudflare / D1 APIs down (Attendance page in trainer tools also fails)
  • Wrong site host (Vercel mirror — content preview only; trainees need Cloudflare for login, My Workshop, and check-in; if Cloudflare is unreachable, use form)
  • Check-in window logic broken and you cannot fix it in time (still try Open check-in on Attendance first)

Do not use fallback if the only issue is a trainee who forgot to log in — have them complete Workshop Access first, then retry live check-in.

Quick decision

  1. Confirm trainee used Cloudflare URL (not Vercel mirror — Vercel is token-only preview).
  2. Confirm trainee completed Workshop Access (token + roster email).
  3. Open trainer Attendance — can you load the cohort?
  4. Try live check-in yourself on sign-in.html?cohort=….
  5. If still broken → announce fallback form (section below).

One-time setup (before training day)

Complete once per workshop series; store links in this guide and your morning-of checklist.

1. Create the Google Form

  • Title: e.g. MHP DE Workshop — Attendance Check-In
  • Required fields: Full name, Email (workshop roster email)
  • Optional: Department / company, Cohort (dropdown with your YYYYMMDD-slug ids)
  • Turn off “Limit to 1 response” if trainees may retry; collect email for deduplication in Sheets

2. Note your form URLs

From Google Form → Send → link icon:

  • Responder URL (share at door): paste your forms.gle or docs.google.com/forms/…/viewform link
  • Responses spreadsheet: Form → Responses → link to Sheets

3. Embed on the workshop site (optional but recommended)

  1. In Google Form → Send → <> embed → copy iframe src URL
  2. In the repo, edit sign-in-fallback.qmd — replace YOUR_FORM_EMBED_URL in the iframe
  3. Deploy to Cloudflare Pages
  4. Trainees can then use sign-in-fallback.html on the main site even if the embed fails (share direct form URL as backup).

    Pre-class checklist

    • Google Form created and tested (submit one test row)
    • Responder URL saved below and in facilitator channel
    • sign-in-fallback.qmd embed updated and deployed
    • QR code for form URL or fallback page ready for projector
    • Co-trainer knows to export Sheets if live check-in stays down

Training day — switch to fallback (~5 minutes)

  1. Announce clearly: “Integrated check-in is temporarily down — use the backup form for attendance only. You still need your normal site login for My Workshop.”
  2. Share the fallback (pick one or more):
    • Projector: QR to sign-in-fallback.html or direct Google Form
    • Chat / email: same link + cohort id
    • Read URL aloud for anyone without phone camera
  3. Keep live paths open for labs: Workshop Access, My Workshop, and content gates are separate — only attendance moves to Google Form.
  4. Monitor the room: Co-trainer watches Form responses or asks names orally for anyone who cannot submit.
  5. Do not delete partial D1 check-ins from earlier — merge with Form export later.

What to tell trainees

Short script “Please submit the backup attendance form with your registered email. Then open My Workshop the usual way — workshop token and your roster email on the Cloudflare site — to copy your ATTENDEE_ID before Module 1.”
TaskTool
Record attendance (fallback day)Google Form
Site loginWorkshop Access on any page
Copy ATTENDEE_ID & secretsMy Workshop
Check-in when live system worksWorkshop Check-In page

URLs to share

Replace YYYYMMDD-slug with your cohort id from Trainer & Trainee management.

Cloudflare site (required for live APIs):
https://mhp-data-engineer-2026.pages.dev/

Live check-in (primary):
https://mhp-data-engineer-2026.pages.dev/sign-in.html?cohort=YYYYMMDD-slug

Fallback page on site (Google Form embed):
https://mhp-data-engineer-2026.pages.dev/sign-in-fallback.html

Direct Google Form (if iframe blank):
your form viewform URL

Trainer attendance (verify / export D1):
https://mhp-data-engineer-2026.pages.dev/trainer/attendance.html

After class — reconcile attendance

  1. Export Google Form responses to Sheets (Form → Responses → Download CSV or open linked Sheet).
  2. Export D1 attendance from trainer AttendanceExport CSV (includes anyone who checked in live before the outage).
  3. Merge by email (and name as secondary check). Deduplicate same-day duplicates.
  4. Store final attendance list per your client / MHP process (HR, learning portal, etc.).
  5. Note in facilitator debrief: fallback used, time window, approximate count from Form vs roster size.
No automatic sync Fallback responses do not write to D1. Reconciliation is manual unless you build a separate import process.

Troubleshooting

SymptomLikely causeAction
“Sign in first” on check-in No Workshop Access session Trainee completes site login; retry live check-in
“Check-in is not open” Window closed in Attendance Trainer → Attendance → Open check-in
API errors on Cloudflare only D1 / env misconfiguration Use fallback; fix env after class
Works on facilitator laptop, not room Wi‑Fi Corporate firewall / DNS Fallback form + mobile hotspot test
Blank iframe on fallback page Embed URL not configured Share direct Google Form link
My Workshop empty / errors Separate from attendance Verify roster email on login; trainer checks roster in D1

Return to live check-in

When APIs work again:

  1. Test yourself: login → sign-in.html?cohort=… → success screen.
  2. Announce: new arrivals use live check-in; Form submissions already counted.
  3. Trainer Attendance page should show new check-ins in real time.

Related: sign-in-fallback.html · Attendance management · Trainer & Trainee management · Design: development-docs/01_system-design/Attendance_Sign_In_System_Design.md