Agent templates
Agent templates
A template is a reusable snapshot of an agent's whole setup — its system prompt, opener, model/voice/transcription stack, tools, pre-call lookups, knowledge wiring, analysis settings, and context variables. Templates let you stand up a new agent in seconds instead of walking the whole builder from scratch, and let you share a proven configuration across your workspace or with the wider community.
When you install a template, Telenow rebuilds it as a brand-new agent in your workspace and asks you to plug in your own integrations. Nothing sensitive travels with a template — every credential, API key, bearer token, and connection binding is stripped before it's shared (see What carries over, what's scrubbed).
The Templates gallery
Open Agents → Templates in the sidebar (the Package icon). The page has two sections:
| Section | What it shows |
|---|---|
| Your templates | Templates your own workspace has published — both workspace-only and public ones. Empty until you publish your first; the placeholder reminds you to open an agent and choose Publish as template. |
| Community | Public templates from other workspaces that have been approved for the marketplace. |
Each card shows the template name, a short description, its category, the integrations it needs (e.g. "needs WhatsApp, CRM lookup"), and an install count once it has any. A globe icon marks a public template; a building icon marks a workspace-only one. Cards you own also carry a red trash button to remove the template.
The gallery is also available unauthenticated as a read-only marketplace feed (
GET /api/templates/public) so visitors can browse approved public templates before signing in.
Creating an agent from a template
- Go to Agents → Templates.
- Find the template you want — in Your templates or Community — and click Install.
- The Install dialog opens. Give the new agent a name (it pre-fills with the template's name; change it to anything you like).
- Connect this template's integrations. For every capability the template needs (WhatsApp send, CRM lookup, sheet append, …), pick one of your workspace connections from the dropdown. Each row is labelled with the capability and lists only the connections that actually offer it.
- If a capability has no matching connection, you'll see "No connection offers … — add one in Workplace → Integrations first." Add the connection over in Integrations, then come back and install.
- Choose each tool's target. Some connector tools (Google Sheets, Airtable, JotForm) need a target in addition to a connection — which spreadsheet, which base, which form. For each one:
- Fill in the target settings (spreadsheet, base, or form).
- Click Load fields. Telenow inspects your live target and discovers its columns, then regenerates the tool's parameters so the agent collects exactly the right fields from the caller. Loaded fields appear as chips; you must load them before you can install (otherwise the tool would have no schema to fill). This is the same "Load fields" step you'd run in the builder — see Integrations.
- Click Install. Telenow creates the new agent, binds it to your connections and targets, and drops you straight into the agent builder so you can review and finish.
The Install button stays disabled until the new agent has a name, every required capability is bound, and every bind-spec tool has its required settings (and discovered fields where the connector supports discovery).
What you still need to do after installing. A template never ships another workspace's secrets or phone numbers, so the new agent arrives unconnected in a few places. Before going live, open the new agent and: assign a phone number (if it takes calls), re-enter any transfer destination numbers (the labels carry over, the numbers are blank), supply any per-provider BYOK keys you want, and re-check the system prompt for org-specific details. The builder's Flow tab flags most of these gaps for you.
Install over the API
curl -X POST https://api.telenow.ai/api/orgs/<orgId>/templates/<templateId>/install \
-H "Authorization: Bearer <jwt>" \
-H "Content-Type: application/json" \
-d '{
"name": "My sales agent",
"bindings": { "whatsapp.send": "<connectionId>", "crm.lookup": "<connectionId>" },
"toolBindings": {
"log_lead": {
"settings": { "spreadsheet_id": "<your-sheet-id>" },
"columns": [ { "key": "Name", "label": "Name", "param": "name" } ],
"parameters": { "type": "object", "properties": { "name": { "type": "string" } }, "required": [] }
}
}
}'
| Field | Type | Notes |
|---|---|---|
name | string, optional | Name for the new agent. Falls back to the template's name. |
bindings | object | capability → connectionId. Every required capability must be present or the call is rejected (missing connection for capability '…'). Each connection must belong to your workspace. |
toolBindings | object, optional | toolName → { settings, columns, parameters?, description? } — per-tool target settings and the freshly-discovered field schema for bind-spec connectors (Sheets / Airtable / JotForm). |
A successful install returns { "success": true, "data": { "agentId": "…", "name": "…" } } and increments the template's install count.
Publishing an agent as a template
You publish from the agent, not from the gallery.
- Go to Agents and open the agent you want to share.
- On the agent detail page, click Publish as template (the Package button in the top-right). It sits next to Edit and Delete, and is only shown to developer and admin roles.
- In the dialog:
- Template name — defaults to the agent's name; override it if you like.
- Visibility — choose My workspace only or Public marketplace (needs approval).
- Click Publish. You're taken to the Templates gallery, where the new template appears under Your templates.
| Visibility | Who can see / install it | Approval |
|---|---|---|
My workspace only (org) | Only members of your workspace. | None — available immediately. |
Public marketplace (public) | Every workspace, in the Community section — once approved. | A Telenow admin reviews it. Until then it's visible to your own workspace only. You'll see "Submitted for review — it appears publicly once approved." |
Who can publish. Any developer or admin can publish a workspace-only template. Publishing to the public marketplace is a stronger action and is restricted to owner and admin roles.
Publish over the API
curl -X POST https://api.telenow.ai/api/orgs/<orgId>/templates \
-H "Authorization: Bearer <jwt>" \
-H "Content-Type: application/json" \
-d '{
"agentId": "<agentId>",
"name": "Outbound sales SDR",
"description": "Qualifies inbound leads and books a demo.",
"category": "sales",
"visibility": "org"
}'
| Field | Type | Notes |
|---|---|---|
agentId | uuid | The agent to snapshot. Must belong to your workspace. |
name | string, optional | Template name. Falls back to the agent's name. |
description | string, optional | Shown on the gallery card. |
category | string, optional | Shown on the card; defaults to other. |
visibility | string | org (default) or public. public requires owner/admin. |
The dashboard's publish dialog only collects name and visibility — it leaves description and category at their defaults. Use the API if you want to set those at publish time.
What carries over, what's scrubbed
A template is a deliberately secret-free, connection-free copy of the agent. When you publish, Telenow serializes only a portable spec and strips everything that's specific to your workspace.
Carries over
- System prompt and opener text (including any
{context variables}). - LLM provider + model, STT provider, TTS provider + voice.
- Tools (HTTP, transfer, end-call, connector, MCP) — their names, descriptions, and structure.
- Pre-call lookups (kept by capability only).
- Post-call analysis settings, caller-memory settings, and context-variable definitions.
- Transfer destination labels (so the installer knows what each route is for).
Scrubbed (never shared)
- BYOK keys and bearer tokens — every per-provider
apiKey, tool bearer, and other sensitive field is dropped. The installer supplies their own. - Connection bindings — connector tools and lookups keep only their capability; the
connectionIdis removed so the installer binds their own connection. - Connector targets — the publisher's spreadsheet / base / form id and any discovered columns are removed, and the tool's parameter schema is reset to empty. The installer re-runs Load fields against their own target so the agent never points at the publisher's resources.
- Transfer numbers — destination phone numbers are blanked (labels kept).
- Phone-number assignment — the new agent arrives with no number bound.
The full spec (prompt text and all) is only ever returned to the template's owner (and platform admins). Non-owners browsing the marketplace see just the name, description, category, required capabilities, the connector tools they'll need to bind, and the install count — never the prompt.
One exception to "the spec's voice wins": some templates have a live demo you can talk to on their public page before installing. When a platform admin has pinned a specific voice to that demo, installing the template gives you that voice rather than the one in the spec — so the agent you get sounds like the demo you heard. Only the voice is carried across; the demo's language model and transcription are demo-only. Change it any time in the builder after install.
Public vs workspace templates (the marketplace)
- Workspace-only templates are a private library for your own team — a handy way to standardise on a vetted agent configuration without exposing it. They show up immediately under Your templates.
- Public templates feed the shared Community marketplace. A public template is held for admin approval first; only an approved public template is visible (and installable) to other workspaces. Your own workspace can always see and install its own templates regardless of approval status.
Removing a template (the trash button on a card you own, or DELETE /api/orgs/:orgId/templates/:id, restricted to owner/admin) takes it out of the gallery. It does not affect agents already installed from it — installs are independent copies.
Endpoints at a glance
| Method | Path | Auth | Purpose |
|---|---|---|---|
GET | /api/orgs/:orgId/templates | member | List your workspace's templates + approved public ones. |
POST | /api/orgs/:orgId/templates | member (owner/admin for public) | Publish an agent as a template. |
GET | /api/orgs/:orgId/templates/:id | member | Fetch one template (full spec only for the owner). |
DELETE | /api/orgs/:orgId/templates/:id | owner/admin | Remove a template. |
POST | /api/orgs/:orgId/templates/:id/install | member | Install a template as a new agent. |
GET | /api/templates/public | none | Public, unauthenticated marketplace browse. |
These are dashboard routes, so they use a workspace JWT and return the { "success": true, "data": { … } } envelope. See API overview and Authentication.
Tips
- Build once, reuse everywhere. Get an agent right, publish it workspace-only, then install it for each campaign or brand and tweak the prompt per copy.
- Templatize your integrations carefully. Because connector tools travel by capability, an installer can bind a different vendor for the same job — publish a "send a WhatsApp" template and the installer can wire it to Plivo, Meta Cloud, AiSensy, or GupShup. See Integrations and WhatsApp.
- After installing, walk the Flow tab. It surfaces the gaps a template can't fill in for you — missing number, blank transfer numbers, unloaded connector fields.
- Versions are separate. Installing a template starts a fresh agent at version 1; the template doesn't track later edits to the original agent. To share an improved setup, publish again. See Agent versioning.
Troubleshooting
| Symptom | Cause / fix |
|---|---|
| Install button is greyed out | The new agent needs a name, every required capability must be bound to a connection, and every bind-spec tool needs its settings filled and its fields loaded. |
| "No connection offers …" under a capability | Your workspace has no connection for that capability. Add one in Integrations, then reopen the install dialog. |
| "Load the fields so the agent collects the right columns" | You haven't run Load fields for a Sheets/Airtable/JotForm tool yet. Fill the target settings, then click Load fields. |
missing connection for capability '…' (API) | Your bindings object is missing a required capability, or the value is blank. Include a connectionId for every required capability. |
connection not in this workspace (API) | A connectionId you passed doesn't belong to this workspace. Use connections from the same orgId. |
| My public template isn't in Community for others | Public templates need admin approval. It's visible to your own workspace immediately and to everyone else once approved. |
| No "Publish as template" button on the agent | It's only shown to developer and admin roles. Public publishing additionally needs owner/admin. |
| Installed agent can't transfer / can't place calls | Transfer numbers are blanked and no phone number is assigned on a fresh install. Re-enter the transfer destination numbers and assign a phone number. |
Related
- Building agents — the full builder you land in after installing.
- Integrations — connect the vendor accounts a template binds to.
- WhatsApp — messaging-connector specifics.
- Agent versioning — how installed agents track their own history.