How should a rescheduled event preserve its original date?

The Citead team, updated

In short. Use EventRescheduled, keep the replacement date in startDate, and record the earlier date in previousStartDate.

Definition: Mark the event with eventStatus set to https://schema.org/EventRescheduled, put the replacement date in startDate, and put the earlier scheduled date in previousStartDate. Google requires eventStatus when previousStartDate is present.

Key facts

  • Google's Event structured data documentation says that a rescheduled event gets the relevant new dates in startDate and endDate.
  • Schema.org defines previousStartDate as the previously scheduled start date and assigns it the Date or DateTime value type in the Event vocabulary.
  • Schema.org describes EventStatusType as an enumeration whose instances represent states that an Event may be in, including the value used by eventStatus.
  • The Google documentation says that startDate must remain present because it helps identify the unique event, and that it must contain only the newly scheduled start date for a rescheduled event.

Which date belongs in each property?

startDate is the event's current start date and time. Google specifies an ISO 8601 value and recommends including the date and time. previousStartDate preserves the date that was scheduled before the change. Schema.org describes the two properties in the same relationship: the previous property stores the earlier date, while startDate stores the newly scheduled date.

The status describes the change. Set eventStatus to https://schema.org/EventRescheduled when the event has moved to a later date. Google says that if previousStartDate is added, eventStatus must also be added with that value, and other event statuses must not be used with it.

What should the JSON-LD contain?

Use the event's replacement start and end values in the current fields and retain the earlier start value separately:

{
  "@context": "https://schema.org",
  "@type": "Event",
  "startDate": "2025-07-21T19:00-05:00",
  "endDate": "2025-07-21T23:00-05:00",
  "eventStatus": "https://schema.org/EventRescheduled",
  "previousStartDate": "2025-03-21T19:00-05:00"
}

This follows Google's rescheduled event example. The date and time values include a UTC offset. Google's date and time guidance says to include the UTC or GMT offset, and says that when no timezone is provided Google uses the timezone of the event's location.

Do not delete startDate when the status changes. Google explicitly says that the property is required to help identify the unique event. Keep the other event properties that still describe the same event, such as its location, and update the date fields that changed.

What if the replacement date is not known yet?

Use EventPostponed while the event has been postponed and its new date is unknown. Google's instructions say to keep the original date in startDate until the new date is known. Once the replacement date is available, change eventStatus to EventRescheduled and update startDate and endDate with the new date information.

For multiple reschedulings, Google permits repeated previousStartDate values. Schema.org gives the same rule for the rare case in which an event has been postponed and rescheduled multiple times. The current date remains in startDate; the earlier scheduled dates remain in previousStartDate.

FAQ

Should the old date replace the new startDate?

No. Use the replacement date in startDate and the earlier scheduled date in previousStartDate. Google says startDate must contain only the newly scheduled start date for a rescheduled event.

Is previousStartDate valid without eventStatus?

No. Google's property guidance requires eventStatus with the value EventRescheduled when previousStartDate is added.

Can an event have more than one previous start date?

Yes. Google and Schema.org document repeated previousStartDate values for an event rescheduled multiple times.

Sources

  1. Google Search Central, "Event structured data", 8 September 2026
  2. Schema.org, "Event", undated
  3. Schema.org, "EventStatusType", undated

Check how a page reads to answer engines. Open the GEO score analyzer

Test a page and see what to fix first

The analysis usually takes less than 10 seconds and needs no account.

400,000+ pages scored in the public benchmark