Experience Events
GenStudio Events notify your application whenever an approved Experience is created, has its metadata updated, or is deleted. Subscribe once through Adobe I/O Events, and your integration reacts in near real time instead of polling the GenStudio API.
Events are intentionally lean: they tell you what happened and give you enough context to decide whether to act. When you need the full Experience — fields, variants, asset URLs — use the event's selfLink, or call GET /experiences/{experienceId} directly using the experienceId from the event.
Overview
GenStudio Events are delivered through Adobe I/O Events, Adobe's shared eventing platform. The provider is registered as GenStudio Events, and every event uses the CloudEvents v1.0 envelope.
- An approved Experience is created, updated, or deleted in GenStudio.
- GenStudio publishes a CloudEvents-formatted event to Adobe I/O Events.
- Adobe I/O Events delivers the event to every subscriber, by webhook, Journaling API, or Amazon EventBridge, according to their registration.
- Your application reads the event and, if it needs more than the event carries, calls the GenStudio API for the full record.
Event types
com.adobe.genstudio.experience.createdcom.adobe.genstudio.experience.metadataUpdatedcom.adobe.genstudio.experience.deletedOnly approved (published) Experiences generate events. Draft and rejected Experiences do not.
Event envelope
Every event uses the CloudEvents v1.0 envelope:
{
"specversion": "1.0",
"id": "<uuid>",
"source": "urn:adobe:genstudio:content",
"type": "com.adobe.genstudio.experience.<event>",
"datacontenttype": "application/json",
"dataschema": "https://ns.adobe.com/schemas/genstudio/events/com.adobe.genstudio.experience.<event>",
"time": "<ISO 8601 timestamp>",
"subject": "<experienceId>",
"data": { }
}
idtypedataschemadata for this event code.timesubjectexperienceId the event is about.dataThe GenStudio API is additive-only: new optional fields may be added to data over time. Design your integration to ignore unknown fields so it keeps working as the payload grows.
Event payloads
experience.created and experience.metadataUpdated
Both events carry the same shape — a summary of the Experience:
{
"experienceId": "urn:aaid:aem:<uuid>",
"orgId": "<IMS Org ID>",
"createdAt": "2026-06-01T12:00:00.000Z",
"modifiedAt": "2026-06-01T12:00:00.000Z",
"title": "Example Experience",
"channel": "linkedin",
"keywords": ["image", "text"],
"brands": [{"name": "Acme"}],
"personas": [{"name": "Active Lifestyle Enthusiast"}],
"products": [{"name": "Trail Runner Pro"}],
"campaigns": [],
"languages": ["en_US"],
"selfLink": "https://genstudio.adobe.io/experiences/urn:aaid:aem:<uuid>"
}
selfLink points directly at the Experience — call it (with your OAuth Server-to-Server credentials) to retrieve the full record, including fields, variants, and asset URLs. See Authentication and the API Reference.
experience.deleted
A deleted Experience can no longer be read back, so this event carries only the minimum needed to identify what was removed:
{
"experienceId": "urn:aaid:aem:<uuid>",
"orgId": "<IMS Org ID>"
}
Freshness
The GenStudio API is eventually consistent, so a GET /experiences/{experienceId} call made immediately after an event may briefly return stale data. If this matters for your use case, compare modifiedAt from the event's data against modifiedAt in the GET response, and retry the GET if the response is older than the event.
Delivery characteristics
- Delivery semantics — At-least-once. Deduplicate using the event
id. - Ordering — Not guaranteed. Use
timeandmodifiedAtif you need to reason about sequence. - Source of truth — The GenStudio API, not the event payload. Treat events as a signal to fetch or re-sync, not as the authoritative record.
- Max payload size — 64 KB per event (a CloudEvents / Adobe I/O Events constraint).
Subscribe to GenStudio Events
-
Visit https://developer.adobe.com/console/projects and create or open a project.
-
Press Add to Project and then Event. This opens the Add Events dialog.
-
Select GenStudio Events from the list of available providers.
-
Select the event types you want to receive (
Experience Created,Experience Metadata Updated,Experience Deleted). -
Choose an OAuth Server-to-Server credential (or create one) for the registration.
-
Provide a name and description for your event registration.
-
Choose how to consume the events:
- Adobe I/O Events Webhooks — receive events as HTTP POST requests to a URL you control.
- Adobe I/O Journaling API — pull events at your own cadence.
- Amazon EventBridge — route events into your AWS account.
For debugging, GenStudio events arriving for your organization appear in the Event Browser tab of your registration, where you can inspect delivery status and payloads.
For general background on consuming Adobe I/O Events, see Introduction to Adobe I/O Events Webhooks and Introduction to Journaling.