DateTimeDiff returns null in Architect expression despite valid ISO dates

Docs state: “DateTimeDiff calculates the difference between two dates or times in the specified units.”

I’m trying to build a logic block that checks if a ticket was created more than 24 hours ago. The source data comes from an external webhook payload. The timestamp is in ISO 8601 format.

Here is the expression I’ve cobbled together:

{
 "expression": "DateTimeDiff(GetVariable('ticket.created_at'), GetVariable('current_time'), 'hours') > 24"
}

The current_time variable is populated via a Set Variable action using GetSystemTime(). The ticket.created_at is passed directly from the webhook JSON. I’ve verified both variables contain valid strings in the debug log.

The expression evaluates to null instead of a boolean. The flow then fails to route correctly. I tried wrapping the arguments in GetDateTime() to force parsing, but Architect throws a syntax error: “Invalid function argument type.”

I also tried using GetDayOfWeek just to see if date functions work at all in this context. GetDayOfWeek(GetVariable('ticket.created_at')) returns an integer. So the date parsing seems to work for some functions but not DateTimeDiff.

Is there a specific format requirement for DateTimeDiff that isn’t in the docs? Or is this a known bug with ISO 8601 strings containing the ‘Z’ suffix? The timezone handling in Architect is always a bit murky. I’m in Amsterdam, so UTC+1/UTC+2 depending on DST. The webhook sends UTC.

I don’t want to spin up a custom integration just for a simple date check. It feels like I’m missing a tiny syntax detail. The docs don’t mention any edge cases for DateTimeDiff.

Any pointers on how to get this to evaluate properly? I’ve spent three hours staring at this expression builder. It’s driving me mad. The error isn’t helpful. Just null.

Here’s the raw JSON snippet from the webhook for reference:

{
 "created_at": "2023-10-27T14:30:00Z"
}

And the Set Variable action config:

{
 "name": "ticket.created_at",
 "value": "{{$.created_at}}"
}

Nothing seems wrong on the surface. Yet it breaks. I’m stuck.