Home

Lien Tooling

Pre-filled URLs (for developers and integrations)

This page describes how to build links that open a form with fields already filled in. Each form lives on its own page; use the correct path and field names below.

Pages and form IDs

  • demand-letter.html — form id demand-letter
  • mechanics-lien.html — form id mechanics-lien
  • release-lien.html — form id release-lien

Production URLs use https://lientooling.com as the origin.

1. Shallow prefill (query string)

Append query parameters whose names match the exact HTML name attribute of each field. Values should be URL-encoded (e.g. spaces as %20).

https://lientooling.com/demand-letter.html?client-name=Jane%20Doe&invoice-number=INV-001

Limits: Browsers and proxies cap URL length. Shallow links work well for a few short fields. Long text (legal descriptions, payment instructions) belongs in the hash payload below.

2. Full state (URL hash)

Put a single payload in the fragment after #d=:

https://lientooling.com/<page>.html#d=<base64url(JSON)>

Example path: demand-letter.html, mechanics-lien.html, or release-lien.html.

The JSON object maps each field name to a value:

  • Text, email, tel, number, date, and textarea fields → JSON strings (dates as YYYY-MM-DD).
  • Checkboxes on the demand letter (include-late-fees, include-notarial) → JSON booleans true / false.

Encoding steps:

  1. Serialize the object as UTF-8 JSON.
  2. Base64-encode the UTF-8 bytes, then make it URL-safe: use - instead of +, _ instead of /, and remove = padding.

Easiest path: On each form page, use the Copy shareable link button to generate a correct #d= link from the current field values.

3. Merge order and drafts

  • If both query parameters and #d= are present, the page applies query first, then the hash object. The hash wins on duplicate keys.
  • Unknown query keys are ignored.
  • Drafts in localStorage (keys like lienToolingDraft:demand-letter) are not restored when the URL includes any recognized query field or a non-empty #d= payload—the link takes precedence.

4. Privacy

Query strings may be logged by servers, analytics, or sent in the Referer header when users navigate away. The hash is not sent to the server on the initial page load, but anyone with the full URL can read it. Treat shared links like sensitive documents.

5. Field reference (parameter names)

Use these strings exactly as query keys or JSON keys.

demand-letter.html

business-name, sender-name, business-address, business-city, business-state, business-zip, business-phone, business-email, client-name, client-address, client-city, client-state, client-zip, invoice-number, invoice-date, due-date, payment-deadline, service-description, service-dates, completion-date, invoice-total, payments-received, outstanding-balance, include-late-fees, include-notarial, payment-method

Example: https://lientooling.com/demand-letter.html?client-name=Acme&invoice-number=INV-100

mechanics-lien.html

claimant-name, company-name, claimant-address, claimant-city, claimant-state, claimant-zip, owner-name, owner-address, owner-city, owner-state, owner-zip, property-address, property-city, property-state, property-zip, property-county, legal-description, work-description, work-start, work-end, unpaid-amount, customer-name, notice-date, contractor-name, contractor-address, contractor-city, contractor-state, contractor-zip

Example: https://lientooling.com/mechanics-lien.html?property-county=Travis&customer-name=Acme%20LLC

release-lien.html

lien-reference, payment-date, claimant-name, company-name, claimant-address, claimant-city, claimant-state, claimant-zip, filing-date, property-description, owner-name, property-county, property-address, property-city, property-state, property-zip

Example: https://lientooling.com/release-lien.html?lien-reference=ML-2025-001&owner-name=Jane%20Doe

Back to home