Launch Tallyfy processes from Workato
You can connect Workato to Tallyfy’s API so that events in Salesforce, Zendesk, or any other system automatically start processes. Workato’s HTTP connector sends a POST request to Tallyfy with your template ID and kick-off form data - no custom code needed.
Key points:
- Authentication (step 4) needs a Bearer token and the
X-Tallyfy-Clientheader - missing either causes a 401 error - Workato maps your trigger data into the
prerunobject, keyed by each kick-off field’s timeline ID, which populates those fields automatically (step 2) - Error handling (step 8) catches authentication failures, bad template IDs, or data format issues
You’ll need:
- A Workato account with HTTP connector access
- A Tallyfy account with API access
- Your Tallyfy API token from Settings > Integrations > REST API
- Your organization ID (found in Settings > Organization)
- The template ID for the process you want to launch
- The timeline ID of each kick-off form field you want to pre-fill (see Step 4)
- In Workato, go to Connections and click Create connection
- Search for and select HTTP
- Name your connection (e.g., “Tallyfy API”)
- Configure these settings:
- Authentication type: API key
- How to apply: Header
- Authorization header format: Custom
- Custom authorization header:
Bearer YOUR_API_TOKEN - Other headers: Click Add header and add:
- Name:
X-Tallyfy-Client - Value:
APIClient
- Name:
- Click Connect to save
- Create a new recipe in Workato
- Choose your trigger (e.g., “New row in database”, “New Salesforce opportunity”)
- Add an HTTP action
- Select your Tallyfy HTTP connection
- Configure the HTTP request:
- Request name: Launch Tallyfy Process
- Method: POST
- URL:
https://go.tallyfy.com/api/organizations/YOUR_ORG_ID/runs - Request headers: Add
Content-Typewith valueapplication/json
The URL includes your organization ID as a path segment. Don’t pass
organization_idin the request body - it belongs in the URL.
Add this JSON to the Request body field:
{ "checklist_id": "YOUR_TEMPLATE_ID", "name": "Process name from trigger data", "owner_id": "USER_ID", "prerun": { "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6": "value from trigger", "3c9d1e7fa4b820516d8e2f7a9c0b4d15": "another value" }}The checklist_id is the template’s timeline ID (what the API calls a “blueprint” internally). The name field sets the process title. The owner_id is optional - if omitted, the authenticated user becomes the owner.
The keys inside prerun are the timeline IDs of your kick-off form fields, each a 32-character hex string. They are not the field labels or aliases. Step 4 shows how to find them.
Instead of hardcoding values, use Workato’s Formula mode:
- Click the Formula mode toggle
- Build your JSON dynamically:
{ "checklist_id": "abc123", "name": "Order " + trigger["order_number"] + " - " + trigger["customer_name"], "owner_id": "user456", "prerun": { # Customer name field "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6": trigger["customer_name"], # Order value field "3c9d1e7fa4b820516d8e2f7a9c0b4d15": trigger["total_amount"], # Priority field "9f2b7c1e4a6d8035b1c7e9d2f4a6b801": trigger["priority"] }}Keep a comment next to each ID so the recipe stays readable. Nothing in the payload tells you which field an ID belongs to.
If your template has a kick-off form, populate those fields through the prerun object:
- Check which kick-off form fields are required in your template
- Get each field’s timeline ID by calling
GET https://go.tallyfy.com/api/organizations/YOUR_ORG_ID/checklists/YOUR_TEMPLATE_IDand reading theidon each entry of theprerunarray in the response. Ignore thealiasnext to it - alias keys don’t work - Use those IDs as the keys in your
prerunobject - Match the value format to the field type (see the table below)
The value format depends on what kind of field it is:
| Field type | Value to send |
|---|---|
| Short text, long text, email | A plain string: "John Smith" |
| Date | An ISO 8601 string: "2026-03-15T00:00:00.000Z" |
| Radio button | The option’s text as a plain string: "Full-time" |
| Dropdown | An object with both keys: { "id": 2, "text": "Engineering" } |
| Checklist (multi-select) | A list of those objects: [{ "id": 1, "text": "Laptop" }] |
| Table | A list with one entry per column |
| Assignees | { "users": [], "guests": [], "groups": [] } |
Dropdown and radio look alike in the app but take different shapes here. A radio takes the bare text, a dropdown needs the id and text pair.
Here’s an example with different field types:
{ "checklist_id": "template123", "name": "New Employee: John Smith", "owner_id": "hr_manager_id", "prerun": { "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6": "John Smith", "3c9d1e7fa4b820516d8e2f7a9c0b4d15": "2026-03-15T00:00:00.000Z", "9f2b7c1e4a6d8035b1c7e9d2f4a6b801": { "id": 2, "text": "Engineering" }, "6e4a2c80f19b3d75e0a8c246b93f157d": "75000", "2d7f9a1c5e3b806478d0a2c4e6f81b39": "Full-time" }}Reading top to bottom, that’s a text field, a date, a dropdown, a text field holding a number, and a radio button.
Tallyfy returns the created process details. You can capture these in your recipe:
- Add a Variable action after your HTTP request
- Name it “Process Details”
- Map fields from the HTTP response:
id- The process IDname- The process namecreated_at- When it was created
- Click the HTTP action’s error handler
- Add actions for different error scenarios:
- 401 Unauthorized: Token expired or missing headers
- 404 Not Found: Template ID doesn’t exist
- 422 Unprocessable Entity: Validation errors (missing required fields, bad data types)
- Add email notifications for failures so you catch problems early
When a Salesforce opportunity hits “Closed Won,” onboarding starts automatically:
- Trigger: Salesforce - Updated opportunity
- Condition: Status changed to “Closed Won”
- Action: Launch Tallyfy customer onboarding process
- Pass opportunity data to kick-off form
Route urgent tickets into a structured escalation process:
- Trigger: Zendesk - New ticket
- Condition: Priority = “Urgent”
- Action: Launch Tallyfy escalation process
Run recurring processes on a schedule:
- Trigger: Scheduler - Daily/Weekly/Monthly
- Action: Launch Tallyfy process
- Use date formulas for dynamic names
- Confirm your API token is active and hasn’t expired
- Check that the
X-Tallyfy-Client: APIClientheader is included - Verify the template ID is the timeline ID, not the template name
- Make sure the org ID in your URL is correct
- Each key in
prerunmust be a kick-off field’s timeline ID, not the field’s label or alias. A key that matches no field is discarded silently, so the launch still succeeds with that field empty - Value formats need to match the field type (see the table in Step 4). A dropdown sent as bare text is rejected
- Required fields can’t be empty
The API returns detailed validation errors. Check the response body for a details object that tells you which fields failed and why.
Triggers > Launch via middleware
Postman > Working with templates and processes
Was this helpful?
- 2026 Tallyfy, Inc.
- Privacy Policy
- Terms of Use
- Report Issue
- Trademarks