In this article, we’ll learn about the concept of Event Batching in VWO, its advantages, and how you can configure it in VWO.
Event Batching enables VWO SDK to process the events for visitors and goal tracking, place them in a queue, and dispatch it in a single network request to the VWO servers, i.e., SDK collects the number of events over a period of time and then dispatch them to the VWO servers. For example, if there are 4000 events, SDK collects them, adds them to a queue, and sends them to VWO servers in one single network request. This is what Event Batching in VWO FullStack does for you.
NOTE: Event Batching can send the events for visitors and conversion
To better understand the concept of Event Batching in VWO FullStack, consider the following scenario.
Assume that, on average, 1000 visitors land on your website in a day. Now you wish to track these visitors and the corresponding conversions. Let's take a look at the different options that VWO offers to accomplish this.
NOTE: To track visitors, use the Activate API, whereas to track
conversions, use Track API.
One way to track visitors and conversions is to trigger one API request for each visitor to the VWO server, i.e., a one-to-one mapping between the visitor and an API request to the server. The advantage of this implementation is that you get real-time reporting, i.e., the events appear instantly in the report.
INFO: We recommend using this when you want to see real-time reporting.
Another way to track visitors and conversions is by processing the events, placing them in a queue, and dispatching them in a single network request to the VWO servers. This is done using Event Batching in VWO FullStack. SDK collects the events, place them in a queue, and sends them to VWO servers in a single network request. It’s that simple.
It typically eliminates the overhead of sending the individual requests for tracking each visitor or goal. With this implementation, the campaign reports will only be updated once the batch events request is sent from the SDK to VWO. This may take a few seconds to reflect in the report depending on the batch size.
To learn how to configure Event Batching, refer to Configure Event Batching in VWO FullStack.
Advantages of Using Event Batching
- It brings in efficiency, i.e., SDK will have to send fewer network requests for tracking visitors or goals.
- Increases flexibility in sending events to the VWO server, i.e., to send events, you have the option to configure the batch size (number of events) or the time interval.
- Reduce the total transmitted data by extracting common properties in every event and sending them once per batch network request.
- Allow flushing of events data in the queue if you want to reflect that data in VWO reporting dashboards (before the batch size/ time interval is reached) or prevent data loss if your server needs to restart. To know more about this, refer to Want to Send the Data to VWO Servers Before the Batch Size/Time Interval is Reached?
Configure Event Batching in VWO FullStack
VWO offers two configuration options for sending events to the VWO servers. You can configure the Event Batching while instantiating the SDK by passing the batch events configuration key along with one or both of the Event Batching options.
NOTE: As of now, Event Batching is available in Node.js SDK and
- Events per Request - Specify the number of events that should be batched together and sent to the VWO server in a single network request. Until this number is not reached, all events will be queued.
1. The maximum events that can be queued at a time is 5000.
The maximum payload size is 10 MB.
2. Based on the batch size, the events may take a few seconds
to reflect in the report.
- Request Time Interval - Specify the time interval at which the event batches are sent to the server.
NOTE: Time starts after the first event is added to the queue.
For example, if the time interval starts at nth time and the
first event occurs at (n + 5)th time, the timer will start from
(n + 5)th time and will be cleared once the queue is flushed.
Things to Consider While Configuring Event Batching
You must consider the following while you are configuring Event Batching in VWO:
- If only eventsPerRequest is provided, the requestTimeInterval is set to a default value of 600(10 minutes).
- If only requestTimeInterval is provided, the eventsPerRequest is set to a default value of 100 events.
- If both eventsPerRequest and requestTimeInterval are specified, SDK will send a batch request based on the first event. For example, if the count of events reaches the limit first, the batch request will be sent, and the timer will reset whereas, if the time elapsed even before filling in the required events- a batch request will be sent, the queue will be emptied, and the timer will reset.
What Happens When the Batch Limit is Reached?
If the number of events in the batch exceeds the limit, viz., 5000 events, the VWO server will reject the request with status code 413 Payload Too Large. To fix this, we recommend that you try with a smaller event number by reducing eventsPerRequest or set a shorter time interval via requestTimeInterval.
Furthermore, VWO SDKs also provide a functionality to call a function upon success/failure batch network requests to the VWO server. This can be done by passing flushCallback in batch events configuration at the time of launching the SDK.
To configure the flushCallback, use the following code snippet:
Want to Send the Data to VWO Servers Before the Batch Size/Time Interval is Reached?
The default behavior of sending data to the VWO servers is that all events are queued until the batch size is not reached. But what if you wish to send the data before the batch size limit is reached? This can be accomplished using the Flush Events API.
INFO: We recommend using the Flush Events API to prevent data loss if your
server needs to restart.
Assume that your batch size is 2000, and currently, there are only 700 events in the queue, and you wish to view the data of these 700 events in the report without waiting for the batch size to reach its limit, i.e., 2000.
To achieve this, you can flush the queue using the Flush Events API. This way, a network call with 700 events (or whatever was the number of events in the queue at the time of flush) will go to the VWO servers, and the same will start reflecting in the reports.
To configure the flushEvents API, use the following code snippet:
To learn more about the technical aspects of Event Batching in VWO, refer to this.