> For the complete documentation index, see [llms.txt](https://docs.acpt.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.acpt.io/forms/manage-forms/general-settings.md).

# General settings

## Core fields

| Field                          | Required | Description                                                                                                                   |
| ------------------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------- |
| **Name**                       | Yes      | Machine-readable identifier for the form. Used internally and in shortcodes. Must be alphanumeric.                            |
| **Label**                      | No       | Human-readable title shown above the form on the front end. Falls back to **Name** when left blank.                           |
| **Key**                        | —        | Auto-generated 8-character random string. Acts as a stable shortcode handle; can be regenerated without affecting saved data. |
| **Action**                     | Yes      | Determines what happens when the form is submitted (see below).                                                               |
| **Successful outcome message** | No       | Text shown in a green alert on successful submission. Defaults to `"The form was successfully submitted"`.                    |
| **Redirect after submission**  | No       | URL to redirect to after a successful submission. Leave blank to stay on the same page.                                       |

***

## Form actions

The action you choose determines which additional fields appear and how the submitted data is processed.

### Email

Sends the submitted data to one or more recipients via email. Configure recipients, subject, body, and template on the [Email settings](/forms/manage-forms/email-settings.md) tab.

No further fields appear here; all email configuration lives on its own settings tab.

### Ajax

Runs a custom JavaScript handler after the form is submitted via AJAX.

**Required field — Ajax action:** the name of the WordPress [`wp_ajax_{action}`](https://developer.wordpress.org/reference/hooks/wp_ajax_action/) hook to call on the server side.

**Optional field — Ajax handling:** JavaScript executed after the AJAX call resolves. The `data` variable holds the server's response:

```javascript
// data contains the Promise response value from the server
console.log(data);
```

### Custom

Posts the form to a custom URL instead of the default ACPT handler.

**Required fields:**

* **Custom action** — the target URL.
* **Method** — `POST` or `GET`.

### Post Management (Fill Meta)

Saves submitted values directly into ACPT meta fields attached to a post, term, or user.

No additional code is needed. Configure the target in the **Meta fields mapping** section (see below).

### Fill Table (CCT)

Inserts or updates a record in a [Custom Content Type](/custom-content-types/custom-content-types.md) table directly from the front end.

**Required field — Table to fill:** the CCT table that will receive the submitted data.

**Optional field — Record:** pin the form to a specific existing record. When set, submitting the form always updates that record. When left blank, a new record is inserted on each submission unless a record ID is supplied at runtime via the shortcode.

You can pass a record ID dynamically at render time using the [`record_id` shortcode attribute](/developers/shortcodes/acpt_form.md):

```
[acpt_form id="e45b2639" record_id="49"]
```

**Record ID resolution priority** (highest → lowest):

1. An `ID` field present in the submitted form data.
2. The **Record** setting saved in the form's general settings.
3. The `record_id` shortcode attribute.

If none of the above resolves to a record, a new row is inserted.

See [Edit an existing CCT record](/forms/examples-of-form-usage/edit-an-existing-cct-record.md) for a complete walkthrough.

### PHP

Executes a custom PHP snippet after submission. ACPT overwrites `$_POST` and `$_FILES` with sanitized form data before running your code:

```php
<?php
// $_POST and $_FILES contain form data already sanitized
// by HandleFormSubmissionCommand
$data  = $_POST;
$files = $_FILES;
```

***

## Meta fields mapping

Regardless of the action, this section lets you bind meta field groups to the form builder so that their fields are available as form inputs.

1. **Belongs to** — choose whether to bind meta fields from a **Custom Post Type**, a **Taxonomy**, an **Option page**, or **Users**.
2. **Find** — select the specific post type, taxonomy, or option page.
3. **Target** *(optional)* — pin the form to a specific post, term, page, or user. When left blank, ACPT creates a new record on submission (for Post Management action) or writes to the current context.
4. **Post status** *(Post Management / CPT only)* — the WordPress status to assign when a new post is created (e.g. `publish`, `draft`).

After choosing the source, the list of available meta fields appears. Check the ones you want to expose in the form builder.

Click **Save** to persist the configuration, then open the **Manage** link on the forms list to open the [form builder](/forms/the-form-builder.md) and arrange the selected fields.
