> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kameleoon.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Data collection and reporting

> Understand how Kameleoon collects tracking data, when that data appears in the Results page, and which tool to use for real-time QA versus analyzed reporting.

Kameleoon separates two distinct operations: **data collection** and **data reporting**. Data collection is near-instant. Reporting is visitor or visit-based and is not a real-time view.

Understanding the distinction prevents a common mistake: using the Results page as a QA tool. The Results page shows analyzed visit and visitor data, along with conversions for the goals that measure an experiment or personalization campaign's performance, not a live feed of incoming events. Use [Live events](/user-manual/experiment-analytics/analyze-results/data-and-metrics/live-events) to confirm that tracking is working.

## How Kameleoon collects data

The collection method depends on your implementation type.

### Web Experimentation

For web implementations, Kameleoon collects data through the `engine.js` script running in the visitor's browser. When a visitor loads a page, the engine:

1. Initializes the visitor and evaluates which experiments and personalizations apply.
2. Assigns the visitor to a variation.
3. Sends tracking events (such as page views, experiment exposures, scroll activity, and goal conversions) to the [Kameleoon Data API](/developer-docs/apis/data-api-rest/overview).

The engine batches outgoing requests and processes the queue approximately every 500 ms. On page unload, the engine forces immediate transmission so it doesn't lose in-flight events.

<Note>
  The browser caches `engine.js`. When you start an experiment or add a goal in the Kameleoon app, new visitors and returning visitors whose cached `engine.js` has expired get the update right away. Returning visitors with a still-valid cached version don't get the update until their browser fetches the new configuration.

  To QA a change, load the page in an incognito or private window, or force a hard refresh, so your browser doesn't serve a cached version of `engine.js`. See [Will Kameleoon's script (engine.js) slow down my website?](/developer-docs/web-experimentation/faq#will-kameleoons-script-enginejs-slow-down-my-website) for cache duration details.
</Note>

### SDK implementations

For server-side and mobile implementations, Kameleoon collects data through SDK tracking calls. The SDK evaluates flags locally and sends tracking requests to the Data API in batches. The default flush interval is 1 second. You can also trigger an immediate flush with the `flush` method.

### Warehouse and offline conversions

If you import conversions from a data warehouse, Kameleoon accepts events through the Data API. A successful API response confirms that Kameleoon received the payload, not that the events are visible in reporting yet. Warehouse-pulled conversions go through an additional processing step before they appear in results. See [Warehouse-delayed conversions](#warehouse-delayed-conversions) for details.

## Data processing and reporting latency

Two separate timings determine when data becomes available.

| Stage                  | Timing                                               |
| ---------------------- | ---------------------------------------------------- |
| Event ingestion        | Near real-time (within seconds of the tracking call) |
| Reporting availability | After the visit ends                                 |

Events appear in **Live events** almost immediately after the tracking call fires. They do not appear on the Results page until Kameleoon has processed the completed visit.

## What "ended visit" means

The Results page reports on visits, not individual events. A visit ends when Kameleoon receives no new activity from the visitor for **30 minutes**.

Closing a browser tab often causes a visit to end, but closing the tab is not the formal condition. A visit ends based on inactivity, not browser state.

**Practical implication:** If you trigger a goal conversion and then immediately check the Results page, the visit is likely still active and the conversion does not appear yet. Wait until the visit ends, or use Live events to confirm the event fired in real time.

## Use Live events for QA, not the Results page

| Goal                                                        | Tool to use                                                                                   |
| ----------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
| Confirm that an event fired                                 | [Live events](/user-manual/experiment-analytics/analyze-results/data-and-metrics/live-events) |
| Verify that an experiment assigned a visitor to a variation | [Live events](/user-manual/experiment-analytics/analyze-results/data-and-metrics/live-events) |
| Debug conversion tracking                                   | [Live events](/user-manual/experiment-analytics/analyze-results/data-and-metrics/live-events) |
| Analyze experiment results                                  | Results page                                                                                  |
| Review statistical significance and conversion rates        | Results page                                                                                  |

**Live events** is the correct tool for real-time QA. The **Results page** is for analyzed, visit-based outcomes after experiments have run.

## Warehouse-delayed conversions

Conversions imported from a data warehouse follow a different processing timeline than web or SDK events. After Kameleoon accepts the payload through the Data API, a separate process merges those events into experiment reporting. Kameleoon doesn't guarantee same-day visibility for warehouse-imported conversions. Contact your Customer Success Manager for details on expected reporting timelines for your warehouse integration.

## Further reading

* [Live events](/user-manual/experiment-analytics/analyze-results/data-and-metrics/live-events)
* [Results page glossary](/user-manual/experiment-analytics/analyze-results/results-page/results-page-glossary)
* [How Kameleoon counts conversions](/user-manual/experiment-analytics/analyze-results/data-and-metrics/how-kameleoon-counts-conversions)
* [How Kameleoon counts sessions and visitors](/user-manual/experiment-analytics/analyze-results/data-and-metrics/how-kameleoon-counts-sessions-and-visitors)
