Documentation

Templates

Pre-built automation flows for common use cases.

The template catalog ships ready-to-deploy automations. Each one is a complete AutomationWorkflow plus a list of variables — placeholders you fill in (template IDs, queue names, thresholds) before activating.

Fetch templates

POST/automation/ai/templatesJWT

Optional filters in the body: category, industry.

curl -X POST https://appengine.appmint.io/automation/ai/templates \
  -H "Authorization: Bearer $JWT" -H "orgid: $ORG" \
  -d '{"category": "onboarding"}'

Response:

[
  {
    "id": "tpl_welcome_series",
    "name": "Welcome series (3 touches)",
    "description": "Email day 0, day 3, day 7 after contact creation",
    "category": "onboarding",
    "industry": "saas",
    "workflow": { /* full AutomationWorkflow */ },
    "variables": [
      { "name": "welcomeTemplateId", "type": "string", "required": true, "description": "Template for day-0 email" },
      { "name": "tipsTemplateId",    "type": "string", "required": true },
      { "name": "checkInTemplateId", "type": "string", "required": true }
    ]
  }
]

Common categories

CategoryExample flows
onboardingWelcome series, day-1 check-in, trial-end reminder
salesLead routing, cold-lead reactivation, hot-lead → call task
supportTicket SLA escalation, post-ticket survey
commerceAbandoned cart, post-purchase upsell, low-stock alerts
eventsReservation confirmation, day-before reminder, follow-up
marketingRe-engagement, link-click intent capture, unsubscribe handling
phoneMissed-call SMS reply, after-hours voicemail, IVR menu

Apply a template

Templates are not auto-saved. Substitute the variables, wrap in BaseModel, and POST /automation:

const [tpl] = await api.post('/automation/ai/templates', { category: 'onboarding' });

// Fill required variables
const workflow = JSON.parse(
  JSON.stringify(tpl.workflow)
    .replace('{{welcomeTemplateId}}', 'welcome-2026')
    .replace('{{tipsTemplateId}}',    'tips-2026')
    .replace('{{checkInTemplateId}}', 'checkin-2026')
);

const saved = await api.post('/automation', {
  datatype: 'automation',
  data: { ...workflow, status: 'draft', enabled: true },
});

await api.post(`/automation/start/${saved.sk}`, { startedBy: 'alice' });

When to template vs generate

Use a template when there's a known recipe and you only need to plug in IDs. Use AI generation when the flow is novel or the branching logic is org-specific. Templates produce identical structure every time; the AI generator does not.