What you will take away from this lesson
The supplier program on the demo tenant started as a paragraph to the agent and an administrator’s two bindings. This lesson lays it out end to end and adds the last piece, a report that reads the applications against the warehouse.
Learning Objectives
- 01Name every object the supplier program is made of and who created each.
- 02Read the path one application takes from the page to the vendor team.
- 03Join form submissions to warehouse data in a report.
- 04Read the run history and the Endpoints page for the whole program.
Where this lesson sits
The last lesson of the 700 series assembles what the first six built.
700 Series: Endpoints and Forms
- 701An automation that answers a requestWhat an endpoint is, the request a handler is handed and the answer it returns, who binds it, the limits a request runs under, and what a caller is told.
- 702A lookup a partner system callsThe three access modes, API keys and per-caller limits, one audit row per request, refusals by reason, signed tokens, and the Endpoints page.
- 703Your first formA form the agent writes: fields, live choices, field-by-field refusals, the checks the platform runs first, the hosted page, and submissions as a table.
- 704Putting the form on your site, or in a reportEmbedding in an asset and on an allowed site, named bot checks, the honeypot, and the minimum fill time.
- 705Sensitive fieldsEncryption before storage, who reads in clear and where, audited reads, exports, and why a file field cannot be sensitive.
- 706From submission to actionAn automation that runs once per submission, validation against live data, bursts and failures, and writes to other systems.
- 707Capstone: the supplier form end to endThe demo tenant’s supplier program assembled: form, page, table, intake automation, and a report joining applications to the warehouse.
The 700 series builds on the automations of the 600 series: an endpoint is an automation that answers a request, and a form is an endpoint that people fill in.
The program, object by object
Seven objects make the supplier program. Each is an ordinary platform object, listed where its kind is listed in the portal.
The supplier program, object by object
acme-public-forms
bot check, administrator
- A proof-of-work check created in Admin > Settings > Bot checks for the form.
acme-supplier-onboarding
form automation, agent
- form_spec with twelve fields and live choices; form_submit checking the tax ID, the code of conduct, and repeat applications. Version 2.
/forms/supplier-onboarding
binding, administrator
- Public with the bot check on submission, an allowed site, a 10 MB body, and the administrator persona allowed to decrypt.
form-supplier-onboarding
source and table, made by the binding
- One row per accepted application in webhook_form_supplier_onboarding; certificates in the source’s library.
Become an ACME supplier
asset, agent
- The program page with the form framed inside it, shared as a link with prospects.
acme-supplier-intake
event automation, agent
- Runs once per application, adds store and category facts from the warehouse, posts to the operations feed.
Supplier pipeline
report, agent
- The applications joined to stores, regions, and categories.
The agent wrote everything that is code or content. An administrator made the two decisions that open the platform to the outside: the bot check and the binding. Nothing was installed, and no system outside the platform was added.
One application, end to end
Every application takes the same six steps, and each step is one the series covered.
One application, page to vendor team
- 1
The page opens
form_spec runs and reads 50 categories and 303 stores from the warehouse; the platform signs the spec into a token.
- 2
The supplier submits
The page solves the proof-of-work check. The platform checks the token, the honeypot, the five-second fill time, and every field.
- 3
form_submit decides
The tax ID’s shape, the code of conduct, and a query of the stored applications for a repeat. A refusal goes back to the page beside its field.
- 4
The application is stored
The tax ID is encrypted, the certificate saved to the library, and the application written as one event before the supplier sees the confirmation.
- 5
The intake run follows
Seconds later, acme-supplier-intake reads the event, looks up the store and category, and posts to the operations feed with a link to its run.
- 6
The report reads the table
The supplier pipeline report joins every application to the warehouse.
The Flow tab

A report on the applications
The vendor team asked where suppliers want to start and which categories they would add to. The answer joins the form’s table to the warehouse.
Applications joined to the warehouse
What the agent calls. This is the exchange the agent has with Plexara on your behalf, shown for the technical reader. You ask in plain language; you never type any of it.
→ trino_query connection acme
WITH apps AS (
SELECT CAST(json_extract_scalar(payload, '$.values.pilot_store') AS integer) AS store_id,
CAST(json_extract_scalar(payload, '$.values.category') AS integer) AS category_id,
CAST(json_extract_scalar(payload, '$.values.annual_volume_usd') AS double) AS volume
FROM scratch.uploads.webhook_form_supplier_onboarding)
SELECT r.region_name AS region, count(*) AS applications,
count(DISTINCT a.category_id) AS categories, sum(a.volume) AS expected_annual_volume_usd
FROM apps a
JOIN warehouse.public.stores s ON s.store_id = a.store_id
JOIN warehouse.public.regions r ON r.region_id = s.region_id
GROUP BY r.region_name ORDER BY applications DESC
← region applications categories expected_annual_volume_usd
West 9 8 4,370,000
Southeast 7 6 3,520,000
Midwest 7 7 3,425,000
Mid-Atlantic 5 5 1,390,000
Northeast 4 4 2,700,000
Southwest 4 4 1,460,000
Northwest 1 1 180,000The form’s table and the warehouse are queried together in one statement. A second query ranked the categories applicants asked for against the number of products ACME carries in each: snacks and chips and beverages drew three applications apiece, against 188 and 185 products carried. Both went into an HTML report in the ACME brand, saved as an asset with the two queries as its provenance.
What the report says
The supplier pipeline report
- applications stored, each answered by one intake run
- 37
- expected annual volume across applicants
- $17.0M
- regions with a pilot request
- 7 of 8
- tax IDs readable in the table
- 0
Expected volume is what each applicant typed, not a forecast, and the report says so. The tax ID is not part of it: the report queries the table, where the value is ciphertext.
The record
The run history, the refusals, and the Endpoints page together show everything the program did and everything it turned away.
What the record shows
Intake runs
- 37 runs with the trigger event, all succeeded, between a quarter of a second and a second and a half each.
Refused before storing
- Two malformed tax IDs and one repeat application answered 422; one honeypot, one early submission, and one missing bot check answered 400 or 403.
Siblings on the Endpoints page
- The store finder (127 requests over a day, 14 refused at its bot check) and the partner stock lookup (169 requests from one key, 31 refused) beside the form.
Everything that came in
Everything that came in during the series
From a website
- Store finder requests, answered under a proof-of-work check.
From a partner
- Stock lookups with an API key, under a per-caller rate.
From people
- Supplier applications through a hosted page and a page that embeds the form.
Where the series leaves you
Key terms
Three terms close the series.
Key Terms
- Supplier program
- The demo tenant’s worked example: a public form, its table, an intake automation, a page that embeds the form, and a report.
- Provenance
- The calls a saved asset was built from, recorded with it. The report’s are its two queries.
- Flow tab
- The diagram of an automation’s steps on its page in the portal, with a run’s answers drawn on it.
