Skip to main content

The journey is set up to trigger when a custom event occurs, but users entered the workflow not based on the event occurs time, but the time when the event is synced to Iterable.

eg.

  • In the user’s Event History view, this customer event occurred at 8/01/2024, 1:21 PM.
  • The custom event is synced to Iterable everyday at 4:49 PM
  • This user entered the Journey 4 days ago at 4:49 PM
  • The journey is turned on 4 days ago, and this user should not have been added to the journey

Is there any way I can fix this? One way I am thinking is through dynamic list, but wondering if it can be fixed with the current set up.

Hello! If I’m understanding you correctly, you’d like to trigger a journey based on the ACTUAL time the event occurred, not the time it was synced to Iterable - which may be several hours after the event actually occurred. If this is the case, you can manipulate the createdAt field in the event’s API payload to reflect the actual time of the event (by default, the createdAt date is set to the time the event is synced to Iterable). So, for example, if you send the event to Iterable at 4:49 PM, but set the createdAt field with the event’s payload to be 1:21 PM, a journey trigger or dynamic list can be set to filter on that createdAt field and pull users in as desired based on time. I hope that this helps. If you look at the notes in our API docs here, you’ll see a brief explanation of how to edit the createdAt field.


Hi @HollyBlanchard , thank you for the response! The event was synced through Hightouch and I already set a column to use as the createdAt timestamp, which is reflected correctly in the user’s Event History view. Doesn’t that mean the createdAt field is updated correctly? But the Journey is still triggered based on the sync time, not the createdAt timestamp. 


Hi @gloriaalt! Just chiming in here as well.

The issue you’re describing is the primary tradeoff between syncing events via a CDP like Segment and a rETL tool like Hightouch. You won’t be able to fix the problem, which is a latency problem (i.e. you want an event to fire and trigger a workflow when the event occurs, not when the data is synced), without either setting up a CDP or integrating with Iterable directly in your codebase.

You can, however, set up a sync in Hightouch for just the event you want and just the most recent results and turn up the frequency of the sync as high as possible - I believe the maximum is every 15 seconds or so? This would allow you to only sync new rows for events that were created in the last 15 seconds (or whatever it is) to Iterable, and thus would allow you to trigger your workflow within 15 seconds of the event occurring, which is a far better user experience than waiting the multiple hours it takes for the entire user data set to sync.

 

Let me know if that makes sense or if you have any follow up questions!


Reply