Contact Form 7 tag syntax
January 4, 2008
This page explains the syntax of Contact Form 7’s tag. If you are not familiar with basic usage of Contact Form 7, please see the plugin’s homepage.
Contact Form 7 uses “tags” for two purposes; one is for form content and the other is for mail (to, from and subject fields and message body). Tags for form content has different syntax from ones for mail.
Example of a tag used in form content:
[email* your-email 60/200 "your-email@example.com"]
Example of a tag used in mail:
[your-email]
As seen in above examples, a tag for form content generally has more complicated syntax and many options. In the rest of this page, I write mainly about the syntax and options of form content tag.
Contents
- Base syntax of form content tag
- Tags for text field (
text,text*,emailandemail*) - Tags for text area (
textareaandtextarea*) - Tags for drop-down menu (
select) - Tags for checkboxes (
checkbox) - Tags for radio buttons (
radio) - Tags for CAPTCHA image (
captchac) - Tags for CAPTCHA text field (
captchar)
Base syntax of form content tag
A form content tag consists of a type, a name, options (optional) and values (optional).
Here is the syntax rule with my bogus BNF.
form content tag ="[" type name option* value* "]“type ="text" | "text*" | "email" | "email*" | "textarea" | "textarea*" | "select" | "checkbox" | "radio" | "captchac" | "captchar"name =- (same constraint as the
nameattribute of theinputelement)option =space [0-9A-Za-z:#_/-]+value =space ('"' string '"' | "'" string "'")
submit type tag is an exception. It doesn’t have name.
Tags for text field (text, text*, email and email*)
- Description
- A tag with type of
text,text*,emailoremail*is replaced by a text input field. The difference among the four types is how input text is validated.text*andemail*suppose inputs are not blank, so they are used for required fields.emailandemail*suppose inputs are email address. - Example
[text your-name 40/100 "Your Name"]
[email* your-email 40/ class:email akismet:author_email]- Options
-
(size) /(maxlength)Field size and max length. You can omit one of them, like 40/or/100.id:(id)idattribute value of theinputelement.class:(class)classattribute value of theinputelement. To set two or more classes, you can use multipleclass:option, like[text your-text class:y2008 class:m01 class:d01].akismet:author
akismet:author_url
akismet:author_emailOptions for using Akismet (spam filter). See here. - Values
- A tag with this type can accept only one value and the value is used as default input value.
Tags for text area (textarea and textarea*)
- Description
-
A tag with type of
textareaortextarea*is replaced by a text area.textarea*supposes input is not blank, so it is used for required fields. Whiletextareaaccepts blank input. - Example
[textarea your-message 40x10]- Options
-
(cols) x(rows)Columns (width) and rows (height) of text area. You can omit one of them, like 40xorx10id:(id)idattribute value of thetextareaelement.class:(class)classattribute value of thetextareaelement. To set two or more classes, you can use multipleclass:option, like[textarea your-text class:y2008 class:m01 class:d01]. - Values
- A tag with this type can accept only one value and the value is used as default input value.
Tags for drop-down menu (select)
- Description
- A tag with
selecttype is replaced by a drop-down menu and its options. - Example
[select your-menu "A" "B" "C"]- Options
-
multipleMake drop-down menu multi-selectable. include_blankInsert a blank item “—” into the top of options of this drop-down menu. default:(num)Pre-selected options. The integer following default:is the position in the order of items. 1 is the first one. If you want to make two or more items selected, joint integers with _(underbar), asdefault:1_2_3.id:(id)idattribute value of theselectelement.class:(class)classattribute value of theselectelement. To set two or more classes, you can use multipleclass:option, like[select your-menu class:y2008 class:m01 class:d01]. - Values
- A tag with this type can accept multiple values. The values are used as options of the selection.
Tags for checkboxes (checkbox)
- Description
- A tag with
checkboxtype is replaced by a set of checkboxes. - Example
[checkbox your-checkbox "a" "b" "c"]- Options
-
exclusiveMake checkboxes exclusive. I mean, when you check a checkbox in the set, others are unchecked, so zero checked or one checked. This is a JavaScript gimmick, so JavaScript on client side is needed. default:(num)Pre-checked options. The integer following default:is the position in the order of items. 1 is the first one. If you want to make two or more items selected, joint integers with _(underbar), asdefault:1_2_3.id:(id)idattribute value of thespanelement surrounding checkboxes.class:(class)classattribute value of thespanelement surrounding checkboxes. To set two or more classes, you can use multipleclass:option, like[checkbox your-checkbox class:y2008 class:m01 class:d01]. - Values
- A tag with this type can accept multiple values. The values are used as checkbox values.
Tags for radio buttons (radio)
- Description
- A tag with
radiotype is replaced by a set of radio buttons. - Example
[radio your-radio "a" "b" "c"]- Options
-
default:(num)Pre-checked options. The integer following default:is the position in the order of items. 1 is the first one.id:(id)idattribute value of thespanelement surrounding radio buttons.class:(class)classattribute value of thespanelement surrounding radio buttons. To set two or more classes, you can use multipleclass:option, like[radio your-radio class:y2008 class:m01 class:d01]. - Values
- A tag with this type can accept multiple values. The values are used as radio button values.
Tags for CAPTCHA image (captchac)
- Description
- A tag with
captchactype is replaced by a CAPTCHA image. See also how to use CAPTCHA. - Example
[captchac your-captcha size:s fg:#ffffff bg:#000000]- Options
-
size:(sml)Image size. Only size:s(60×20),size:m(72×24) andsize:l(84×28) are available.fg:#(hex)Foreground color of the CAPTCHA image. Put RGB color code in hex format after fg:#asfg:#ff0000bg:#(hex)Background color of the CAPTCHA image. Put RGB color code in hex format after bg:#asbg:#ff0000id:(id)idattribute value of theimgelement for the CAPTCHA image.class:(class)classattribute value of theimgelement for the CAPTCHA image. To set two or more classes, you can use multipleclass:option, like[captchac your-captcha class:y2008 class:m01 class:d01]. - Values
- A tag with this type can not accept values.
Tags for CAPTCHA text field (captchar)
- Description
- A tag with
captchartype is replaced by a CAPTCHA text input field. See also how to use CAPTCHA. - Example
[captchar your-captcha 40/100]- Options
-
(size) /(maxlength)Field size and max length. You can omit one of them, like 40/or/100.id:(id)idattribute value of theinputelement.class:(class)classattribute value of theinputelement. To set two or more classes, you can use multipleclass:option, like[captchar your-captcha class:y2008 class:m01 class:d01]. - Values
- A tag with this type can accept only one value and the value is used as default input value.

February 1, 2008 at 2:42 am
Hi what a fantastic plugin!
Can I give to “Radio Button” a “required field” option!
Thanks a lot
February 1, 2008 at 2:43 am
sorry for my bad english… it was a question…
February 1, 2008 at 11:30 am
Tommaso,
So far the plugin don’t offer such option. Hmm… but why do you need radio buttons as required? From my perspective, originally radio button is “required”, always one of the choices is submitted. … but, it may be interesting. Please tell me your detailed opinion about this. I’ll consider it. Thanks.
February 1, 2008 at 5:48 pm
Hi…
thanks for your fast answer, I wanted to use the “Radio Button” to confirm some terms of a condition or contract and to give the consent to the treatment of the personal data.
I use an iframe to load the document and then I wanted to position the “Radio” in this way:
“(*)Accept () don’t Accept”
I have succeeded to inserie the check on the first (*)Accept, but I should do so that if someone click on () it don’t Accept, the form give me an error message.
I have also tried to use the the attribute “onclick”..can it be a solution?
Make me know if you have some suggestion or also alternative… I am not really a magician of the code!
You still compliment for the plugin.. really the best plugin of the kind!
Thank You
Tommaso
February 11, 2008 at 3:16 pm
How can I specify a subject? Or at least add a few words to the beginning of the subject so that I know that this email is from the website. like “From the website…”
This is a great plugin! Thanks for your work on this.
~w
February 11, 2008 at 9:13 pm
Wayne,
You can do it just by editting Subject field.
You can find Contact Form 7’s admin page on [Options] - [Contact Form 7].
Thanks.
February 28, 2008 at 6:27 pm
how can I put value like this:
Training
Services
Other
btw, great plugin! thanxz
February 28, 2008 at 8:21 pm
Hariadi,
Some tags deleted? Sorry.
I guess you were mentioning about dropdown menu or radio buttons. You can do it by using tag like
[select yourtagname "Training" "Services" "Other"]or[radio yourtagname "Training" "Services" "Other"]. See this page if you do not yet.March 5, 2008 at 5:49 pm
TQ..
for now I using this [select yourtagname "Training" "Services" "Other"] and it works
just in case I want to change input value. example..
input value=”01″ : Training
input value=”02″ : Services
input value=”03″ : Other
March 8, 2008 at 6:17 pm
Hariadi,
ok, I got your point. But unfortunately, it’s not supported so far.
I’ve thought ever that there are few users need the function like you wrote. Could you tell me why you need it? Just for my future reference.
March 10, 2008 at 5:46 pm
Ok.. For example:
input value=”trainee″ : Training
input value=”serv″ : Services
input value=”helpdesk″ : Other
..and I change:
$mail_bcc = preg_replace_callback($regex, $callback, $contact_form['mail']['recipient']);
..using switch()
switch($mail_subject) {
case “trainee” :
$mail_recipient = $mail_subject . ‘@example.com’;
$mail_subject = $mail_subject . ‘: Training’;
break;
case “serv” :
$mail_recipient = $mail_subject . ‘@example.com’;
$mail_subject = $mail_subject . ‘: Services’;
break;
case “helpdesk” :
$mail_recipient = $mail_subject . ‘@example.com’;
$mail_subject = $mail_subject . ‘: Helpdesk’;
break;
}
.. so, when people select Training so email go to trainee@example.com with subject: Training and BCC to admin..
hehe.. don’t take it so hard, just for example
March 10, 2008 at 11:45 pm
Hariadi,
Thanks, I got it, but,,, why don’t you chenge
<select>in HTML as well??? You can find the generating code inform_element_replace_callback()in wp-contact-form-7.php. Good luck.March 12, 2008 at 11:04 pm
Is it possible to place a “Contact Form 7″ within a template as in “page.php”.
Thanks.
March 14, 2008 at 12:24 am
hehe.. coz i’m PHP newbie.. but I will try. make it to send multi user email by subject..
March 14, 2008 at 9:02 am
What I did to make it happen:
Copied the HTML-output into a php file that I included into page.php so al my static pages have the same form.
Made the subject input dynamic by echoing the title of the page.
Great plugin!!
March 18, 2008 at 4:34 am
Hi, great script - just what i was looking for.
Just wondering if its possible to add a class & id to the submit button & the actual form itself?
Thanks :)
March 20, 2008 at 1:48 pm
lee,
I have a plan to add a function to add class and id to submit button in version 1.8. But, to form itself, I have no plan so far. I want to do it if it can be done with simply way.
March 21, 2008 at 4:33 am
Thanks miyoshi. I look forward to 1.8 :)
March 24, 2008 at 12:22 am
Cool plugin, just one thing, it there a way to add an image as a background? managed to do this with my own css using you classes above? BUT i cant get rid of the Value=send on the submit button? Where can i remove it from your code?
March 29, 2008 at 5:39 pm
abi,
Use your CSS and this tag:
[submit " "]April 8, 2008 at 7:22 am
your plugin looks the business! but is there anyway users can upload an image to the form as well?
cheers
April 10, 2008 at 12:13 pm
dave,
Contact Form 7 hasn’t implemented it yet, and I have no plan so far. I’m not sure how many users need the feature. I want to keep it simple.
April 26, 2008 at 8:35 pm
Hi…
Thanks for sharing your contact form plugin. It;s lovely.
I am using it here http://pratibimb.pubwebhost.com/?page_id=3
How can I make Your message and Captcha fields as REQUIRED?
If there is no message written or captcha written, the form shouldn’t be validated.
Please help.
April 27, 2008 at 8:59 pm
abhijit, I saw your page with Firefox 2, and didn’t see any trouble. It seems working correctly. Could you explain what issue you are seeing?