Is there a "truthful" audit trail?

I’ve been unsuccessful in finding a way to get an actual audit trail that hasn’t been truncated or altered either by webhook or by the “Stories” API calls.

Use case:

  1. Via “Webhook” API calls, I setup a webhook on a project in Asana. Successful after handshake.
  2. I make a change to a task: Asana sends the changes to my webhook “receiver” containing some “possibly duplicate” changes.
  3. I grab the resource ID, and do a stories API call to get the stories history. Ok, got it.

So this is working as long as I only have ONE task and ONE change.

  1. Now: I make a series of changes to several tasks in a very short time period, say, 10-15 seconds to represent what might be real life changes to several tasks by several users.
  2. Some arbitrary time period in the future (30 seconds? 10 seconds? 1 minute?) Asana hits my receiver with “a list of changes that is NOT exact” and is some sort of strange, boiled-down summary of the changes.
  3. Okay, I’m told I can’t rely on what gets sent through events and I should look up each task’s stories to find the details. So I search through each change item, grab resource Id’s that I think are pertinent, like for the tickets that I changed for example, and do a stories API lookup for each unique task Id, thinking: “This is the correct way to get a task’s audit trail” (spoiler: nope!)
  4. I see nothing like the actual truth of those changes. In fact, some actually disappear (like if I move a task from one section to another – it actually DELETES the story?! What? Why would you remove an event instead of telling me exactly what the event was honestly?!).

Now I’m confused and I’m spending hours searching through the forum and documentation trying to figure out what I’ve done wrong…why would the API not tell me the truth?

Question 1: Is there some other way that I can get a list of actual changes to a task that represent what happened IN REALITY?

Question 2: if there is no other way to get the actual truth of a task’s history, then what possible reason could there be to NOT tell your customers the truth about what happened to a task and make us guess and have gaps missing about the truth of a task’s history?

Boolean: Data integrity = false. Unreliable.

Additional note:
Asana is super cool and I love it and all of the devs are awesome and everyone on this forum is awesome – just so you don’t think I’m throwing hate around :smiley:

Hi @cstacer,

Answer to question 1: no, there is not a true, 100% comprehensive audit trail available.

Answer to question 2: the reason for the above “no” answer is twofold: first, that the Asana web app performs story “consolidation” in the attempt to avoid massively long activity streams displaying at the bottom of task records (basically, if one user changes a data element multiple times within a 24-hour period without other users changing it in between, those multiple changes by the user get consolidated so only the last change is reported); and second, due to the current nature of Asana’s architecture, the API team doesn’t have access to any separate story stream other than that of the web app, and as a result, what the API returns is at the mercy, so to speak, of the web app - thus the API events manifest the same consolidation that the web app does.

The API team may weigh in here with additional comments but the above is my best understanding of the situation based on a number of public (and private) conversations with them about this topic.


@Phil_Seeman - I saw your Flowsana app and you provide the ability to put if…then rules i nto place (like moving a task to another column if it’s marked complete).

Thanks for your thoughtful answers, Phil.

Are you using webhooks? Are you simply looking at the current values of the resource that changed to determine what needs to be updated, or have you found a way to use the task’s stories to figure that out accurately?

The lack of audit trail has been a huge problem for us for a long time. We use task stories to figure out things like which board columns a task has stayed in the past or which tags has been applied at any given time. Because of how stories are implemented in Asana, it’s unreliable.

We’ve mentioned this shortcoming to Asana people several times but nothing has been done. I really hope that this problem will be addressed soon!


Yes, Flowsana uses webhooks.

Due to the consolidation feature of stories and their underlying events, Flowsana has to keep its own copy of the task; that’s the only way it can reliably know when a particular value has changed.

1 Like