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).

CodeMeaning (first place to look)
WF-100Missing bundle: run or complete install; confirm wckd-forms/app/config/app.php points at the correct wf_config path.
WF-101Invalid wf_config/private.php: file missing, unreadable, or database keys incomplete.
WF-102Database unreachable: credentials, host, firewall, or socket path.
WF-103Required tables missing: rerun installer migrations.
WF-104No Primary Owner row: finish the admin user step in the installer.
WF-105 / WF-106 / WF-107Installer locked or repeat install blocked: use /wckd-forms/dashboard/login, not the installer URL.
WF-199Unknown 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.

  1. Copy the exact wckd token from the URL and search for it in wckd-forms/app/public/api/intake.php or related helpers to learn the branch.
  2. Confirm /form-submit rewrites to wckd-forms/submit.php per Routing & URLs.
  3. Confirm X-WCKD-INGEST-KEY on the internal POST matches the ingest key stored in wf_config/private.php.
  4. 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.

  1. Confirm you are signed into the same environment (host + database) that received the POST.
  2. Clear inbox filters and widen the date range.
  3. Query the submissions table 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.

  1. Open Settings → Operations and verify SMTP host and username are either both filled or both empty.
  2. Open Settings → Forms for the template you tested and confirm routing toggles and “to” addresses.
  3. 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.

  1. Confirm Webhooks enabled is on under Settings → Operations.
  2. Confirm the row has On new submission for new rows or On status change for edits, matching your test.
  3. Confirm the URL begins with https:// and is not localhost or a private IP.
  4. 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.

  1. Open wckd-forms/forms/registry.php and confirm the first argument to wckd_form() matches a registry key exactly.
  2. Confirm the path in that registry entry exists under wckd-forms/forms/schemas/.
  3. 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.

  1. 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).

  1. Confirm operations.updates_check_base_url in wckd-forms/app/config/app.php points at the HTTPS shop host (no trailing slash).
  2. Run Check for updates before Install update now; resolve WF-401WF-405 (URL, version, lock) first.
  3. WF-410 / WF-411: download or checksum failure — verify the ZIP on the vendor server and package_download_sha256.
  4. WF-413: ZIP layout — the shallowest folder inside the archive must contain both dashboard/ and app/.
  5. WF-414: PHP could not write into the live wckd-forms/ tree; fix filesystem permissions or use the manual steps in UPGRADE.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; confirm wckd-forms/app/config/app.php points 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-submit and CMS coexistence.
  • Notifications: mail delivery order and routing.
  • Webhooks: HTTPS POST toggles and payloads.
  • UPGRADE.md (repository root): in-app vs manual package upgrades.