Filter on Iterator only passes 1 bundle even though 6–8 should match (date range on epoch timestamp)

Goal
From a WhatsApp (Green-API) group history I want to keep only messages between two dates (last 30 days / Sep 1–Oct 1, 2025), then route image/document messages to download.

Scenario layout

  1. HTTP [17] – Make a request

    • Returns an array of messages (each object has timestamp in epoch seconds, typeMessage, downloadUrl, etc.).

    • Response is parsed as JSON.

  2. Tools – Set multiple variables [20] (before the iterator)

    • fromDate = {{ formatDate(parseDate("2025-09-01 00:00:00";"YYYY-MM-DD HH:mm:ss");"X") * 1 }}

    • toDate = {{ formatDate(parseDate("2025-10-01 00:00:00";"YYYY-MM-DD HH:mm:ss");"X") * 1 }}

    • Timezone: Asia/Jerusalem. (These evaluate to roughly 1756674000 and 1759266000.)

    • Map is ON.

  3. Iterator [18] – iterates the root [] array from HTTP (now each bundle is one message).

  4. Filter (link after Iterator) – “filter by dates”
    Aggregator: All of the following must match.

    • Row 1: Left 18.timestamp (token), Operator Numeric → Greater than or equal to, Right 20.fromDate (token).

    • Row 2: Left 18.timestamp (token), Operator Numeric → Less than, Right 20.toDate (token).

  5. Router [21]

    • Branch 1 filter: 18.typeMessage equals imageMessage.

    • Branch 2 filter: 18.typeMessage equals documentMessage.

    • (Then I download/aggregate/send, but the issue happens before this.)

Data sample (from HTTP / Iterator output)
All timestamp values are epoch seconds (10 digits). Examples from this run:
1758880789 - Sep 26, 2025
1758726879 - Sep 24, 2025
1758725154 - Sep 24, 2025
1758724842 - Sep 24, 2025
1757524986 - Sep 10, 2025
1757236704 - Sep 07, 2025

Question
What could make a date range filter like:

  • 18.timestamp >= 20.fromDate

  • 18.timestamp < 20.toDate

pass only 0/1 bundles when 6–8 are in that range? Any known gotchas with:

Hey Eliav,

can you show some screenshots of the different inputs and outputs you have?

Goal
From a WhatsApp (Green-API) group history I want to keep only messages between two dates (last 30 days / Sep 1–Oct 1, 2025), then route image/document messages to download.

Scenario layout

  1. HTTP [17] – Make a request

    • Returns an array of messages (each object has timestamp in epoch seconds, typeMessage, downloadUrl, etc.).

    • Response is parsed as JSON.

  2. Tools – Set multiple variables [20] (before the iterator)

    • fromDate = {{ formatDate(parseDate("2025-09-01 00:00:00";"YYYY-MM-DD HH:mm:ss");"X") * 1 }}

    • toDate = {{ formatDate(parseDate("2025-10-01 00:00:00";"YYYY-MM-DD HH:mm:ss");"X") * 1 }}

    • Timezone: Asia/Jerusalem. (These evaluate to roughly 1756674000 and 1759266000.)

    • Map is ON.

  3. Iterator [18] – iterates the root [] array from HTTP (now each bundle is one message).

  4. Filter (link after Iterator) – “filter by dates”
    Aggregator: All of the following must match.

    • Row 1: Left 18.timestamp (token), Operator Numeric → Greater than or equal to, Right 20.fromDate (token).

    • Row 2: Left 18.timestamp (token), Operator Numeric → Less than, Right 20.toDate (token).

  5. Router [21]

    • Branch 1 filter: 18.typeMessage equals imageMessage.

    • Branch 2 filter: 18.typeMessage equals documentMessage.

    • (Then I download/aggregate/send, but the issue happens before this.)

Data sample (from HTTP / Iterator output)
All timestamp values are epoch seconds (10 digits). Examples from this run:
1758880789 - Sep 26, 2025
1758726879 - Sep 24, 2025
1758725154 - Sep 24, 2025
1758724842 - Sep 24, 2025
1757524986 - Sep 10, 2025
1757236704 - Sep 07, 2025

Question
What could make a date range filter like:

  • 18.timestamp >= 20.fromDate

  • 18.timestamp < 20.toDate

pass only 0/1 bundles when 6–8 are in that range? Any known gotchas with:

