A. Field types
| Page | Form | What to check |
|---|---|---|
| QA A01 | Text: common options | Label, placeholder, help text, starting value, read-only, sizes, help above, label left/hidden, widths, CSS class, URL prefill (?qa=hello). |
| QA A02 | Text: rules | Min length, masks, every pattern preset, custom pattern + message, allowed answers, blocked words, max words. Try a wrong value in each. |
| QA A03 | Paragraph | Textarea: character and word limits, min length, starting value, read-only, pattern, blocked words, counter. |
| QA A04 | Email: basic + type twice | Placeholder, required, ask-to-type-twice (try mismatching), read-only, starting value. |
| QA A05 | Email: allowed domains | Only dotance.com and example.org accepted. Try gmail.com (must be refused). |
| QA A06 | Email: blocked domains | mailinator.com and test.com are blocked. Try one (must be refused). |
| QA A07 | Email: block disposable + check MX | Disposable addresses (e.g. a@10minutemail.com) refused; a domain with no mail server refused. |
| QA A08 | Phone: plain | Free-text phone, required, placeholder, read-only, starting value. |
| QA A09 | Phone: international + country | Country picker with dial code; default country GB. Try a number without code. |
| QA A10 | Number: min / max | Min 1, max 100, required, placeholder, starting value, read-only. Try 0 and 101. |
| QA A11 | Number: decimals + thousands | Decimals 0, 2 and 4; thousands separator on and off. Entries show the formatting. |
| QA A12 | Website (URL) | Required, placeholder, starting value, read-only. Try "notaurl". |
| QA A13 | Date: limits + today | Min today, max +30 days (past/far dates refused), start today, formats. |
| QA A14 | Date: blocked days + date formats | No weekends, holidays 2026-12-25/26 blocked, every display format (d/m/Y, m/d/Y, d.m.Y, j F Y, site). |
| QA A15 | Time: 24 hour + step | 24-hour time, 15-minute step, required. Try 09:07. |
| QA A16 | Time: 12 hour + min/max | 12-hour (AM/PM) display, only 09:00 to 17:00. Try 18:00. |
| QA A17 | Name: first + last | Default two-part name; required; custom sub-labels. |
| QA A18 | Name: one box | Single full-name box. |
| QA A19 | Name: first, middle, last | Three boxes, custom labels incl. middle. |
| QA A20 | Address: all parts | Street, line 2, city, state, postcode, country. Required marks on street/city/country. |
| QA A21 | Address: some parts + default country | Only street/city/postcode/country; country is a list with GB preselected; inline layout; custom labels. |
| QA A22 | Address: stacked + US | Stacked layout, default country US. |
| QA A23 | Country: basic | Country dropdown, required, placeholder. |
| QA A24 | Country: searchable + default | Search box over the list; default value DE. |
| QA A25 | Slider: basic | Range 0-100, step 1, shows value, required. |
| QA A26 | Slider: ticks, prefix/suffix, default | Tick marks, hidden value, prefix "$", suffix "%", starting value 30. |
| QA A27 | Colour | Colour picker, starting colour, required. |
| QA A28 | Formatted text | Rich text box (bold, italic, lists, links). Limits, required, placeholder. |
| QA A29 | Dropdown: basic | Placeholder, required, pre-selected, help text. |
| QA A30 | Dropdown: other, search, shuffle | An "Other" option with text box (custom label), search box, shuffled order (refresh to see it change). |
| QA A31 | Dropdown: 40 options | Long list with search. |
| QA A32 | Multi-select: min / max | Pick several. Min 2, max 3 (try 1 and 4). Required. |
| QA A33 | Multi-select: pre-selected, search, other, shuffle | Starting choices, search box, Other text box, shuffle. |
| QA A34 | Radio: layouts | One per line, side by side, 2 columns, 3 columns. Required, pre-selected. |
| QA A35 | Radio: other + shuffle | Other with text box and custom label; shuffled order. |
| QA A36 | Checkboxes: layouts | Vertical, horizontal, 2 and 3 columns; required; pre-ticked. |
| QA A37 | Checkboxes: select all, min/max, other | Select-all link; min 1 / max 2; Other box; shuffle. |
| QA A38 | Image choices: single | Pick one picture; required; labels shown. |
| QA A39 | Image choices: multiple, large, no labels | Several allowed, large images, labels hidden. |
| QA A40 | Image choices: small | Small images, single choice, help text. |
| QA A41 | Checkbox grid | Rows with several ticks each; custom columns; required means a tick in every row. |
| QA A42 | Ranking | Put 4 options in order (Move up / Move down, keyboard). Required. |
| QA A43 | Rating: stars | 5 stars, required, help text. |
| QA A44 | Rating: hearts, numbers, smileys | Each icon style, different sizes. |
| QA A45 | Likert scale | Statements x scale; default and custom scale; required means every row answered. |
| QA A46 | NPS (0-10) | Net promoter score; custom low/high labels; required. |
| QA A47 | Consent | Checkbox with a text and a link (HTML allowed). Required (try without ticking). |
| QA A48 | Heading | Heading levels 2, 3 and 4 with fields between; heading has no value in entries. |
| QA A49 | Divider | A line between sections; no value in entries. |
| QA A50 | HTML block | Free HTML: paragraph, link, list, image; scripts must be stripped. |
| QA A51 | Hidden value | Hidden field with fixed value; one filled from ?src= in the address; value appears in the entry. |
| QA A52 | Prefill from logged-in account | Log in as admin and open: name/email/username fill automatically. As visitor: empty. |
| QA A53 | Every field type together | All 29 free field types on one page; layout, spacing, no overlaps; submit once. |
B. Conditional logic
| Page | Form | What to check |
|---|---|---|
| QA B01 | Logic: show when | Target is hidden at first; choose "Yes" in the source and it appears; "No" hides it again. Hidden required target does not block sending. |
| QA B02 | Logic: hide when | Target visible at first; choose "Yes" and it disappears (and is not required any more). |
| QA B03 | Logic: is | Type exactly "hello": target appears. Anything else: hidden. |
| QA B04 | Logic: is not | Target shows while the value is NOT "hello" (and not empty-or-any other). |
| QA B05 | Logic: contains | Type "concatenate": target appears (contains "cat"). |
| QA B06 | Logic: does not contain | Target shows unless the text contains "cat". |
| QA B07 | Logic: starts with | Target appears when text starts with "QA". |
| QA B08 | Logic: greater than | Number source: enter 18 or more and the target appears; 17 keeps it hidden. |
| QA B09 | Logic: less than | Number source: below 18 shows the target. |
| QA B10 | Logic: is empty | Target shows while the source is empty; disappears when you type. |
| QA B11 | Logic: is not empty | Target appears once the source has any text. |
| QA B12 | Logic: match ALL | Target needs BOTH rules: A = "yes" and B = "yes". |
| QA B13 | Logic: match ANY | Target appears when A = "yes" OR B = "yes". |
| QA B14 | Logic: chained | Step 1 "yes" shows step 2; step 2 "yes" shows step 3. Un-answering step 1 hides both. |
| QA B15 | Logic: rule on a hidden field | The hidden field is filled with "vip" via ?tier=vip; its value decides whether the VIP note shows. |
| QA B16 | Logic: on checkboxes | Ticking "Other" shows the extra box; ticking "Red" alone does not. |
| QA B17 | Logic: on dropdown + number + consent | Three rules (ANY): dropdown = Gold, number > 100, or consent ticked. |
| QA B18 | Logic: hidden fields are not saved | Fill the target, then change the source so it hides: the old value must not appear in the entry. |
C. Form settings
| Page | Form | What to check |
|---|---|---|
| QA C01 | Submit button: label + centre | Button text "Send it now" centred. |
| QA C02 | Submit button: right aligned | Button on the right, label "Go". |
| QA C03 | Submit button: default | Default label (Submit) and left alignment. |
| QA C04 | Labels: left of fields | Form-wide: labels beside the fields. |
| QA C05 | Labels: hidden | Form-wide: labels hidden (placeholders only); still read by screen readers. |
| QA C06 | Labels: per-field override | Form labels on top, but one field left and one hidden. |
| QA C07 | Required mark: asterisk | Default: red * after required labels. |
| QA C08 | Required mark: "(required)" | Required labels get the word (required). |
| QA C09 | Required mark: "(optional)" | Optional labels get (optional). |
| QA C10 | Check your answers | After Submit a summary appears with Edit / Confirm; nothing is sent until Confirm. |
| QA C11 | Test mode | Form works and shows the confirmation, but NOTHING is saved or emailed. Entries stay empty (seed submit made none). |
| QA C12 | CSS class on the form | Form element carries qa-form-class and qa-second; field also has its own class. |
| QA C13 | Design: colours, radius, button | Custom accent/button/text/background/border colours, radius 20, roomy spacing, full-width button. |
| QA C14 | Design: compact, square | Compact spacing, radius 0, orange accent. |
| QA C15 | Confirmation: message | After sending, this custom thank-you message replaces the form. |
| QA C16 | Confirmation: redirect | After sending you are sent to the "QA – All forms" page. |
| QA C17 | Confirmation: download button | Message plus a "Get the guide" button that downloads qa-sample.txt. |
| QA C18 | Conditional confirmations | Choose "Sales" -> sales message; "Support" -> support message; other -> default message. (Redirect variant for "Press" goes to the index page.) |
| QA C19 | Notification: basic | One email to the admin with all answers and a link to the entry. |
| QA C20 | Notifications: several + CC/BCC | Two notifications: admin (with CC) and a second one (BCC) with a shorter message. |
| QA C21 | Notification: only when conditions hold | Notification sends only when Topic = Urgent. Seeded with Urgent (email expected); Normal sends none. |
| QA C22 | Notification: switched off | The only notification is disabled: no email on submit. Turn it on in the builder to check. |
| QA C23 | Auto-reply to the visitor | Visitor gets a custom confirmation (to = their Email field). Seed email is usman@dotance.com. |
| QA C24 | Webhook | Sends entry JSON to example.com (a harmless test endpoint; it answers 405/200). Result shows in Settings -> Log (type Webhook). |
| QA C25 | Analytics events off | GA4 and Meta Pixel events switched OFF for this form (check page source: no events fire). |
| QA C26 | Data retention 30 days | Entries of this form are deleted after 30 days (setting visible in Settings card). |
| QA C27 | Email marketing connection | Mailchimp connection configured with a PLACEHOLDER list (no API key): the card works, nothing is sent; a failure is logged in Settings -> Log. |
| QA C28 | Who can fill in: logged-in only | Visitors see a notice with a login link; logged-in users see the form. (No seed entry: seed ran as a visitor and was refused, as expected.) |
| QA C29 | Who can fill in: some roles | Only Administrators can use the form; others get the message without a login link. |
| QA C30 | Schedule: not open yet | Opens 2030-01-01: shows "not open yet" message instead of the form. |
| QA C31 | Schedule: already closed | Closed since 2020-01-01: shows the closed message. |
| QA C32 | Limit: 1 entry then full | Max 1 entry: seed fills it, so the page shows the "full" message. |
| QA C33 | Schedule: open now + max 5 | Open window (2020 to 2035) and 5 entries max: form works. |
| QA C34 | Reply reminder | If the entry is still "New"/"Read" after 15 minutes, a reminder email is sent (WP-Cron: visit the site to trigger). |
| QA C35 | Merge tags in emails | Email uses {form_title}, {entry_id}, {date}, {site_name}, {page_url}, {field:ID}, {admin_email}, {all_fields}. |
| QA C36 | Everything on one form | Message confirmation, review step, own style, required mark text, notification + auto-reply + retention together. |
D. Real forms and starter templates
| Page | Form | What to check |
|---|---|---|
| QA D01 | Contact form | Real contact form: name, email, subject, message, privacy. Notification + auto-reply. |
| QA D02 | Quote request | Service, budget slider, timeline, details; logic: "Other" service asks for a description. |
| QA D03 | Booking request | Date (no weekends), time (9-5), party size, notes. |
| QA D04 | Customer survey | Likert, rating, NPS, checkbox grid, ranking, open comment. No email. |
| QA D05 | Event registration | Attendee details, ticket type, guests (logic), dietary needs, consent. |
| QA D06 | Job application | Personal data, role, experience, links, cover letter (file upload is Pro, so a link is used). |
| QA D07 | Newsletter signup | Email + optional name + consent; compact design. (Marketing connection is covered in C27.) |
| QA D08 | Feedback form | Smiley rating, category, comment; low rating shows a follow-up question. |
| QA D09 | Order form (no payment) | Pick items with numbers (payment is Pro), delivery address, delivery date, notes. |
| QA D10 | Template: Contact | Starter template "Contact" as the chooser makes it (Name, email and a message.) Check all fields, logic and the button. |
| QA D11 | Template: Quote request | Starter template "Quote request" as the chooser makes it (Service, budget and timeline for a proposal.) Check all fields, logic and the button. |
| QA D12 | Template: Newsletter | Starter template "Newsletter" as the chooser makes it (A short sign-up with clear consent.) Check all fields, logic and the button. |
| QA D13 | Template: Feedback | Starter template "Feedback" as the chooser makes it (A rating plus what went well and what didn’t.) Check all fields, logic and the button. |
| QA D14 | Template: Job inquiry | Starter template "Job inquiry" as the chooser makes it (Position, portfolio and a cover letter.) Check all fields, logic and the button. |
| QA D15 | Template: Event RSVP | Starter template "Event RSVP" as the chooser makes it (Attendance, guests, dietary needs and a note for the host.) Check all fields, logic and the button. |
| QA D16 | Template: Support request | Starter template "Support request" as the chooser makes it (Topic, urgency and the details, with a reply timer in your inbox.) Check all fields, logic and the button. |
| QA D17 | Template: Booking request | Starter template "Booking request" as the chooser makes it (Preferred date and time, party size and contact details.) Check all fields, logic and the button. |
E. Pro locks, admin screens, block, shortcode
| Page | Form | What to check |
|---|---|---|
| QA E01 | Pro lock: builder palette | Open the builder (new form). The PRO group in the field palette shows locked tiles with a PRO badge; clicking one opens an "X is a FillKite Pro feature" dialog; nothing breaks, the field is not added. |
| QA E02 | Pro lock: form settings card | In a form's Settings, the card "More settings with FillKite Pro" lists locked items; each click shows the Pro dialog; the card links to Pro info. |
| QA E03 | Pro lock: Pro features page | FillKite -> Pro features lists the Pro groups (Fields, Form types, Workflow, Connections and data); no locked code, only a list and the link to fillkite.com/pro. |
| QA E04 | Forms list | Search, filters (published/draft/trash), duplicate, trash/restore, entries count, copy shortcode, QR code, export forms to a file, starter-template chooser (all 8 templates). |
| QA E05 | Entries inbox | Filters (form, status, date), search, status changes (new/read/replied/won/spam/trash), star, notes, entry detail, CSV export, print, PDF, bulk actions. |
| QA E06 | Import: Contact Form 7 | Import screen lists "QA CF7 sample"; import it; report shows converted/skipped fields. (Sample is a stand-in CF7 post; CF7 itself is not installed.) |
| QA E07 | Import: WPForms | Import screen lists "QA WPForms sample"; import it; check the report. (Stand-in post; WPForms itself is not installed.) |
| QA E08 | Import: FillKite file | Export a form from Forms list (a .json file), then import that file again here. A copy appears in the Forms list. |
| QA E09 | Import: entries from CSV | Use qa/import-samples/qa-entries.csv: choose form "QA D01", map the columns, import; entries appear in the inbox marked imported. |
| QA E10 | Settings: Email | From name/address, default recipients, email layout, weekly summary; the self-test email. |
| QA E11 | Settings: Email sending | Sending method / SMTP fields render. DO NOT change SMTP on this site (see QA rules). |
| QA E12 | Settings: Spam protection | Threshold, honeypot, time trap, rate limit, disposable email block, Akismet, captcha provider list. No real keys. |
| QA E13 | Settings: Email marketing | Mailchimp and Brevo key fields render. No real keys. |
| QA E14 | Settings: Tracking | GA4 / Meta Pixel / UTM capture options. |
| QA E15 | Settings: Access | Who may manage forms/entries (roles). |
| QA E16 | Settings: Data | Retention defaults, delete-on-uninstall, export/erase tools. |
| QA E17 | Settings: Log (delivery log) | Delivery log with filters (All/Sent/Failed; Email/Webhook/Marketing). After the seeding it holds the sent notification emails, the C24 webhook and the C27 marketing failure. |
| QA E18 | Gutenberg block | This page uses the real FillKite Form block (form D01). Open it in the block editor too: the block shows a preview and a form picker. |
| QA E19 | Block in a popup | Block with "Open in a popup": a button "Contact us" opens the form in a modal (Esc closes, focus stays inside). |
| QA E20 | Shortcode in a popup | : button opens the form in a dialog. |
| QA E21 | Shortcode: unknown id | : must show a friendly notice (admins) / nothing harmful (visitors), no PHP error. |