Zain Corporations Contact Forms lets you build forms with a simple tag syntax (the same idea as the classic form plugins) and adds the things most people end up needing anyway.
Familiar tags
[text* your-name], `[email* your-email]`, `[textarea your-message]`, `[select]`, `[radio]`, `[checkbox]`, `[number]`, `[date]`, `[tel]`, `[url]`, `[file]`, `[acceptance]`, `[submit]`. Insert fields with one click from the editor.
What you get out of the box
[file* cv allowed:pdf,docx limit:2mb]. Strict allow-list, executable types always blocked, files stored under random names in a protected folder, attached to the notification email and downloadable only by administrators.[text company show-if:topic=sales] shows a field only when another field has a given value. Hidden fields are skipped on the server too.[zain_form id="123"] shortcode.[text* name placeholder "Your name" class:wide] – add `*` to make a field required.
[select topic "Sales|sales" "Support|support"] – use `Label|value` for choices.
[number qty min:1 max:10], `[textarea msg maxlength:500]`, `[submit "Send"]`.
[text company show-if:topic=sales] – conditional field (use the choice *value*; separate several values with `|`). Put each conditional field in its own `<p>` or `<label>`.
[file* cv allowed:pdf,docx limit:2mb] – file upload (maximum 10 MB).
Use [field-name], [_all_fields], [_site_title], [_site_url], [_form_title], [_date] and [_time] in the email subject and body.
This plugin works fully on its own. It only contacts third parties if you turn the following features on:
Cloudflare Turnstile (optional)
If you enter a Turnstile site key and secret key under Zain Forms Settings, visitors’ browsers load a script from https://challenges.cloudflare.com/turnstile/v0/api.js, and the submitted Turnstile token (plus the visitor’s IP address) is sent to https://challenges.cloudflare.com/turnstile/v0/siteverify to confirm the visitor is human. Terms: https://www.cloudflare.com/website-terms/ – Privacy: https://www.cloudflare.com/privacypolicy/
Webhooks (optional)
If you enter a webhook URL on a form, each accepted submission (the field values, form name, submission ID, time and your site address) is sent to that URL. You decide which service receives the data. Nothing is sent unless you configure a URL.
Submissions are stored in your own WordPress database. The plugin does not store IP addresses or user agents. See “External services” above for the two optional features that contact other services. You can set an automatic deletion period in Zain Forms Settings.