XooCode(){

ControlAction

ControlAction is an Action subtype for lifecycle actions on a service, device, or process: activating, deactivating, suspending, resuming. Direct subtypes are ActivateAction, DeactivateAction, ResumeAction, and SuspendAction. It adds no properties of its own.

ControlAction is primarily used in IoT, SaaS lifecycle, and device-control contexts. There is no Google rich result for it, but email markup and activity streams use ControlAction subtypes to represent state transitions a user or system performs on a service.

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

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

Highlight legend:Required by GoogleRecommendedOptional
schema.org/ControlAction
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "ControlAction",
  "name": "Activated NordicStream Premium subscription",
  "agent": { "@type": "Person", "name": "Mette Kristensen" },
  "object": { "@type": "MediaSubscription", "name": "NordicStream Premium" },
  "startTime": "2026-03-01T19:02:00+01:00",
  "actionStatus": "https://schema.org/CompletedActionStatus"
}
</script>

Minimal valid version

The smallest markup that still produces a valid ControlAction 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/ControlAction (minimal)
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "ControlAction",
  "agent": { "@type": "Person", "name": "Mette Kristensen" },
  "object": { "@type": "MediaSubscription", "name": "NordicStream Premium" }
}
</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.

Common ControlAction 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

    Bare ControlAction instead of ActivateAction/DeactivateAction

    Wrong
    ControlAction with a state buried in name text
    Right
    Use ActivateAction, DeactivateAction, SuspendAction, or ResumeAction to express the specific lifecycle verb

    Subtypes carry the semantics machines need. A consumer should not have to parse the name field to know whether a subscription was activated or suspended.

About the example data

Activating a NordicStream Premium subscription, the media subscription referenced by WatchAction's accessibility requirement.

Comments

Loading comments...

Leave a comment