Assess a Web Events CSV Before Funnel Analysis
Use an EazyDataFix run to assess a web events CSV, inspect proposed cleaning changes and identify questions that must be resolved before funnel analysis.
Funnel calculations can look precise even when the event export beneath them is inconsistent. Duplicate event IDs, malformed timestamps, mixed event names and unclear row grain can all change who appears to progress from one step to another. An EazyDataFix run provides a repeatable first pass over the file, but the analyst still decides whether the findings are safe for the intended funnel.
Start by defining what one event row means
Before running any tool, write down the expected grain of the CSV. A typical web events export may intend one row to represent one tracked event, with fields such as:
event_iduser_idoranonymous_idsession_idevent_nameevent_timestamppage_urldevice_typerevenue
Do not assume those fields have universal meanings. An event_id may be unique globally, unique only within a source, or regenerated during export. A user_id may be absent before authentication. A timestamp may be recorded in UTC, browser-local time or a mixture of both. Revenue may exist only on purchase events.
Record the intended funnel before cleaning. For example:
- A visitor views a product.
- The visitor starts checkout.
- The visitor completes a purchase.
Then decide whether progression is evaluated by user, anonymous visitor, session or another entity. Cleaning cannot settle that analytical choice. It can only help expose values and changes that require attention.
Keep the delivered file unchanged. Run preparation against a working copy or retain the original in immutable storage. That gives reviewers a stable reference if an unexpected count later needs investigation.
Run the combined EazyDataFix workflow
EazyDataFix accepts CSV inputs directly. The verified edf.run() pattern composes profiling, quality assessment, controlled cleaning and deterministic exploratory analysis in one workflow:
The returned RunResult keeps the stages available for inspection. In this tutorial, two outputs provide the initial review point:
result.assessment.quality.scoregives the assessment score.result.fix_result.change_logprovides structured evidence about cleaning changes.
Core cleaning and validation do not require an LLM. Agentic EDA narratives are optional, so a team can use the deterministic workflow without making a language model part of its required data-processing path.
This workflow saves effort by putting commonly repeated steps behind one reproducible call and returning inspectable evidence. It should not be described as faster than pandas, and it does not replace pandas for custom event logic. Its practical value is reducing repeated setup while keeping assessment and cleaning results connected.
Interpret the score as a signal, not approval
A quality score is useful for triage, comparison and deciding where to inspect first. It is not proof that the CSV is fit for funnel analysis.
A generic assessment cannot know, without your domain rules, that product_view, view_product and pdp_view are intended to represent the same funnel step. It cannot decide whether a missing user_id is acceptable for an anonymous visitor. It also cannot determine whether two similar purchase events are duplicates or legitimate retries without understanding the tracking implementation.
Use the score to prompt questions such as:
- Which quality findings contributed to concern?
- Are critical funnel columns affected?
- Is the issue concentrated in one day, browser or event source?
- Are missing identifiers expected before login?
- Did the tracking specification change during the extract period?
When comparing later files, keep the workflow and interpretation criteria stable. A score change is an investigation lead, not a diagnosis. Differences may come from actual source drift, a changed mix of event types or a revised export process.
Review the change log before using cleaned data
The change log is especially important for event data because apparently minor standardization can alter grouping and matching. Read it before calculating any funnel.
Focus the review on fields with analytical consequences:
Event names
Whitespace or representation inconsistencies can split one conceptual step across several labels. However, similar names are not always equivalent. checkout_started and checkout_resumed may describe different behavior. Use the tracking plan or source-system owner to confirm mappings instead of collapsing labels based on appearance alone.
Identifiers
Event, user and session identifiers should usually be treated as identifiers rather than measurements. Leading zeros, long digit strings and mixed alphanumeric values may carry meaning. Confirm that proposed changes do not alter identity or merge distinct entities.
A blank user_id may be valid when an anonymous identifier is present. Conversely, a row lacking every usable actor identifier may be unsuitable for a user-level funnel even if the event itself is valid.
Timestamps
Check whether timestamps were parsed consistently and whether raw values imply one time zone. Events near midnight or daylight-saving transitions deserve special attention. A technically valid timestamp can still be assigned to the wrong reporting day if its zone is misunderstood.
Also test sequence logic separately. A parsed purchase timestamp preceding checkout is a business-level contradiction that may indicate clock differences, late delivery, identity stitching problems or an incorrect join.
Numeric properties
Fields such as revenue, quantity and duration can contain strings, currency symbols or placeholders. Conversion may be appropriate, but inspect warnings and proposed changes first. Missing revenue on a page-view event is different from missing revenue on a purchase event, so event-specific rules remain necessary.
Add funnel-specific checks after the generic run
The combined workflow provides a foundation, not a complete web analytics model. Add checks that express the tracking contract and intended analysis.
A practical review should answer the following questions:
- Is the row grain stable? Determine whether rows are raw events, aggregated event counts or a mixture.
- Are event IDs unique under the correct scope? If uniqueness is source-specific, include the source in the key.
- Can events be assigned to an actor? Define the fallback relationship between authenticated and anonymous identifiers.
- Are funnel event names approved? Compare them with a versioned tracking specification.
- Are timestamps comparable? Confirm parsing, time zone and acceptable arrival delay.
- Are duplicate-looking events genuinely duplicates? Compare IDs, timestamps, actor identifiers and event properties before removing anything.
- Is ordering plausible? Flag later funnel steps that appear before earlier steps, while accounting for cross-device behavior and delayed ingestion.
- Did tracking coverage change? Review event volume and missingness by date, platform, browser version or application release.
Avoid silently dropping all duplicate-looking rows. Repeated events can represent retries, refreshes or intentional repeated actions. Define a duplicate using the tracking system’s identity rules, not merely every column that happens to match.
Turn the output into a review record
A useful handoff contains more than a cleaned CSV. Keep the source filename, extract period, workflow version, assessment output, change log, unresolved warnings and the analyst’s acceptance decisions together.
For every consequential proposed change, record one of these dispositions:
- Accepted as a safe representation change.
- Rejected because it changes event meaning or identity.
- Escalated to the tracking owner.
- Deferred because the funnel does not use the affected field.
- Covered by a documented exception.
This makes reruns easier to compare and prevents the same questions from being resolved informally each week. Reusable decisions save developer and analyst effort because the team no longer has to reconstruct every cleaning assumption from notebook cells or chat messages.
Complete a pre-funnel acceptance checklist
Before publishing conversion results, confirm that:
- The original CSV remains available.
- The intended row grain is documented.
- The assessment score has been reviewed in context.
- The change log contains no unexplained identifier or event-name changes.
- Timestamp format and time zone are understood.
- The funnel’s event-name mapping is versioned.
- Duplicate handling follows a defensible identity rule.
- Anonymous and authenticated users are handled explicitly.
- Failed or unknown sequence checks are quantified.
- Any exclusions are recorded and reproducible.
The actionable next step is simple: run edf.run() on a working copy, inspect the score and change log, and write down every unresolved question affecting event identity, sequence or meaning. Only calculate the funnel after those questions have an owner or a documented analytical treatment.
Frequently asked questions
Does edf.run() calculate a marketing funnel?
No. It composes profiling, quality assessment, controlled cleaning and deterministic EDA. You still define funnel steps, actor identity, sequence rules and conversion logic.
Should I accept every change in the EazyDataFix change log?
No. Review changes against the tracking specification, especially those affecting event names, identifiers, timestamps and numeric properties.
Does a high quality score prove event data is ready?
No. Treat the score as a triage signal. Domain-specific questions such as event equivalence, identity stitching and valid funnel order still require explicit checks.
Does the core EazyDataFix workflow require an LLM?
No. Core cleaning and validation workflows do not require an LLM. Agentic EDA narratives are optional.
Turn this idea into a reproducible workflow.
Install the stable release, use the verified quick start and inspect every cleaning or validation result.
Follow the EazyDataFix quickstart