SaaS Product Events (CSV)
Synthetic product-analytics events (signup/login/upgrade) for testing event pipelines and warehouse loads. CSV twin.
event_id,ts,user_id,event,plan,properties
evt_0001,2026-01-10T09:00:00Z,usr_001,signup,free,"{""source"": ""sample"", ""i"": 0}"
evt_0002,2026-01-10T09:17:00Z,usr_002,login,pro,"{""source"": ""sample"", ""i"": 1}"
evt_0003,2026-01-10T09:34:00Z,usr_003,feature_used,team,"{""source"": ""sample"", ""i"": 2}"
evt_0004,2026-01-10T09:51:00Z,usr_004,upgrade,free,"{""source"": ""sample"", ""i"": 3}"
evt_0005,2026-01-10T10:08:00Z,usr_005,cancel,pro,"{""source"": ""sample"", ""i"": 4}"
evt_0006,2026-01-10T10:25:00Z,usr_006,invite_sent,team,"{""source"": ""sample"", ""i"": 5}"
evt_0007,2026-01-10T10:42:00Z,usr_007,signup,free,"{""source"": ""sample"", ""i"": 6}"
evt_0008,2026-01-10T10:59:00Z,usr_008,login,pro,"{""source"": ""sample"", ""i"": 7}"
evt_0009,2026-01-10T11:16:00Z,usr_001,feature_used,team,"{""source"": ""sample"", ""i"": 8}"
evt_0010,2026-01-10T11:33:00Z,usr_002,upgrade,free,"{""source"": ""sample"", ""i"": 9}"
evt_0011,2026-01-10T11:50:00Z,usr_003,cancel,pro,"{""source"": ""sample"", ""i"": 10}"
evt_0012,2026-01-10T12:07:00Z,usr_004,invite_sent,team,"{""source"": ""sample"", ""i"": 11}"
evt_0013,2026-01-10T12:24:00Z,usr_005,signup,free,"{""source"": ""sample"", ""i"": 12}"
evt_0014,2026-01-10T12:41:00Z,usr_006,login,pro,"{""source"": ""sample"", ""i"": 13}"
evt_0015,2026-01-10T12:58:00Z,usr_007,feature_used,team,"{""source"": ""sample"", ""i"": 14}"
evt_0016,2026-01-10T13:15:00Z,usr_008,upgrade,free,"{""source"": ""sample"", ""i"": 15}"
evt_0017,2026-01-10T13:32:00Z,usr_001,cancel,pro,"{""source"": ""sample"", ""i"": 16}"
evt_0018,2026-01-10T13:49:00Z,usr_002,invite_sent,team,"{""source"": ""sample"", ""i"": 17}"
evt_0019,2026-01-10T14:06:00Z,usr_003,signup,free,"{""source"": ""sample"", ""i"": 18}"
evt_0020,2026-01-10T14:23:00Z,usr_004,login,pro,"{""source"": ""sample"", ""i"": 19}"
evt_0021,2026-01-10T14:40:00Z,usr_005,feature_used,team,"{""source"": ""sample"", ""i"": 20}"
evt_0022,2026-01-10T14:57:00Z,usr_006,upgrade,free,"{""source"": ""sample"", ""i"": 21}"
evt_0023,2026-01-10T15:14:00Z,usr_007,cancel,pro,"{""source"": ""sample"", ""i"": 22}"
evt_0024,2026-01-10T15:31:00Z,usr_008,invite_sent,team,"{""source"": ""sample"", ""i"": 23}"
Specifications
- Rows
- 24
- Schema
- event_id, ts, user_id, event, plan, properties
Testing contract
Expected to pass- Scenario
- Exercise SaaS Product Events (CSV) in its saas workflow. Synthetic product-analytics events (signup/login/upgrade) for testing event pipelines and warehouse loads.
- Expected result
- 24 data records using ',' delimiters and UTF-8; header fields are event_id, ts, user_id, event, plan, properties; data-record widths (columns:count) are {"6":24}.
What is a .csv file?
CSV (Comma-Separated Values) is a plain-text tabular format where rows are lines and fields are separated by commas, with quoting rules for values that contain delimiters, quotes, or newlines. It has no formal type system and depends on encoding and dialect conventions. It is the most portable format for tabular data exchange.
How to use this file
Use an example CSV to test parsers against quoting and embedded-delimiter edge cases, header handling, encoding detection, and import pipelines into databases or spreadsheets.
How to use this file for testing
“SaaS Product Events (CSV)” is a deterministic Testaroo fixture for Data import, CSV parsing. Realistic faker-generated datasets with documented schemas for testing import and ETL flows.
Documented properties for this file: 24 rows · schema: event_id, ts, user_id, event, plan, properties. Compare results against paired or grouped companions on this page when present (clean↔damaged, searchable↔scanned, or format twins) so scores stay reproducible across runs.
Download the file once, keep the path stable in CI or local scripts, and treat the spec table as the contract: dimensions, seeds, field lists, and roles are intentional. Corrupt or invalid samples are labelled as such, expect parsers to fail loudly rather than silently accept them.
Data fixtures document their exact quirks (delimiters, encodings, null handling, schema, and row counts) in the spec table. Point your parser or importer at the file and assert it handles the documented edge cases; clean and deliberately-messy siblings make before/after diffs straightforward.
Code examples
import pandas as pd
df = pd.read_csv("product-events.csv")
print(df.head())
print(df.dtypes)Generated by generation/data_domains_wave_c.py. Free for any use, no attribution required, license.
Related files
- csv10,000-Row CSVA CSV with 10,000 data rows, for testing streaming parsers, memory handling, and import performance.

- csvAlder Books Reconciliation: Trade credit referencesTrade credit references for Alder Books Reconciliation. 3 trade references with credit limits, highest balance reached and average days to pay. Every highest_balance_usd is below its own credit_limit_usd, so a utilisation check passes on all three, and the two supplier names are the suppliers the inventory-manufacturing model actually buys from.

- csvAlder Table Bistro: Allergen matrixAllergen matrix for Alder Table Bistro. 4 menu items across 18 columns: the fourteen listed allergens plus a count and a sources column naming the ingredient behind every Y. Derived from the recipe lines, so a dish whose recipe contains a dairy ingredient reads Y under milk. 2 of 4 dishes declare at least one allergen.

- csvAlder Table Bistro: Allergen matrix missing a menu itemAllergen matrix missing a menu item for Alder Table Bistro. Intentionally incomplete. 3 rows where the recipes cost 4 menu items. MENU-04 (Potato gratin) has no row, although it has costed recipe lines in plate-costs.csv and sales in sales-mix-pmix.csv. Its correct row would declare: milk: Cream.

- csvAlder Table Bistro: Allergen menu as dataAllergen menu as data for Alder Table Bistro. 4 rows and 21 columns: the menu item id, the printed section, the menu price, the 14 allergen columns, the declared count and the ingredient sources. 2 of 4 dishes declare at least one allergen. Joins to printed-menu.pdf and to plate-costs.csv on menu_item_id.

- csvAlder Table Bistro: Allergen menu missing a dish on the menuAllergen menu missing a dish on the menu for Alder Table Bistro. Intentionally incomplete. 3 rows where allergen-menu.csv has 4. MENU-02 Tomato soup is printed on printed-menu.pdf at 11.50 CAD and declares 1 allergen in the costing folder, and it has no row here. The remaining rows are correct.
