---
title: "How to disable entry creation in Gravity Forms"
date: 2026-04-23
author: "GravityKit"
link: "https://www.gravitykit.com/docs/general-help/gravity-forms-disable-entry-creation/"
---

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](https://gist.github.com/zackkatz/5d6d4e1c129992e816d802bf1b1d3ff6) automatically deletes the entry and any uploaded files after the form submission has been fully processed.

## Installation

- Download the plugin ZIP from [this GitHub Gist](https://gist.github.com/zackkatz/5d6d4e1c129992e816d802bf1b1d3ff6) by clicking the **Download ZIP** button.
- In your WordPress admin, go to **Plugins**, then click **Add New Plugin**.
- Click **Upload Plugin** at the top of the page.
- Choose the ZIP file you downloaded and click **Install Now**.
- After installation, click **Activate Plugin**.

For more detailed instructions, see [Installing standalone plugins](https://www.gravitykit.com/docs/general-help/downloads/installing-standalone-plugins/).

## Configuration

- Open your form in the Gravity Forms editor.
- Click **Settings** in the form editor toolbar.
- Scroll down to the **Restrictions** section.
- Enable the **Disable Entry Creation** toggle.
- 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 );
```

```
/**
 * 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 );
```

```
/**
 * 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](https://gravitywiz.com/documentation/gravity-forms-disable-entry-creation/) from Gravity Wiz.