Epicor Kinetic and Asana integration
Epicor Kinetic runs manufacturing and finance. Asana runs the team's work and approvals. Connecting the two lets procurement and finance approve and track ERP documents where staff already work, without anyone logging into the ERP for routine sign-off. New purchase orders and AP invoices in Epicor become Asana tasks carrying the document details, and when a task is completed or its custom fields are filled in, ml-connector writes the result back to Epicor. ml-connector handles the very different APIs on each side and keeps the two in step on a schedule you control.
What moves between them
The outbound flow runs from Epicor Kinetic into Asana. ml-connector polls Epicor purchase orders and AP invoices, and for each new or changed record it creates or updates an Asana task with the document number, vendor, amount, and due date written into mapped custom fields, grouped into the project that represents the approval queue. The return flow runs from Asana into Epicor: when a task is completed or an approval custom field changes, the connector updates the matching Epicor record, for example flagging a purchase order approved through the business object. Asana users are read into Epicor for assignment and buyer matching. Outbound polling follows your schedule; the return path is driven by Asana task webhooks with a scheduled poll as backfill.
How ml-connector handles it
ml-connector stores both credential sets encrypted, sends the Epicor API Key in the x-api-key header on every call alongside Basic or OAuth2 identity, and refreshes the Epicor bearer token when a call returns 401, while sending the Asana Bearer token on its requests. Because Epicor Kinetic has no webhooks, the connector polls purchase orders and AP invoices with an OData date filter and pages through results with $top and $skip. The return path registers an Asana webhook, completes the X-Hook-Secret handshake, and verifies the X-Hook-Signature HMAC on every event before acting; it periodically re-registers because Asana deletes webhooks after 24 hours of failures. Epicor document numbers are stored on the Asana task as custom fields, and the Asana task gid is stored against the Epicor record, so each side dedupes and neither creates a duplicate on re-sync. Asana custom fields are resolved by gid rather than name, and opt_fields is set so task reads return the mapped fields. Epicor writes that touch GL lines use UpdateMaster, and Asana rate limits returning HTTP 429 are retried with backoff.
A real-world example
A mid-sized discrete manufacturer with around 300 employees runs Epicor Kinetic for production, procurement, and finance, while the operations and finance teams live in Asana day to day. Before the integration, every purchase order over a threshold needed sign-off, but approvers rarely logged into Epicor, so buyers chased approvals by email and POs sat open for days, delaying receipts and month-end accruals. With Epicor Kinetic and Asana connected, each new purchase order appears as an Asana task in the approvals project with the vendor and amount in custom fields, the approver completes it in the tool they already use, and ml-connector flags the PO approved in Epicor. Approval lead time drops and finance can see what is still outstanding without opening the ERP.
What you can do
- Create Asana tasks from new and updated Epicor Kinetic purchase orders and AP invoices, with document details in custom fields.
- Write task completion and approval custom fields from Asana back to the matching Epicor record.
- Sync Asana users into Epicor so tasks and buyer assignments line up across both systems.
- Bridge the Epicor API Key plus tenant login and the Asana Bearer token, refreshing tokens as they expire.
- Poll Epicor on your schedule because it has no webhooks, and verify Asana webhook signatures on the return path.
Questions
- Which direction does data move between Epicor Kinetic and Asana?
- Both directions. Purchase orders and AP invoices move from Epicor into Asana as tracking tasks, and task completion plus approval custom fields move from Asana back into Epicor to update the matching record. Asana users are also read into Epicor for assignment matching.
- Asana has no invoice or purchase order objects, so how does the integration work?
- Asana is a work management tool with no native finance objects, so the Epicor document details such as PO number, vendor, and amount are written into customer-defined custom fields on an Asana task. The task itself represents the approval or tracking step, and ml-connector maps those custom fields by gid in both directions so the financial context travels with the work.
- How does the integration get changes out of Epicor Kinetic without webhooks?
- Epicor Kinetic has no native outbound webhooks, so ml-connector polls the purchase order and AP invoice endpoints on a schedule using an OData date filter to pick up records changed since the last run. The Asana side does use push webhooks for the return path, with the X-Hook-Signature HMAC verified on every event before the connector updates Epicor.
Related integrations
More Epicor Kinetic integrations
Other systems that connect to Asana
Connect Epicor Kinetic and Asana
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started