Help
Support
Last updated 26 August 2026
Wellform is a self-serve API. Most problems are faster to diagnose from the conformance report than from a conversation, so start there โ then write to us if it does not explain what you are seeing.
Read the report first
Every render returns a verdict. On /v1/render.pdf it arrives as
response headers; on /v1/render you get the full report as JSON,
with each finding named by its Matterhorn Protocol checkpoint.
| Header | Meaning |
|---|---|
X-Wellform-Conformant | true only when there are zero failures. |
X-Wellform-Failures | Checks the document did not pass. These are defects. |
X-Wellform-Warnings | Things worth looking at that do not break conformance. |
X-Wellform-Blocked-Assets | Images or fonts that were not loaded. A document missing content it asked for is an accessibility problem, so we surface it rather than hide it. |
X-Wellform-Render-Ms | Server-side render time, excluding network. |
X-Wellform-Remaining | Documents left in the current billing period. |
Common causes
A remote image or font did not load
Remote fetching is disabled on the Free plan and off by default everywhere
else. Either embed the asset as a data: URI or send
"allow_remote_assets": true on a plan that permits it. Requests to
private, loopback and link-local addresses are always refused, on every plan.
A figure has no alternative text
An image without a meaningful alt attribute cannot be described
to a screen reader, and no tool can invent the description for you. Add
alt in your source HTML. Decorative images should be marked
alt="" so they are skipped rather than announced.
Headings skip a level
Going from <h1> straight to <h3> breaks
the document outline that assistive technology uses to navigate. Use the level
that reflects structure and style it however you like with CSS.
Table headers are not associated
Mark header cells as <th> and give each a
scope of col or row. Wellform carries
that through to /Scope in the PDF. Without it a reader knows a cell
is a header but not what it heads.
Getting in touch
Email support@wellform.dev. We aim to reply to every message within one business day. Wellform does not offer phone support.
Include as much of this as you can โ it is usually the difference between one reply and five:
- The
cf-rayheader value from the failed response, which lets us find the exact request - The conformance report, or the response headers
- A minimal HTML document that reproduces the problem
- The key prefix you used โ the first sixteen characters, such as
wf_live_acadd928
Never send us a full API key. We store keys only as hashes and cannot read yours, so a key in an email is a credential we did not need and cannot un-see. The prefix is enough for us to identify it. If you do send one by accident, revoke it and issue a replacement.
Billing questions
Invoices, receipts, card changes, plan changes and cancellation are all
handled in the Stripe billing portal, reachable from
POST /v1/billing/portal. Cancelling ends the subscription at the
close of the current period; your key keeps working until then and then reverts
to the Free plan rather than being disabled.
Reporting a security issue
Email support@wellform.dev with "security" in the subject line. Please give us a reasonable opportunity to fix the issue before disclosing it publicly. We will not pursue legal action against researchers who act in good faith, avoid privacy violations and service disruption, and do not access or modify data belonging to others.