Technician page and hand-off
Some things X3 cannot see by itself: a form inside an embedded window (Jotform, Typeform, HubSpot Forms), a calendar without a booking message, a shop without a purchase event. After the owner confirmed what counts as a lead (Lead setup), each of them is an open point with a recipe. The owner hands it over with one link – the technician needs no X3 account – or copies a task for an AI.
The link
POST /v1/projects/{project}/lead-setup/handoffs (project:admin) creates the technician page
https://<dashboard>/setup-brief/<token> for the open points (or reuses the live link for exactly these
points). The answer carries the link, a mailto: and a WhatsApp link with a short text that only
contains the link, and three AI tasks (browser without code access, repo with code access, mcp
for a connected Claude). Links last 30 days and are withdrawn with
POST /v1/projects/{project}/lead-setup/handoffs/{id}/revoke; a withdrawn point is open again.
The token has four groups of five letters and digits (about 119 bits). It is stored as a hash; the encrypted copy only serves the owner who copies the same link again.
Public routes
| Route | What |
|---|---|
GET /v1/setup-brief/{token} | the page as JSON: domain, who asked, detected stack (?stack=wordpress switches the variant), the state of the tracking code, every point with why, ways, steps, test link and latest signals, the repository task |
GET /v1/setup-brief/{token}/guide | the same content as Markdown for AIs and terminals (the dashboard serves it as /setup-brief/<token>/guide.md) |
GET /v1/setup-brief/{token}/status | check state as JSON: a point is done once X3 saw its first signal (/setup-brief/<token>/status on the dashboard) |
POST /v1/setup-brief/{token}/check | „Jetzt prüfen“: checks every point now (signals including test visits, the new thank-you page and its X3 code) |
POST /v1/setup-brief/{token}/contact | „Fragen?“: name and e-mail address of the person who asked, only after the click |
Unknown, withdrawn and expired tokens and links of deleted projects all answer the same 404.
Every miss of an address counts; after 30 misses within an hour the address gets 429. Answers carry
x-robots-tag: noindex and only status and recipes of this project: no visitor data and no keys.
Signals of test visits (?x3_test=1, the technician's own) carry their time; real visits and
inquiries only appear as „Echtes Signal gesehen“ with the day (day: true), and lastSeenAt /
lastSignalAt are days too. „Fragen?“ gives out the address of the person who created the link only
while they are still a member of the organization. A public „Jetzt prüfen“ fetches the site at most
once a minute per point.
Checks
X3 never relies on what a technician or an AI reports. Every recipe has a verify match (a page view
of the new thank-you page, a form_submit with the form name, a booking). The job
lead_setup.watch checks every point every 10 minutes and on „Jetzt prüfen“:
- Test visits (
?x3_test=1) count for the check, never for the numbers. Only tests so far is „Bereit, wartet auf die erste Anfrage“, not a success. - The first real signal closes the task, notifies the owner in X3 and by mail (task
setup_item_done) and the point counts from then on. - A point that ran and is silent for 14 days while its page has visits becomes a problem again („Seit 14 Tagen kein Signal. Wurde die Seite umgebaut?“).
- A missing X3 code on the new thank-you page is a problem with the recipe's own sentence.
MCP: lead_setup_verify returns the same state with the latest signals.