Fix install, login, submit, mail, and webhook failures
This page is for a developer or technical admin who can read PHP error logs, edit .htaccess, and inspect wf_config/private.php. Work through the WF-1xx table first when the dashboard refuses to boot, then jump to the symptom heading that matches what you observe in the browser or logs.
These codes surface when the app refuses to run until configuration is repaired. The canonical map lives in wckd-forms/app/lib/installer.php (search for WF-100).
| Code | Meaning (first place to look) |
|---|---|
WF-100 | Missing bundle: run or complete install; confirm wckd-forms/app/config/app.php points at the correct wf_config path. |
WF-101 | Invalid wf_config/private.php: file missing, unreadable, or database keys incomplete. |
WF-102 | Database unreachable: credentials, host, firewall, or socket path. |
WF-103 | Required tables missing: rerun installer migrations. |
WF-104 | No Primary Owner row: finish the admin user step in the installer. |
WF-105 / WF-106 / WF-107 | Installer locked or repeat install blocked: use /wckd-forms/dashboard/login, not the installer URL. |
WF-199 | Unknown readiness failure: compare on-disk files to a known-good install. |
Screenshot. Capture a login or status screen that prints a WF-1xx code for internal runbooks.
Submission redirects to not-sent with a wckd= query parameter
Intake rejected the POST after wckd-forms/submit.php forwarded the payload.
- Copy the exact
wckdtoken from the URL and search for it inwckd-forms/app/public/api/intake.phpor related helpers to learn the branch. - Confirm
/form-submitrewrites towckd-forms/submit.phpper Routing & URLs. - Confirm
X-WCKD-INGEST-KEYon the internal POST matches the ingest key stored inwf_config/private.php. - Retry slowly from a real browser session: wait on the page, move the mouse to satisfy human-interaction checks, then submit.
Thank-you redirect works but no row appears in Leads
Different hosts or databases than you expect, or filters hide the row.
- Confirm you are signed into the same environment (host + database) that received the POST.
- Clear inbox filters and widen the date range.
- Query the
submissionstable directly with read-only SQL to confirm whether insert ran.
Staff notification never arrives
SMTP misconfiguration or empty routing addresses; intake may still insert the row.
- Open Settings → Operations and verify SMTP host and username are either both filled or both empty.
- Open Settings → Forms for the template you tested and confirm routing toggles and “to” addresses.
- Read PHP error logs after a reproducing submit; mail failures are logged while the submission remains.
Webhook endpoint never logs a POST
The outbound job never passed validation or the master switch is off.
- Confirm Webhooks enabled is on under Settings → Operations.
- Confirm the row has On new submission for new rows or On status change for edits, matching your test.
- Confirm the URL begins with
https://and is not localhost or a private IP. - Search logs for
[wckd-forms webhook]lines after reproduction.
Public page shows “unknown form schema” or similar
The registry key does not resolve to a readable schema file.
- Open
wckd-forms/forms/registry.phpand confirm the first argument towckd_form()matches a registry key exactly. - Confirm the path in that registry entry exists under
wckd-forms/forms/schemas/. - Deploy PHP changes to the server you are testing, then hard-refresh the browser.
Browser shows a blank page when visiting wckd-form.php directly
Expected: that file defines functions only.
- Load a normal site page that calls
wckd_form()instead (see Embed forms).
Primary Owner tools call your vendor product-updates-check.php, then optionally download and apply a ZIP. Codes shown in the dashboard often start with WF-4xx (see wf-error-codes.txt in the repository).
- Confirm
operations.updates_check_base_urlinwckd-forms/app/config/app.phppoints at the HTTPS shop host (no trailing slash). - Run Check for updates before Install update now; resolve
WF-401–WF-405(URL, version, lock) first. WF-410/WF-411: download or checksum failure — verify the ZIP on the vendor server andpackage_download_sha256.WF-413: ZIP layout — the shallowest folder inside the archive must contain bothdashboard/andapp/.WF-414: PHP could not write into the livewckd-forms/tree; fix filesystem permissions or use the manual steps inUPGRADE.md.
- Chasing CRM OAuth inside WCKD Forms: CRM auth belongs in webhook middleware; see CRM & tools.
- Editing the wrong
wf_config: multiple clones on disk; confirmwckd-forms/app/config/app.phppoints at the path the web user reads. - WordPress 404 on POST: WCKD rewrite block sits below the CMS catch-all; move rules per Routing & URLs (WordPress step).
- Install: first-time setup.
- Routing & URLs:
/form-submitand CMS coexistence. - Notifications: mail delivery order and routing.
- Webhooks: HTTPS POST toggles and payloads.
UPGRADE.md(repository root): in-app vs manual package upgrades.