Developers
Forms and catalog embeds
How Sela's hosted customer forms and public catalog pages work, how to link to them, and what is and is not supported for third-party embedding.
Last updated: 2026-09-29
Sela ships two small public web apps that customers open in their browser: a form page for information the assistant or your team asks a customer to fill in, and a public catalog page for your menu or product list. This page explains how each works and how you can use them from your own site.
Customer forms#
What they are#
Forms are requests your team sends to one customer from a conversation, for example to collect a delivery address, a booking detail or an email. Each request produces a personal link:
https://forms.usesela.com/f/<token>The token is a 16-character URL-safe string. Older links in the long two-part format (a 43-character part, a dot, and another 43-character part) still work.
Properties of every form link:
- It is personal to one customer and one request. Do not publish it or reuse it.
- It is not indexed by search engines (
noindex, nofollow) and sends no referrer. - Expired, cancelled, scheduled-for-later and invalid links all show the same neutral "no longer active" page. This is intentional, so a dead link cannot be told apart from an invented one.
- Answers can write back to the customer's profile field, a custom field, or stay on the submission, depending on how the form field was configured. Field types are short text, long text, integer, decimal, money, date, date and time, checkbox, single select, multi select, URL, email and phone.
- A submission can allow a limited number of edits, after which the form becomes read-only.
To create and send forms, use the form actions in the inbox conversation view. See Inbox and conversations.
Form endpoints (first-party)#
The form page calls two Sela HTTP endpoints on Sela's API host, https://jovial-bison-730.convex.site. They exist to serve the hosted page. They are described so that you can debug network traffic, not as a contract for building your own form UI, and they can change.
| Endpoint | Purpose |
|---|---|
GET /form/resolve?token=<token> | Returns the form definition, prefill values, branding and state. It never changes data. |
POST /form/submit with JSON { "token": "...", "answers": { ... } } | Saves answers. |
Notes:
- Both endpoints reflect the request
Originin their CORS headers, because the form page is served from a different domain. - Refusals are HTTP
200with"ok": false. Only a non-JSON body or a missing token returns400. - Submission failure codes include
UNAVAILABLE,NO_EDITS_LEFT,INVALIDandBAD_REQUEST.INVALIDcomes with anerrorslist of{ key, reason }items.
Using a form link from your site#
You can link to a form link you received (for example in an email template), but do not try to iframe it. The page is built as a standalone page, and embedding it is not supported or tested. Send the link in the conversation, by email or by message, and let the customer open it in their browser.
Public catalog pages#
What they are#
The public catalog is a read-only page showing your published menu or store items:
https://catalog.usesela.com/c/<slug>The slug is generated when you publish (for example coffee-house-ab12). The assistant shares this link when a customer asks for the menu, so the catalog you publish is the one customers see. See Catalog and products for how to build and publish it.
What the page shows:
- Your branding: title (with an optional Arabic title), accent color, optional theme and logo.
- Categories and items, up to 1000 items per catalog and 5 MiB per published snapshot.
- Prices as fixed, starting at, quote required, or label only, in IQD or USD.
- Availability of each item: available or sold out.
- Live updates: the page subscribes to changes, so republishing updates open pages without a reload.
Catalog publishing is gated by the PUBLIC_CATALOGS_ENABLED setting on the backend.
Linking to your catalog#
Use a plain link or button on your website, social profiles and QR codes:
<a href="https://catalog.usesela.com/c/your-slug" target="_blank" rel="noopener">
View our menu
</a>The catalog page is served by Sela and does not use a public Sela REST endpoint. There is no supported API for third parties to read it, and the stored data format may change. If you need catalog data in your own system, keep the source of truth in your own database and manage the catalog from the dashboard.
Troubleshooting#
| Symptom | Cause |
|---|---|
| Form link says it is no longer active | The request was cancelled or has expired, the link was copied with a missing character, or it was scheduled for later. The page does not say which. Create a new request from the conversation. |
| Form submit shows an error list | One or more answers failed validation. Fix the listed fields and submit again. |
| "No edits left" | The customer already used all allowed edits. Send a new request. |
| Catalog link shows nothing | The catalog is not published, publishing is not enabled for your workspace, or the slug is wrong. Republish from the dashboard and use the new link. |
| Catalog is missing recent changes | The change has not been published. Publish again. |
Can't find what you need? Contact support.