Separate integrations, often confused with each other. Each has one job.
The Form response sheet (Delegates, Google Form)
For an Intra MUN, registrations arrive in the Google Form's response sheet. Connect it once on Delegates, Google Form. When the site has a service account, share the sheet with the address it shows, as a Viewer: the sheet stays private. Without one, the sheet has to be open to anyone with the link, and the screen says so, because that exposes every name, phone and roll number in it.
After that, the routine is two buttons. Check new responses reads the sheet and shows what would change. Import reviewed responses applies exactly that. If the sheet is edited or re-sorted in between, Import refuses and asks you to check again, so nothing is imported that nobody looked at. Manage source is only for changing the link or the columns; changing the link replaces the connection rather than adding a second one.
A connection belongs to its event. Reusing the same Form for next year's event starts clean.
1. Live intake from a Google Form
A Google Form posts each response to the platform as it is submitted. The delegate record is created immediately, with the same validation the public form uses.
Rows that fail validation go to the import quarantine rather than being lost, so a badly answered form response is recoverable.
The connection is authenticated with a shared secret, so only your form can post.
2. The nightly re-sync
Once a day the platform re-reads every configured sheet and pushes it back through the same intake path.
This is a self-heal, not the primary route. If the live webhook was down for an hour, or somebody edited a row after submitting it, the nightly pass picks it up. It cannot create duplicates, because the email is still the identity.
3. The outbound mirror
Allotment and payment state is pushed out to a Google Sheet, so people who live in a spreadsheet can see the current state without an admin account.
Connected by an admin under Allotment, Google Sheet copy, with the Apps Script link. The same panel has Copy every seat again, which replays every seat (freed ones included) and says how many the sheet refused. It runs on allotment and on payment confirmation.
Careful
The mirror is one-way. Editing the Google Sheet does not change the platform. It is a display, not a source. Anyone treating it as editable will lose their edits at the next sync and will believe they changed something they did not.
Which one do I want?
| I want to... | Use |
|---|---|
| Let a partner delegation submit directly | The Google Form webhook |
| Load a spreadsheet somebody emailed me | The import wizard |
| Let non-admins see live allotment state | The outbound mirror |
| Recover rows a broken form connection missed | Nothing. The nightly sync already did it. |
Setting one up
The Apps Script that connects a form or a sheet lives with the codebase, and wiring it requires an admin because it involves the shared secret. See the intake pipeline for how it works underneath.