How to disable entry creation in Gravity Forms

Sometimes you want Gravity Forms to process a submission (send notifications, run add-on feeds) but not store the entry in the database. This is useful for privacy-focused forms, contact forms, or file upload forms where you only need the notification.

Our free GravityKit - Disable Entry Creation plugin automatically deletes the entry and any uploaded files after the form submission has been fully processed.

Installation

  1. Download the plugin ZIP from this GitHub Gist by clicking the Download ZIP button.
  2. In your WordPress admin, go to Plugins, then click Add New Plugin.
  3. Click Upload Plugin at the top of the page.
  4. Choose the ZIP file you downloaded and click Install Now.
  5. After installation, click Activate Plugin.

For more detailed instructions, see Installing standalone plugins.

Configuration

  1. Open your form in the Gravity Forms editor.
  2. Click Settings in the form editor toolbar.
  3. Scroll down to the Restrictions section.
  4. Enable the Disable Entry Creation toggle.
  5. Save your form settings.

How it works

  • After a form is submitted, all normal processing happens first: notifications are sent, add-on feeds are executed, and GravityExport file uploads are processed.
  • Once processing is complete, the entry and any uploaded files are deleted.
  • This runs at priority 999 on gform_after_submission , so other plugins have a chance to process the entry before it is removed.

Note about asynchronous feeds

Some Gravity Forms add-on feeds use asynchronous (background) processing, which means they run in a separate request after the form submission completes. Since the entry is deleted during the submission request, asynchronous feeds that rely on the entry may not work as expected.

If you use add-ons with asynchronous feeds, you can disable async processing for a specific add-on using the gform_is_feed_asynchronous  filter:

/**
 * Forces Slack feeds to process synchronously so they complete before entry deletion.
 *
 * @param bool   $is_async Whether the feed is processed asynchronously.
 * @param array  $feed     The feed being processed.
 * @param string $slug     The add-on slug.
 *
 * @return bool
 */
add_filter( 'gform_is_feed_asynchronous', function ( $is_async, $feed, $slug ) {
    if ( $slug === 'gravityformsslack' ) {
        return false;
    }
    return $is_async;
}, 10, 3 );

Developer hook

Use the gk/snippet/disable-entry-creation/should-delete  filter to conditionally prevent deletion:

/**
 * Prevents entry deletion for a specific form.
 *
 * @param bool  $should_delete Whether to delete the entry. Default true.
 * @param array $entry         The Entry object.
 * @param array $form          The Form object.
 *
 * @return bool
 */
add_filter( 'gk/snippet/disable-entry-creation/should-delete', function ( $should_delete, $entry, $form ) {
    // Don't delete entries from form ID 5
    if ( (int) $form['id'] === 5 ) {
        return false;
    }
    return $should_delete;
}, 10, 3 );

Need more advanced functionality?

If you need conditional logic support (e.g., only delete entries when a specific field value is selected), we recommend GP Disable Entry Creation from Gravity Wiz.

Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.

Still need help? Contact Us Contact Us