CUSTOM WEBSITES / GUIDED PRACTICE

Connect a working contact form

Define and test a real submission path rather than a decorative form.

Written by Ray / SETLYUpdated 1 October 2026

THE RESULT YOU'RE WORKING TOWARD

Done means it works.

Valid data arrives once in the intended backend, errors remain visible, and the page never reports success on a failed request.

Practice project: Harbor Home Care

01 / GET READY

Before you start.

Platform / editor
HTML, CSS and JavaScript; Python local preview server
Access & plan
Text editor, modern browser and Python for local preview. Hosting and form-backend accounts are needed only for their corresponding lessons.
Starting point
Complete the previous lesson or use an equivalent prepared demo project.

Keep a note of the exact account, project and version you use. Work with demo data and record the expected result before making changes. Never place passwords, verification codes or private customer records in your evidence.

Download website starter ↘ Open completed static example ↗

02 / LEARN THE TOOL

Open the official walkthrough.

Use the publisher's instructions and available screenshots to locate the current controls. Then return here for the SETLY exercise and its result checks. These links open on the publisher's website.

Source credit belongs to the named publisher. These are external references, not SETLY recordings or a claim of affiliation. Screen names and plan availability can change.

03 / PUT IT INTO PRACTICE

Your task, step by step.

Use one labelled demo record or project so you can find your work again. Finish each action before continuing; if the screen differs, consult the matching official source rather than guessing.

  1. 01

    Step 1

    Create labelled name, email and message fields in the supplied example. Mark required inputs and preserve their names for submission.

  2. 02

    Step 2

    Select a form backend you control and configure its test endpoint. Keep credentials on the server; never add a secret key to the page's JavaScript.

  3. 03

    Step 3

    Submit demo data, inspect the backend record and then verify any expected notification. Handle success and failure as different interface states.

  4. 04

    Step 4

    Test invalid email, missing content, duplicate clicks and an unavailable endpoint. Preserve the user's message when submission fails.

The demo contact form and its backend requirement
The demo contact form and its backend requirement
Captured from the supplied website example. The static contact form needs a backend; the downloadable educational backend stores demo enquiries locally.
Source: Ray / SETLY. Original SETLY example.

04 / GET UNSTUCK

If something goes wrong.

Start with the likely cause

If requests fail, inspect status codes and endpoint configuration. A mailto link opens an email application; it is not evidence of stored form submission.

My screen is different from the guide

Check the product, editor, account role and selected project first. Open the credited official instructions for your version. Record the difference and pause any action whose effect you cannot verify.

The screen looks correct, but the result is missing

Inspect the saved record, published page or execution log that should prove the action. A preview, success message or draft is not always evidence that data was stored or a message was delivered. Retest with one unique demo value.

05 / PROVE THE RESULT

Check it before you call it done.

Valid data arrives once in the intended backend, errors remain visible, and the page never reports success on a failed request.

Keep useful evidence

Record the test date, project/version, expected result, observed result and a non-sensitive screenshot or record reference. Mark anything you did not test as untested. Your checkmarks do not certify an untested result.

Download the editable verification checklist ↓

Guide status: original written practice exercise with credited external references. SETLY screen recording and independent learner reproduction are not yet complete.

KEEP BUILDING

Next / 08Add metadata and page identity ↗