✓ TestedWorks with CSV, Excel, Google Sheets → JSON-LD Schema
By dataclean.to team · 2026-02-13
Event organizers, venues, ticketing platforms, and community organizations maintain event data in spreadsheets. Converting this data into schema.org Event markup makes your events eligible for Google's event rich results — the prominent event cards that appear for searches like "events near me" or specific event types. dataclean.to transforms your CSV event data into validated Event schema JSON-LD, cleaning the date, location, and pricing inconsistencies that are the primary barriers to valid event markup.
The Problem
Event data is some of the hardest to normalize because it involves complex date/time handling. A single spreadsheet might contain "Saturday, March 7" (no year, no time), "3/7/2026 7:00 PM EST", "2026-03-07T19:00", and "March 7-8" (multi-day event). Venues are listed as names without addresses, addresses without venue names, or just city names. Ticket prices might say "$25-$75", "Free", "Donation", "$40 (VIP: $100)", or "TBD." Recurring events appear as single rows with notes like "Every Friday" instead of individual date entries. Schema.org Event requires specific ISO 8601 date-time formats, structured PostalAddress locations, and Offer objects with numeric prices — none of which these raw values satisfy. Event schema type specification
How to Fix It
1
Upload your event spreadsheet
Import your CSV file containing event data. Include columns for event name, date, time, venue or location, description, ticket price, event URL, image, and organizer information.
2
Detect date and location fields
dataclean.to identifies date and time columns (even when combined or in non-standard formats), address and location text, price fields, and URL columns. Multiple date formats within the same column are detected and flagged.
3
Normalize dates, times, and durations
Convert all date representations to ISO 8601 date-time format with timezone. Multi-day events are split into startDate and endDate. Time-only values are combined with their corresponding dates. Events listed without times are flagged for review since Event schema strongly recommends start times.
4
Map columns to Event schema properties
Map your cleaned columns to Event properties: name, startDate, endDate, location (as Place with PostalAddress), offers (with price and availability), description, image, organizer (as Organization or Person), and eventAttendanceMode (online, offline, or mixed).
5
Export Event JSON-LD
Generate JSON-LD for each event with properly nested Place, PostalAddress, Offer, and Organization types. Test with Google's Rich Results Test to confirm event card eligibility, then deploy via hosted API or download for page integration.
Frequently Asked Questions
How does dataclean.to handle events with multiple ticket tiers?
If your CSV has separate columns for different ticket prices (General Admission, VIP, Early Bird), each can be mapped to a separate Offer within the Event schema. Each Offer includes its own price, name, and availability. If prices are combined in a single column, the lowest price is used with highPrice to indicate the range.
Can I generate schema for online or hybrid events?
Yes. dataclean.to supports the eventAttendanceMode property with values for OfflineEventAttendanceMode, OnlineEventAttendanceMode, and MixedEventAttendanceMode. For online events, the location can be a VirtualLocation with a URL instead of a physical address.
How should I handle recurring events in my CSV?
For schema markup, each occurrence of a recurring event should ideally be a separate row in your CSV with its own specific date. If your CSV has a single row with recurring event notation, you'll need to expand it into individual occurrences before schema generation, since Google's event rich results need specific dates.
Example: Input → Output
name
startDate
endDate
location
price
Tech Summit 2026
2026-06-15
2026-06-17
San Francisco CA
$299
tech summit 2026
June 15 2026
Jun 17 2026
San Francisco
CA
299
Red rows show common data quality issues. dataclean.to normalizes and generates JSON-LD automatically.