XooCode(){

Action

Action is the parent type for every verb-like thing in schema.org: searching, buying, watching, reading, subscribing, registering, tracking, travelling. It has around 90 subtypes organised under sixteen Level-1 branches (AchieveAction, AssessAction, ConsumeAction, ControlAction, CreateAction, FindAction, InteractAction, MoveAction, OrganizeAction, PlayAction, SearchAction, SeekToAction, SolveMathAction, TradeAction, TransferAction, UpdateAction). Bare Action is used when no specific subtype fits, but that is rare; in practice you almost always reach for a subtype.

Action adds 7 properties of its own: agent (who performs it), object (the direct object of the verb), participant (other involved parties), startTime, endTime, location, and result. It also exposes actionStatus (PotentialActionStatus / ActiveActionStatus / CompletedActionStatus / FailedActionStatus) and error for reporting failures. Most Action subtypes add their own properties on top.

Full example of schema.org/Action json-ld markup

The markup is verified as valid with Rich Results Test from Google.

Highlight legend:Required by GoogleRecommendedOptional
schema.org/Action
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Action",
  "name": "Schema audit of XooTee product page",
  "agent": { "@type": "SoftwareApplication", "name": "XooStructured" },
  "object": { "@type": "Product", "name": "XooTee Classic" },
  "startTime": "2026-04-12T14:03:00+01:00",
  "endTime": "2026-04-12T14:03:18+01:00",
  "actionStatus": "https://schema.org/CompletedActionStatus",
  "location": { "@type": "VirtualLocation", "url": "https://xoocode.com/structured-data-testing-tool" },
  "result": { "@type": "CreativeWork", "name": "XooTee validation report", "url": "https://xoocode.com/reports/xootee-2026-04-12" }
}
</script>

potentialAction vs completed actions

Most Action markup on the web lives inside a potentialAction property on another entity (a WebSite, an Article, a Product). That means: "here is an action a user could take on this entity." The classic example is SearchAction inside a WebSite, which declares a site-search URL template. A much smaller slice of Action markup represents completed actions (in email receipts, activity feeds, reservation confirmations) where actionStatus is CompletedActionStatus and agent, startTime, and result are all present.

target and EntryPoint

The target property points to where the action happens. The simplest form is a URL string. The richer form is an EntryPoint with urlTemplate (placeholder-bearing URL), actionPlatform (DesktopWebPlatform, MobileWebPlatform, iOSPlatform, AndroidPlatform), and optional inLanguage. Use EntryPoint when the action has a templated URL or multiple platforms.

Minimal valid version

The smallest markup that still produces a valid Action entity. Use it as the floor. Reach for the advanced example above when you want search engines and AI agents to understand more about your content.

schema.org/Action (minimal)
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Action",
  "name": "Schema audit",
  "agent": { "@type": "SoftwareApplication", "name": "XooStructured" },
  "object": { "@type": "Product", "name": "XooTee Classic" }
}
</script>

Google rich results this unlocks

Markup matching this example makes your page eligible for the following Google Search rich results. The primary target drives the required / recommended property classification in the advanced code block above.

  • No dedicated rich result (subtypes trigger rich results)
    Google docs

Common Action mistakes

Mistakes that pass validation but silently fail to earn rich results or mislead consumers walking the graph. Avoid these and your markup will be ahead of most sites in the wild.

  1. 01

    Using bare Action when a subtype fits

    Wrong
    "@type": "Action" for a search, purchase, or view
    Right
    Reach for the specific subtype (SearchAction, BuyAction, ViewAction, etc.), bare Action should be a last resort

    Google and other consumers match rich results by subtype. A bare Action conveys almost no semantics beyond "something happened." Use one of the 90+ subtypes unless your verb genuinely has no closer match.

  2. 02

    actionStatus as a bare string

    Wrong
    "actionStatus": "completed"
    Right
    "actionStatus": "https://schema.org/CompletedActionStatus"

    actionStatus takes an ActionStatusType enumeration value (the URL form or PascalCase shorthand). Free-form strings are silently dropped.

About the example data

A generic example representing the XooStructured IDE audit action, performed by the XooStructured application on a Product schema, producing a validation report.

Comments

Loading comments...

Leave a comment