Solved

Force flush?

  • 22 July 2021
  • 6 replies
  • 192 views

Badge +1

Is there a way to force amplitude-js to flush events? I’m trying to track an event that triggers a browser refresh, but the logEvent calls just prior to the reload are lost... This is true even if I move the browser refresh into the callback provided to logEvent.

icon

Best answer by Denis Holmes 23 July 2021, 07:37

View original

6 replies

Userlevel 6
Badge +8

Hi @ejain-bloom ,

 

I believe with the JS SDK you can use the method amplitude.getInstance().sendEvents() to send any events early. There is some documentation available here for that. Is this what you were looking for? Let me know if it is not and I can ask our Engineers internally.

Kind Regards.,
Denis

Badge +1

I’ve tried both sendEvents() as well as doing the call to window.location.reload() from the optional logEvent callback, but in both cases the last event is lost :cry:

Userlevel 6
Badge +8

Hi @ejain-bloom ,

 

So it works but not for the last event? Can you private message me your amplitude email so I that I can create a ticket and investigate this internally for you? Thank you!

Badge +1

I don’t think there is any guarantee that events will have been sent when sendEvents() returns; for that to work, this function would have to return a promise (or accept a callback)...

Userlevel 5
Badge +2

Hi @ejain-bloom, I hope all is well. I wanted to close the loop here. Were you able to resolve this? I’m looping in platform specialist @ning.chang, who can take a closer look if needed. We appreciate your patience! :relaxed:

Badge +1

Thanks for following up! I ended up configuring Amplitude with transport: "beacon". It’s possible that there are drawbacks, but it does seem to work...

Reply