Webhook recipe · Google Forms

Google Forms → Chromoly: the free-forms route.

Google Forms is free, everywhere, and has no webhook button. The fix is a 12-line Apps Script that turns every submission into one - pasted once, working forever. Here's the whole thing, script included.

What people build with it

The recipe

In Chromoly, add a webhook trigger to the receiving workflow and copy its URL.

In your Google Form: ⋮ menu → Apps Script. Paste the script below, replacing the URL placeholder.

In the Apps Script editor: Triggers → Add trigger → run onFormSubmit, event type "On form submit". Authorize when prompted.

Submit a test response, map the fields in Chromoly once, and describe what happens next. Preview, deploy.

The script

function onFormSubmit(e) {
  var payload = {};
  e.response.getItemResponses().forEach(function(r) {
    payload[r.getItem().getTitle()] = r.getResponse();
  });
  payload.submittedAt = new Date().toISOString();
  UrlFetchApp.fetch("YOUR_CHROMOLY_WEBHOOK_URL", {
    method: "post",
    contentType: "application/json",
    payload: JSON.stringify(payload)
  });
}

Deliberately minimal: it sends every question and answer as-is and lets Chromoly own the logic - mapping, validation, routing. Logic in the script is logic nobody maintains.

Webhook triggers and their signing secrets are covered in the integrations documentation. Every received request - including rejected ones - appears in the workflow's run history, so the connection is debuggable from day one.

Questions

Why does Google Forms need a script when Typeform doesn't?

Google Forms has no built-in webhook feature - Apps Script is Google's answer. One paste of the 12 lines, then it behaves like any webhook source.

Is the Apps Script route reliable?

Reliable for real use - the triggers are Google infrastructure. Caveats: daily quotas (generous for form volumes), and script errors fail on Google's side - so keep the script minimal and check Chromoly's run history, which logs every received request.

Can I use this pattern for Google Sheets rows too?

Yes - the same approach fires on sheet edits or a schedule, sending new rows as webhooks. Useful for legacy sheets during a migration.

Build the system this feeds

Describe it in plain language - the webhook trigger is part of the description. Preview free before anything deploys.

Start free