Install WCKD Forms on your server
This guide is for a developer or technical admin who is deploying the wckd-forms/ package for the first time. You will end up with a working MySQL schema, wf_config/private.php on disk, a Primary Owner account, and enough mail configuration to test notifications. Operators can skip ahead once a colleague has completed install and hand you a login.
- PHP 8.1+ on the host that serves the dashboard and intake.
- An empty MySQL or MariaDB database and a user that can create tables.
- A decision on SMTP (recommended) or a working server
mail()setup with a valid From address. - An absolute filesystem path for
wf_config(outside the public web root in production when your layout allows it).
You place the product tree where your vhost can execute PHP and read static assets.
- Copy the
wckd-forms/directory into your site (often under the site root so URLs look like/wckd-forms/…). - Ensure the web server user can read the tree and write the folder you will use for
wf_config. - Merge root
.htaccessrules from this repository if your host does not already include the/form-submitrewrite (see Routing & URLs).
You start the guided flow that creates tables and writes private.php.
- Open
/wckd-forms/installor/wckd-forms/install.phpin a browser (both resolve towckd-forms/app/public/install.phpvia the root shim). - If you see a locked or “already installed” message, open
/wckd-forms/dashboard/logininstead of reinstalling.
Screenshot. Show the installer first step or locked message in the browser.
The installer creates or updates schema in the database you name.
- Enter host, username, password, and database name.
- Run any connection test the UI offers and fix credentials until it passes.
- Continue so the installer can apply its migrations.
The application bundle stores secrets in wf_config/private.php, not only in the database.
- Enter the absolute filesystem path to the directory that will hold
private.php(not a URL). - Confirm the web user can create or update files in that directory.
- Never commit real
private.phpcontents to version control.
The first dashboard user is the Primary Owner; this role controls licence and Admin tools.
- Enter name, email, and password at least as long as the form requires.
- Confirm the password matches.
- Finish the step so the account row exists before you rely on login.
Staff notifications after intake need either SMTP or PHP mail() with a valid From.
- If you use SMTP, fill host, username, password, port, and From together (the installer rejects “half” SMTP). See SMTP setup for Mailgun, Postmark, and other providers.
- If SMTP host and username are empty, supply a valid From email and Reply-To for PHP
mail()on your host. - Set default staff recipients (To / Cc / Bcc) so the first test submission has a destination.
Redirects after submit must land on real URLs you control.
- Choose whether the installer should write default pages into your site root or whether you will supply custom URLs you already host.
- When publishing defaults, give the correct site root path on disk so files land in the intended folder.
- Remember you can override per form later under Settings → Forms.
The stored timezone drives reporting and mail timestamps.
- Pick the timezone your business uses (the product default may be
America/Toronto; change it here if needed). - Submit the final installer step and wait for success.
You confirm the install closed cleanly and the dashboard accepts your Primary Owner session.
- Open
/wckd-forms/dashboard/loginand sign in with the Primary Owner email and password. - Confirm
wckd-forms/app/config/app.phpexists and references the intendedwf_configpath. - Embed a test form (see Embed forms), submit once, and open Leads (inbox) to confirm the submission row appears.
- Open Settings → Operations and scan timezone, abuse limits, and webhook controls (see Operations, Notifications, and Webhooks).
Screenshot. Show the inbox with one test lead after a successful submit.
- Installer shows a
WF-1xxcode: match the code in Troubleshooting to the readiness table, fix the named file or database issue, reload. - Writable
wf_configpath wrong: the web user cannot createprivate.php; fix permissions or path and rerun the installer step that writes config. - Half-filled SMTP: host without username (or the reverse) fails validation; fill both or clear both to use
mail(). - Submits never arrive: root
.htaccessis missing the/form-submitrule; see Routing & URLs.
- Routing & URLs: required before production traffic.
- Embed forms: first public form.
- Troubleshooting:
WF-1xxand submit failures.