Hey @Stoyan_Vatov , First thx for replying:
The response of the whatsapp group is an array of:
{
“type”: “outgoing”,
“idMessage”: “3AFA79AB6DFDB671D042”,
“timestamp”: 1758880789,
“typeMessage”: “imageMessage”,
“chatId”: “120363199496031602@g.us”,
“downloadUrl”: “https://do-media-7105.fra1.digitaloceanspaces.com/7105326161/9cd0864e-0bd3-4c19-a21f-9e6110dcbf5f.jpg”,
“caption”: “”,
“fileName”: “9cd0864e-0bd3-4c19-a21f-9e6110dcbf5f.jpg”,
“jpegThumbnail”: “/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDABsSFBcUERsXFhceHBsgKEIrKCUlKFE6PTBCYFVlZF9VXVtqeJmBanGQc1tdhbWGkJ6jq62rZ4C8ybqmx5moq6T/2wBDARweHigjKE4rK06kbl1upKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKT/wgARCABIAEgDASIAAhEBAxEB/8QAGgAAAwEBAQEAAAAAAAAAAAAAAAECAwUEBv/EABcBAQEBAQAAAAAAAAAAAAAAAAEAAgP/2gAMAwEAAhADEAAAAPYKOnOiXSaKHKKyA1tGmWsuSqSJqiQQQO83KKahsyWVOCgxB6WfT5aLLSKx1h1STrzgD9ZzAHwZAksKpgmAA//EABgRAQEBAQEAAAAAAAAAAAAAAAEgABAR/9oACAECAQE/AIZZcMOOe8d//8QAGBEAAwEBAAAAAAAAAAAAAAAAAAEgEBH/2gAIAQMBAT8AhSpQ4Q85iP/EACsQAAICAQMCBQIHAAAAAAAAAAABAhEhAwQxElEFECJhcUFSEyAyNHKRof/aAAgBAQABPwBrPIx33LHb+p8jSfKRVcUa2pLT2upX2k5OLwrPxH9rFLqbxX5HNJ0y33wbnO01P4ksKx11Ikk3aZJ26p+bdZou+HRu307HVfsSdE1Fu7yQxJjGyzrfbBJ/Wnk3rrw/U+CStUzpj2KS4Gyc2pViiPqjYo+w8LJ4jKtjL3Q/JjeByT5QrcPQ6E5RauWD1N/qX9Hisq2iTNWD05U/Js1XjFjt9yGIpMlPNUXXL/w8V9Wh8G80euNpZRLDpjYySsjjA1nkppcm+ztpjVo32h0vrXBKVKx6vsPUzwR1LecF2Wb39tM///4AAwD/2Q==”,
“mimeType”: “image/jpeg”,
“isAnimated”: false,
“isForwarded”: false,
“forwardingScore”: 0,
“statusMessage”: “delivered”,
“sendByApi”: false,
“editedMessageId”: “”,
“deletedMessageId”: “”,
“videoNote”: false,
“isEdited”: false,
“isDeleted”: false
}

the input of the variables is :
[
{
“scope”: “roundtrip”,
“variables”: [
{
“name”: “fromDate”,
“value”: 1756674000
},
{
“name”: “toDate”,
“value”: 1759266000
}
]
}
]

filter by date ( image attached).

filter should have 6-8 results but it has only 1.

HI @Eliav_Maman

Before diving into anything complex, try aligning the data types used in your filter.

Since you’re using a numeric filter, make sure both sides are numbers ( convert your dates with parseNumber). Right now the variables are declared as dates but then used as numbers which can cause mismatches.

Two options:

  1. Numeric path: Convert both fromDate/toDate and the item timestamp to the same numeric unit (all seconds or all milliseconds) and compare numerically parseNumber.

  2. Date path: Keep them as proper dates and switch the filter to a datetime comparison.

@mr.G
this is the input and output of the variables. The output is numeric (timestamp). in make (as i read).. The safest way to turn the "X" result (epoch seconds as a string) into a number is to just multiply by 1.

From your previous screenshots it looks like the HTTP module errored out. Was it on the first bundle? If that is the case, then the filter will only have 1 bundle passing through it as well.

Hey No it’s not the case.
The case is the first http module retieves an array of whatsapp mesages. Each message has timestamp. What i’m trying to do is to filter those messages to have the once between today and 30 days ago.
The fiter after the iterator should filter 8 messages but it acuale result is 1 message .
I have check the timestamp of all messages and the shoud be included in the filter