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.

Deterministic Code
Gravity FormsGoogle SheetsSlack BotOperationsMarketingData SyncNotifications & AlertsLead Enrichment

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?
No. This workflow talks to Gravity Forms, Google Sheets, and Slack directly, so you do not need either of the official add-ons or any third-party Zap subscription.
Will it back-fill old entries the first time it runs?
No. The workflow only picks up entries created after it starts running. If you want history in the sheet, export your existing entries once from Gravity Forms and paste them in before turning the workflow on.
What happens if my WordPress site is down for a few minutes?
The next scheduled run will catch up. Because we filter by submission date and not just the last few entries, anything submitted while your site was unreachable still gets logged and announced once it comes back.
Can I send alerts to more than one Slack channel, or only on specific forms?
Yes. After the workflow is generated you can edit it to route different forms to different channels, mute certain forms entirely, or send a richer Block Kit message for high-priority submissions.
Will the Slack message expose every field the user submitted?
By default the Slack message is a compact one-liner with form name, submitter email, and a link to open the full entry in WordPress. The complete field data goes into the Google Sheet, so sensitive fields stay out of public channels unless you change the template.

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.