Log every Gravity Forms submission to Google Sheets and Slack
Mirror every new Gravity Forms entry into a master Google Sheet and ping a Slack channel within five minutes, no add-ons required.
Build a deterministic code workflow that mirrors every new Gravity Forms entry into a Google Sheet and posts a Slack notification, so we have a queryable backup of every form submission plus a real-time team feed without paying for the official Gravity Forms add-ons.
Trigger: cron, every 5 minutes.
Inputs that should be configurable on the workflow (not hard-coded):
- spreadsheetId: the Google Sheet to write to. - sheetName: the tab inside that spreadsheet (default "Submissions"). - slackChannelId: the Slack channel ID to post notifications in. - formIds (optional): list of Gravity Forms form IDs to include. If empty, include all forms.
Step 1. Call Gravity Forms List Entries to fetch entries created after the last successful run. Use a high-water-mark stored in workflow state (the max date_created seen so far). On the very first run, use "now" as the starting point so we do not back-fill historical entries. Apply the formIds filter if it is set. Page through results until you have every new entry, ordered oldest-first so the Sheet stays in chronological order.
Step 2. For each new entry, call Google Sheets Append Values on {spreadsheetId} / {sheetName} to append one row with these columns, in order:
- entry_id - form_id - form_title - date_created (ISO 8601, UTC) - submitter_email (best effort: pull from the entry's email field, or leave blank) - source_url (the page the form was submitted from, if Gravity Forms recorded it) - payload_json (a JSON string of the remaining field values, keyed by Gravity Forms field ID, so nothing is lost)
Use USER_ENTERED value input option so dates and numbers render naturally. If the configured tab is empty (no header row), write the header row on first use.
Step 3. For each new entry, call Slack (slackbot, the bot integration) Send a Message to {slackChannelId} with a compact one-line summary, for example: "New {form_title} submission from {submitter_email} — <{wp_admin_entry_url}|View entry>". The wp_admin_entry_url should be {siteUrl}/wp-admin/admin.php?page=gf_entries&view=entry&id={entry_id}&lid={entry_id}, built from the Gravity Forms credential's siteUrl. If submitter_email is missing, fall back to "New {form_title} submission".
Order matters: append the Google Sheet row first, then send the Slack message. That way if Slack fails, we still have the durable record in Sheets and the workflow can be retried without producing duplicate sheet rows (advance the high-water-mark only after both steps for an entry succeed; if Slack fails for one entry, log it and keep going for the rest, but do not re-process already-appended entries on the next run).
Use these integrations: Gravity Forms for List Entries, Google Sheets for Append Values, and the Slack Bot integration (slackbot) for Send a Message. The notification is a workflow message, not a personal one, so it should come from the bot rather than the user OAuth Slack integration.
Additional information
What does this prompt do?
- Checks your WordPress site for new Gravity Forms entries every five minutes, so nothing slips through the cracks.
- Appends each new submission as a row in a Google Sheet you control, building a searchable, backed-up log of every form fill.
- Posts a short summary to a Slack channel with the form name, submitter email, and a link to open the entry in WordPress admin.
- Runs automatically on a schedule, no manual exports, no paid add-ons, and no leaving entries trapped inside WordPress.
What do I need to use this?
- A WordPress site running Gravity Forms, with REST API access enabled and an admin key you can paste in.
- A Google account with permission to edit the spreadsheet you want to use as your master log.
- A Slack workspace and the channel where you want the team to see new submission alerts.
How can I customize it?
- Change how often it runs. Five minutes is the default, but you can move it to every minute for near-real-time alerts or every hour for a calmer feed.
- Pick which spreadsheet and tab the entries land in, and rearrange the columns you care about (entry ID, form title, submitted at, submitter email, anything else).
- Swap the Slack channel, format the alert as a one-liner or a richer block, or filter so only specific forms trigger a notification.
Frequently asked questions
Do I need the paid Gravity Forms Google Sheets or Slack add-ons?
Will it back-fill old entries the first time it runs?
What happens if my WordPress site is down for a few minutes?
Can I send alerts to more than one Slack channel, or only on specific forms?
Will the Slack message expose every field the user submitted?
Stop losing form submissions inside WordPress.
Connect Gravity Forms, Google Sheets, and Slack once, and Geni mirrors every new entry into your master log and team channel within five minutes.