Working with templates and processes
To launch Tallyfy processes from templates in Postman, use the template ID with kick-off form data in the request body. The API accepts preruns for form fields and member assignments for process participants.
Quick refresher on Tallyfy terminology:
- Templates = Blueprints that define your workflow (API calls them “checklists”)
- Processes = Running instances of templates (API calls them “runs”)
- Kick-off forms = Data collection before launching (API calls them “preruns”)
This naming difference catches everyone. Just remember: Template → Process in Tallyfy UI equals Checklist → Run in API.
First, see what templates you can launch:
GET {{TALLYFY_BASE_URL}}/organizations/{{TALLYFY_ORG_ID}}/checklists
Headers:Authorization: Bearer {{TALLYFY_ACCESS_TOKEN}}X-Tallyfy-Client: APIClient
Response includes:
{ "data": [ { "id": "checklist_abc123", "name": "Employee Onboarding", "description": "Standard process for new hires", "is_public": false, "steps_count": 12 } ]}
Pro tip: Save template IDs as environment variables for easy reuse.
POST {{TALLYFY_BASE_URL}}/organizations/{{TALLYFY_ORG_ID}}/checklists/{{TEMPLATE_ID}}/launch
Headers:Authorization: Bearer {{TALLYFY_ACCESS_TOKEN}}X-Tallyfy-Client: APIClientContent-Type: application/json
Body:{ "name": "Onboarding - Jane Smith", "deadline_date": "2024-02-15"}
Most templates have kick-off forms. Here’s how to pre-fill them:
{ "name": "Purchase Request - MacBook Pro", "preruns": { "field_abc123": "John Smith", "field_def456": 2499.99, "field_ghi789": "Engineering team needs upgraded hardware", "field_jkl012": ["Option A", "Option B"] // Multi-select field }, "deadline_date": "2024-02-20"}
Three ways to find kick-off form field IDs:
-
Chrome DevTools method (easiest):
- Launch process manually in Tallyfy
- Open Network tab
- Look for the launch request
- Copy field IDs from payload
-
API exploration:
GET {{TALLYFY_BASE_URL}}/checklists/{{TEMPLATE_ID}}Look for
prerun_fields
in response -
Postman console:
- Enable Postman console (View → Show Postman Console)
- Make requests and inspect full responses
Assign members during launch:
{ "name": "Q1 Budget Review", "members": { "member_123": ["step_1", "step_3", "step_5"], "member_456": ["step_2", "step_4"], "member_789": ["step_6", "step_7", "step_8"] }}
Use pre-request scripts for dynamic launches:
// Determine template based on request amountconst amount = pm.variables.get("purchase_amount");let templateId;
if (amount < 1000) { templateId = "template_simple";} else if (amount < 10000) { templateId = "template_manager_approval";} else { templateId = "template_executive_approval";}
pm.variables.set("DYNAMIC_TEMPLATE_ID", templateId);
// Set deadline based on priorityconst priority = pm.variables.get("priority");const deadline = new Date();
if (priority === "urgent") { deadline.setDate(deadline.getDate() + 1);} else { deadline.setDate(deadline.getDate() + 7);}
pm.variables.set("DEADLINE", deadline.toISOString().split('T')[0]);
Launch multiple processes efficiently:
const employees = [ { name: "Alice Johnson", dept: "Engineering", start: "2024-02-01" }, { name: "Bob Smith", dept: "Sales", start: "2024-02-05" }, { name: "Carol White", dept: "Marketing", start: "2024-02-10" }];
employees.forEach((emp, index) => { setTimeout(() => { pm.sendRequest({ url: `${pm.environment.get("TALLYFY_BASE_URL")}/organizations/${pm.environment.get("TALLYFY_ORG_ID")}/checklists/${pm.environment.get("ONBOARDING_TEMPLATE_ID")}/launch`, method: 'POST', header: { 'Authorization': `Bearer ${pm.environment.get("TALLYFY_ACCESS_TOKEN")}`, 'X-Tallyfy-Client': 'APIClient', 'Content-Type': 'application/json' }, body: { mode: 'raw', raw: JSON.stringify({ name: `Onboarding - ${emp.name}`, preruns: { field_name: emp.name, field_dept: emp.dept, field_start: emp.start } }) } }, (err, res) => { if (!err) { console.log(`Launched process for ${emp.name}`); } }); }, index * 200); // 200ms delay between launches});
GET {{TALLYFY_BASE_URL}}/organizations/{{TALLYFY_ORG_ID}}/runs?status=active
Query parameters:- status: active, completed, archived- updated_after: 2024-01-01T00:00:00Z- limit: 50- offset: 0
GET {{TALLYFY_BASE_URL}}/runs/{{PROCESS_ID}}
Returns complete process info including:
- Current status of all tasks
- Assigned members
- Form field values
- Comments and activity
PUT {{TALLYFY_BASE_URL}}/runs/{{PROCESS_ID}}
Body:{ "name": "Updated Process Name", "deadline_date": "2024-03-01"}
PUT {{TALLYFY_BASE_URL}}/runs/{{PROCESS_ID}}/archive
Identify processes that haven’t moved in X days:
// In Tests tab after listing processesconst processes = pm.response.json().data;const stuckThreshold = 3; // days
const stuckProcesses = processes.filter(p => { const lastUpdate = new Date(p.updated_at); const daysSinceUpdate = (Date.now() - lastUpdate) / (1000 * 60 * 60 * 24); return daysSinceUpdate > stuckThreshold && p.status === 'active';});
if (stuckProcesses.length > 0) { console.log(`Found ${stuckProcesses.length} stuck processes:`); stuckProcesses.forEach(p => { console.log(`- ${p.name} (ID: ${p.id})`); });
// Save for further action pm.environment.set("STUCK_PROCESSES", JSON.stringify(stuckProcesses));}
Track completion rates by template:
// After getting all processesconst processes = pm.response.json().data;const stats = {};
processes.forEach(p => { const templateId = p.checklist_id; if (!stats[templateId]) { stats[templateId] = { total: 0, completed: 0 }; } stats[templateId].total++; if (p.status === 'completed') { stats[templateId].completed++; }});
Object.entries(stats).forEach(([templateId, data]) => { const rate = (data.completed / data.total * 100).toFixed(1); console.log(`Template ${templateId}: ${rate}% completion rate`);});
- Verify template ID is correct
- Check template isn’t archived
- Ensure you have permission to launch
Common issues:
- Required fields missing
- Wrong data type (string vs number)
- Invalid option for select fields
Debug by getting template details first to see field requirements.
Tallyfy may limit concurrent launches. If bulk launching:
- Add delays between requests (100-500ms)
- Batch in groups of 10-20
- Monitor for 429 rate limit errors
Now that you can launch and manage processes:
- Automate task operations
- Set up webhooks for real-time updates
- 2025 Tallyfy, Inc.
- Privacy Policy
- Terms of Use
- Report Issue
- Trademarks