Search
Enter at least two characters without personal information.

    LibraryArticles & FAQ Your projectRequest a quote
    LanguageEN
    Practical guides

    Design a contact form that genuinely helps

    A useful form lets someone explain a request without unnecessary effort and understand what follows. Judge it by the complete journey, not the button click.

    Go to the method

    Illustration of website project planning: Design a contact form that genuinely helps
    Read the journey

    Follow an enquiry beyond the Send button

    This diagram separates four checks. Storage and notification may use different systems: the visible message should match what has actually been confirmed.

    1. Input

      People understand the fields and can correct a mistake.

    2. Server receipt

      The website validates data and confirms the outcome of the agreed operation.

    3. Internal tracking

      The enquiry exists in the agreed handling channel.

    4. Ownership

      A responsible person can find the enquiry and act on it.

    Fictional teaching scenarios to adapt to your system. This page performs no operation on your website.

    Open the situation you want to check

    The site reports success, but nothing arrives
    What is known
    An on-screen message alone does not prove a person received the enquiry.
    The next check
    Match a test enquiry to its record, any notification and the channel actually monitored.
    Correcting one field loses all the text
    What is known
    An input error blocks the task; it need not require starting everything again.
    The next check
    Test a recoverable error and inspect retained information, field-related feedback and keyboard recovery.
    The outcome is uncertain after an interruption
    What is known
    Missing confirmation alone does not establish whether the enquiry was recorded.
    The next check
    Define a way to check status instead of arbitrarily announcing success or failure.
    The same enquiry is resent after a delay
    What is known
    In this fictional contract, two identical submissions labelled TEST-A must refer to one enquiry.
    The next check
    Replay both submissions in the test copy and reconcile the created record and notifications. The service must define this property; the button does not guarantee it.
    Evidence to retain
    TEST-A, test chronology, enquiry and notification counts; no real personal data.

    Technical reference : W3C WAI · User Notification · Consulted .

    Start with enquiries and how they are handled

    Group common requests: questions, quotations, support and proposals. Decide what information is essential to route each one and what can be requested in the reply. A mandatory budget field, for example, may exclude someone still trying to define the scope; its purpose should be clear.

    Explain who will receive the enquiry and what the sender can expect next. Promise a response time only when the team can meet it. If messages go to different departments, define the routing internally instead of expecting visitors to know your organisation.

    • Purpose of each enquiry type.
    • Essential fields and the reason for collecting them.
    • Person responsible for reading and responding.

    Make entry understandable and recoverable

    Testing a mobile contact form while checking receipt on a laptop

    Give every control a visible label, mark required fields and provide examples only when helpful. Placeholder-only instructions disappear during entry. MDN’s form guidance explains labels and grouping.

    Test with a keyboard, on a phone and with longer text. When entry fails, explain the issue near the field, keep values already entered and provide a clear way to correct it. Also test a lost connection and a repeated submission. Success feedback should confirm the action without exposing personal data.

    Limit data and explain its use

    Collect what is useful for the enquiry and explain the purpose, relevant recipients and where to learn more about processing. For French operations, CNIL guidance recommends information at collection, with a short first layer near the form and a privacy-page link where appropriate. Adapt the notice to the actual processing and applicable law.

    Avoid requiring sensitive documents or an account for a simple question. If attachments are necessary, explain accepted formats, size and retention. Check that spam controls do not prevent legitimate enquiries.

    • Current collection notice.
    • Only necessary data and attachments.
    • Accessible alternative contact route.

    Test the journey through to a reply

    Send test enquiries with an empty field, malformed address, long message and valid input. Check the screen feedback, arrival in the correct place, readability of the received message and the team’s ability to reply. A confirmation page alone does not prove delivery.

    After launch, check the full route regularly, especially after changing hosting, mail delivery or spam protection. The prelaunch checklist places this test among the wider release checks.

    Prepare a small acceptance matrix with five situations: valid submission, missing required field, invalid address, network interruption and retry after waiting. For each, record device, action, displayed message, retained values and the state received by the team. Use a test identifier and fictional details so the report does not copy personal contact data.

    An error message must explain what to correct and let the person continue. Colour alone does not provide that instruction. The W3C WAI tutorial on form notifications explains how to associate errors with fields and make feedback understandable. Also test a double click: it should not cause the team to process the same enquiry twice.

    Separate input, selection and confirmed submission

    For suggested values, check displayed text and submitted identifier after selecting and then editing. A town field must not retain the previous suggestion’s reference accidentally. Secondary commands such as attaching a document remain distinct from submission.

    Follow waiting, failure and success. “Received” requires actual service confirmation. Preserve recoverable input after failure; when the result is uncertain, explain verification instead of encouraging blind repetition.

    Choose interface links, buttons and actions · Design autocomplete for selecting a value · Write and announce interface status messages

    Reduce repeated typing while retaining clear labels and validation.

    Synthetic case: a contact form distinguishes name, email and phone. Use suitable tokens and try both a saved test profile and manual input. Autofill can produce unexpected values, so validate fields on the server too. Avoid arbitrarily disabling an aid that people rely on.

    Fictional example: a registration has a main contact and a different participant. Two email fields do not necessarily request the same value. The groups section-contact email and section-participant email identify separate sets; the section- token comes first. This hint helps autofill without guaranteeing every browser’s behaviour.

    Choose the field’s meaning too: name denotes a full name, organization an organisation. Keep visible labels and accept names according to actual needs instead of arbitrarily requiring a first/last split. Test autofill, manual correction and server validation: a prefilled field becomes neither verified contact information nor permission to send to another person.

    • Values reach the correct fields and errors allow correction without losing other answers.

    Scroll the table horizontally to read every column. With a keyboard, focus the table area and use the arrow keys.

    Fictional form: distinguish the expected data
    Illustrative fieldautocomplete hintUseful check
    Contact’s full namenameThe label and input remain understandable
    Main contact’s emailsection-contact emailThe correct person remains identified after filling and correction
    Another participant’s emailsection-participant emailThe groups remain distinct; no value is assumed accurate
    • MDN HTML Autocomplete

      HTML attribute indicating expected information types and hints for automatic form filling.

    Verify the received request

    Open envelope in an incoming tray beside a laptop
    Connect the displayed confirmation with the expected receipt of the request.

    Proposed case: a form shows success while its recipient received nothing. The screen confirmation does not complete the processing journey.

    Test fictional data in an authorised environment. Connect action, response, receipt and follow-up owner; distinguish send failure, message filing and lack of handling.

    • Use an identifiable fictional request
    • Confirm expected receipt
    • Identify the follow-up owner

    Do not confuse submission and receipt

    An on-screen confirmation establishes only the state the server can confirm. Test delivery to the business mailbox, the ability to reply and duplicates after a retry. On failure, provide a usable next step and retain non-sensitive fields where the context permits.

    Write four messages to match the submission outcome

    Fictional example: a maintenance enquiry passes through the states below. Explain what is established and what the person can do next. An enquiry reference can support tracking; it is not evidence that the team has read it.

    Scroll the table horizontally to read every column. With a keyboard, focus the table area and use the arrow keys.

    Suggested contact form messages
    Observed stateWording to adaptCondition to check
    Invalid address“Enter a complete email address, for example name@example.com.”Associate the instruction with the field and retain other non-sensitive answers.
    Processing“Sending. Confirmation will appear here.”Show progress without prematurely claiming receipt.
    Unknown outcome“We cannot confirm submission. Check its status before sending again.”Offer tracking that actually exists or another way to contact the team.
    Confirmed record“Your enquiry has been recorded with reference DEMO-104.”Show the reference only after storage is confirmed; test email notification separately.
    • W3C WAI · User Notification

      These are editorial examples. The WAI tutorial explains form feedback and associating errors with controls; adapt the wording to the handling actually provided.

    Reference documents

    Content updated on

    Documented reference points for this topic

    Documented reference points for this topic
    ReferenceValue or syntaxScope
    WCAG 2.2 · 2.5.8
    24 × 24 CSS pxA smaller target can satisfy the criterion through spacing; other exceptions apply.
    WCAG 2.2 · 1.4.10
    320 CSS pxVertical content without two-dimensional scrolling; exceptions cover inherently two-dimensional content.
    WCAG 2.2 · 3.3.7
    A · same processWithin one process, previously supplied information must be auto-populated or available to select, subject to the criterion’s exceptions. Browser autocomplete alone is insufficient; the site must offer the information already received or avoid requesting it again.

    Dates indicate when references were consulted. These facts are neither a site audit nor an overall compliance statement.

    Acceptance matrix to adapt to your project

    These proposed checks use synthetic cases. Decide the required behaviour with the team, record the result and assign unresolved gaps before release.

    Scroll the table horizontally to read every column. With a keyboard, focus the table area and use the arrow keys.

    Test cases, expected outcomes and useful evidence
    CaseExpected outcomeEvidence to retain
    An invalid email accompanies a long message.The error identifies the field and preserves the message for correction.Sample message before and after rejection, error text and association with the email field.
    The server rejects a request after browser validation.The result does not claim success; useful inputs remain recoverable for correction.Test response, displayed message and non-sensitive field state.
    A double click occurs while submission is pending.Avoid duplicate processing and show an understandable state.Test identifier, attempts and number of enquiries processed.
    The server accepts, but the message is blocked before the business inbox.Distinguish technical acceptance from receipt and start the agreed follow-up.Server status, receipt check and notified owner.

    Frequently asked questions

    Should enquiry forms have more qualification fields?

    Ask for what is necessary to route and answer an enquiry. Explain unusual fields and keep optional information truly optional. Details obtainable later need not block initial contact. Test error correction without losing useful entries.