Email Form: Setting a Predefined Subject
Tags: expressionengine, eecms
Published: 2019-03-04 15:11:00

---
title: Email Form: Setting a Predefined Subject
published: true
date: 2019-03-04 15:11:00 UTC
tags: ExpressionEngine,eecms
canonical_url: https://u.expressionengine.com/article/email-form-setting-a-predefined-subject
cover_image: https://u.expressionengine.com/asset/article-images/email-predefined-subject.png
---

Sometimes you want to have control over the email “subject” text when it arrives in your inbox. Here’s one method I use.

## The problem

Using a free text field for the subject text means the customer has to think of suitable wording to describe their inquiry. Apart from the extra effort required to do that (and increased cognitive load), you can often end up with some pretty obscure words and phrases.

So what if we want to make things easy for the customer and give us uniform and useful subject text at the same time?

## A solution

Let’s say you have a contact form so customers can enquire about a specific product. Your product entries are stored in a channel so all the product data is available, it’s just a case of inserting them into your form.

To do this create a `select` field for the customer to choose the product they’re interested in. Using a channel entries tag inside the `form` tag you can populate the `option` fields with your product names/titles or other references.

## Example code

Here I’m adding:

- a custom `select` field for the Subject
- standard `input` fields for name and email address
- a couple of custom fields to collect information with hidden fields to enhance the email body text

```
{exp:email:contact_form user_recipients="no" recipients="admin@example.com" charset="utf-8"}
    {!-- subject field --}
    <p>
        <label for=“subject”>Subject</label><br>
        <select id=“subject” name=“subject”> 
        {!-- set a default value in case no option is selected --}
        <option value=“General enquiry”>Select a product</option>
        {!— channel entries tag to pull in product names to populate the options —}
        {ex:channel:entries channel=“my_product_channel” dynamic=“no”}
        <option value=“{title} enquiry”>{title}</option>
        {/exp:channel:entries}
        </select>
    </p>
    {!— set standards form fields for name and email —}
    <p>
        <label for=“name”>Name</label><br>
        <input type=“name” id=“name” name=“name” value="">
    </p>
    <p>
        <label for="from">Email address</label><br>
        <input type=“email” id="from" name="from" value="" required>
    </p>
    {!— add some custom form fields to collect information —}
    <p>
        <label for=“tel”>Telephone</label><br>
        <input type=“hidden” name=“message[]” value=“—-telephone—-“>
        <input type=“tel” id=“tel” name=“message[]” value="">
    </p>
    <p>
        <label for="message">Message</label><br>
        <input type=“hidden” name=“message[]” value=“—-message—-“>
        <textarea id="message" name="message[]” required></textarea>
    </p>
    <p>
        <button name="submit”>Submit</button>
    </p>
{/exp:email:contact_form}

```

## The outcome

The submitted email content might look something like this:

> From: John Doe  
> Email: johndoe@example.com  
> Subject: Blue ACME widget inquiry
> 
> —telephone—  
> 01234 567 890  
> —message—  
> Hello can you tell me if widgets are easy to clean?

## Radio buttons are easier to use than a select field?

No problem, it’s just a case of tweaking the subject field to suit, here’s an example:

```
<label for=“s1”>Subject</label>
<ul> 
    {!— set a default value in case no option is selected —}
    <li>
        <label for=“s1”><input type=“radio” id=“s1” name=“subject” value=“General enquiry” checked> Select a product</label>
    </li>
    {!— channel entries tag to pull in product names to populate the options —}
    {ex:channel:entries channel=“my_product_channel” dynamic=“no”}
    <li>
        <label for=“s{entry_id}”><input type=“radio” id=“s{entry_id}” name=“subject” value=“{title} enquiry”>{title}</label>
    </li>
    {/exp:channel:entries}
</ul>

```
--
Originally published by <a href="https://u.expressionengine.com/author/rob-allen">Rob Allen </a> at <a href="https://u.expressionengine.com/article/email-form-setting-a-predefined-subject">u.expressionengine.com</a>