Use case
Collect shipping and booking details from customers without a form builder
Oct 27, 2026 · 5 min read
The last mile of a support conversation
Your support agent has agreed to send a replacement part. Now it needs an address, a delivery window and maybe a phone number for the courier. Asking for these in free text means validating them afterwards. Building a form means someone opening a form builder for a question the agent came up with a minute ago.
Ask for exactly what the courier needs
{
"mode": "form",
"title": "Where should we send your replacement?",
"requester": "Ava (the Acme support agent)",
"audience": { "kind": "named", "recipients": [{ "name": "Jordan Lee", "email": "jordan@example.com" }] },
"schema": {
"type": "object",
"required": ["address", "window"],
"properties": {
"address": { "type": "object", "title": "Delivery address", "x-runitby": { "widget": "location" } },
"window": { "enum": ["morning", "afternoon", "evening"], "title": "Best time", "x-runitby": { "widget": "chips" } },
"phone": { "type": "string", "format": "tel", "title": "Phone for the courier" }
}
},
"theme": {
"accent": "#B4532A",
"heroText": "Hi Jordan, I need a few details to ship your replacement part.",
"thankYou": "Thanks! It ships within 2 business days."
},
"expiresIn": "7d",
"webhookUrl": "https://example.com/hooks/runitby",
"metadata": { "ticket": "T-1042" }
}
The schema is the form. Widgets such as location, chips or
slots pick a better control where plain inputs would be clumsy; the full
list is in the field types.
Make it look like you
A theme sets colours, fonts, corner radius, a logo and the text above and
below the form, so the page looks like part of your product.
layout: "single" shows one question at a time, which feels more like a
conversation on a phone.
Before sending a form to many customers, call previewRequest: it returns
screenshots at phone and desktop widths and a list of anything that will read badly,
without creating anything.
What comes back
When Jordan sends the form, your webhook receives response.created with
the data already checked against the schema, plus your metadata, so the
handler can attach the address to ticket T-1042 and book the courier. If Jordan hasn’t
answered by tomorrow, remind emails the link again.
The link stops working when it expires or when you close the request, and answers are deleted 30 or 90 days after delivery on the Free and Builder plans.
Why not a form builder?
Form builders are great when a person designs a form once and shares it many times. Here the agent invents the question at runtime, needs one answer from one person, and needs it as typed data. That’s the case Run it by is built for. The longer comparison is in Run it by vs Typeform, Tally, Fillout and Google Forms.
Try it with your agent
Free for 100 requests a month, no card. Add the MCP server from Claude Code or Codex with one command, or use the REST API.