Free Apps Script trigger checker for Google Forms
Tell us your trigger's function name, event source, and event type. We tell you whether it'll actually fire on form submission. Catches the “On open vs On form submit” gotcha and every other common trigger mistake.
Open Apps Script → click the clock icon (Triggers) on the left sidebar. Read the three columns and pick them here.
onFormSubmit / From form / On form submit is the canonical setup for routing Google Form responses elsewhere. If submissions still aren't arriving at the destination, the trigger isn't the problem, check Apps Script's Executions log for errors, verify the webhook URL is still valid, and run /tools/slack-webhook-tester against it.
The trigger pitfalls we see most.
- Picked 'On open' instead of 'On form submit'
Easy to do, they're adjacent in the dropdown. 'On open' fires when someone opens the form in edit mode. 'On form submit' fires when someone submits a response. You want the second one.
- Picked 'From spreadsheet' instead of 'From form'
If your script is bound to the form (the most common setup. Apps Script opened via the form's three-dot menu), the source has to be 'From form'. 'From spreadsheet' is for scripts attached to the linked responses Sheet, different event payload, different trigger.
- Two triggers point at the same function
Re-running the installer without cleanup leaves duplicate triggers. Every submission fires onFormSubmit twice, and Slack gets two messages. The fix: in Triggers (clock icon left sidebar), delete the duplicate.
- Trigger silently disappeared after a script edit
Google sometimes wipes triggers on script changes. If submissions stop, open Triggers and re-run installFormBridge (or whatever your installer is called) to recreate it.
- Function name typo'd between handler and trigger
If the trigger says it should call 'onFormSubmit' but your script declares 'onformsubmit' (lowercase), nothing fires. Function names are case-sensitive. Check Triggers vs the function declaration line in your code.
Three settings, one correct combination
For an Apps Script that handles Google Form submissions and POSTs them to Slack (or anywhere else), the trigger has to look like this:
- Function: your handler function. Convention is
onFormSubmit. The name has to match a function that exists in the script; Apps Script is case-sensitive. - Event source:
From form. The script is bound to the form, so the form is the source. - Event type:
On form submit. The trigger fires on submission, not on form open or edit.
Anything else is either wrong for this use case or a smell. The checker above gives you a verdict on each combination; the “Common mistakes” section below covers the patterns that look right but aren't.
Where to look inside Apps Script
- Open the form's Apps Script editor, three-dot menu (top-right of the form) → Apps Script.
- On the left sidebar, click the clock icon labelled Triggers.
- Each row shows: Function · Deployment · Event source · Event type · Last run · Owner. Read the three columns this checker asks about and pick them in the form above.
- If Last runis blank for a trigger you expect to be firing, the handler hasn't run yet, submit a test response and refresh the Triggers page.
- If Last runshows a recent date but submissions still aren't arriving at Slack, the trigger's fine, look at the Executions log instead (left sidebar, line-graph icon).
The first-time consent dialog (and what to do when it doesn't appear)
Apps Script can't run handlers that touch new APIs until you've granted consent at least once. The first time you click Runon a function that uses UrlFetchApp, the consent dialog appears. People get stuck on it because the “unverified app” warning looks alarming. Here's the canonical path:
- 1. Function dropdown at the top of the editor → pick the installer function (
installFormBridgein our generated script). Click Run. - 2. The first dialog says “Authorization required”. Click Review permissions.
- 3. Pick the Google account that owns the form. (If you have multiple workspace accounts, pick the one that has edit access to the form.)
- 4. The next screen says “Google hasn't verified this app”. Click Advanced (small grey link).
- 5. Click Go to [Project name] (unsafe). The warning is because the script is yours, not Google's, it isn't a published app reviewed by Google. You can read every line in the editor before running.
- 6.Review the scopes the script is asking for (typically “Read, compose, send, and permanently delete all your email” → only if the script uses Gmail; for form-to-Slack scripts, look for “Connect to an external service” for UrlFetchApp and “See, edit, create, and delete all your Google Forms forms” for FormApp). Click Allow.
- 7. The function runs. Check the Executions log to confirm it completed successfully.
If the dialog never appears: Apps Script may have cached an old consent. Force-revoke at myaccount.google.com/permissions, find the Apps Script project, click Remove access. Then re-run the function , the dialog will re-prompt.
If you click Allow and nothing seems to happen: the run usually completes in the background. Open the Executions tab; a new row should appear within ~5 seconds with status Completed. If the row says Failed, paste the error into /tools/apps-script-error-decoder.
So why does this tool exist?
Our /tools/google-forms-to-slack-generator emits a script with an installFormBridgefunction that creates the trigger correctly. If you used the generator, you typically don't need this checker, the install function does the right thing.
But people don't always use the generator. They follow a half-finished tutorial and create the trigger by hand, or they edit an existing script and the trigger silently disappears, or they re-run the installer and end up with duplicates. This tool is for those moments, when you've got something configured and you want to know whether it's right before debugging deeper.
Frequently asked questions
What does this tool check?▾
It evaluates your Apps Script trigger's three settings, function name, event source, and event type, against the requirements for a Google Forms submission handler. If your config is correct, you get a green verdict. If anything's off, you get a red/amber verdict per problem with a one-line fix.
Where do I find these three settings?▾
Open your Google Form's Apps Script editor (three-dot menu inside the form → Apps Script). On the left sidebar, click the clock icon labelled 'Triggers'. Each row in the list shows you function, deployment, event source, and event type. The three columns this tool asks about are right there.
What's the correct setup?▾
Function = onFormSubmit (the handler function in your script). Event source = 'From form' (because the script is bound to the form). Event type = 'On form submit' (because you want the handler to fire when a response is submitted). Anything else is either wrong for this use case or a configuration smell.
Why does 'On open' show up so often as a mistake?▾
It's the dropdown item right above 'On form submit'. People click it by accident. 'On open' fires when the form is opened in editor view, useful for setting up form options dynamically but irrelevant for response handling. Submissions don't trigger it.
What if I bound the script to the responses Sheet instead of the form?▾
Then your trigger would be 'From spreadsheet' with event 'On form submit' (Sheets also exposes a form-submit event). It works, but the event payload is shaped differently (e.values is an array, not e.namedValues). Most tutorials assume the form binding; if you went the spreadsheet route, the code patterns from those tutorials won't compile-fit your event shape.
I see two triggers for the same function, is that a problem?▾
Yes. Every submission fires both, so Slack gets two messages, your CRM gets two leads, etc. Delete the duplicate in the Triggers list. This usually happens when you re-run the installer (installFormBridge / setupTrigger / similar) without first deleting the old trigger. A defensive installer clears existing triggers before creating a new one, the Apps Script generator we ship does this.
My trigger config looks right but submissions still don't reach Slack.▾
Trigger isn't the problem. Check the Apps Script Executions log (left sidebar, line-graph icon) for errors on recent submissions. If executions show success but Slack shows nothing, the webhook is the suspect, paste it into /tools/slack-webhook-tester. If executions are missing entirely, the trigger may have been wiped, re-run the installer.
Can I have more than one trigger?▾
Yes, different functions can be bound to different events. A single On-form-submit handler is the common case, but you might also have a daily time-driven cleanup job in the same script. Each trigger row is independent. Just make sure no two rows bind the same function to the same event.
Skip the trigger config entirely
RouteForms generates the Apps Script with the right installer. Paste it into your form, run installFormBridge once, done. Free for 30 responses a month.
Keep reading
Emits a script with installFormBridge, sets up the trigger correctly the first time, no guesswork.
If the trigger config is correct but submissions still aren't arriving, the troubleshooter walks you through the other failure modes.
If your trigger fires but Slack shows nothing, the webhook is the next suspect. The checker POSTs a test payload and reports the result.
All the real options for delivering Google Form responses to Slack, ranked by fit.