Update Experience
Update experience
Updates an existing experience by ID. This is a full PUT replacement — the entire experience configuration is replaced with the provided data.
All required fields must be included in every request. Any optional fields omitted will be reset to their defaults.
Required Fields (inside experience)
- id (UUID) — ID of the experience to update
- name (string) — Name of the experience
- type (string) — Send back the value from the GET response. A content test can switch between "content/advanced", "content/onsiteEdits", "content/url", "content/theme" and "content/template". An "onsiteUpsell" test keeps that type. A personalization keeps its stored "personalization" or "personalization/offer"; the only change is that a "personalization/offer" whose offer is removed becomes "personalization".
- experienceAnalysis — Analysis configuration (includes analyticsViewType)
- variations — Array of variation objects. Each variation must include its id.
- experienceKeyMetrics — Array of key metric objects. Include id to preserve an existing metric; omit it to add a new one (an id is generated automatically). To attach a custom event as a key metric, set customEventId to an id from the custom events API — the per-experience custom-metric link is created automatically.
Optional Fields (inside experience)
- description (string) — Description of the experience
- currency — Currency display settings
- previewPath (string) — URL path for previewing
- audience — Audience targeting rules (must include id if provided)
- excludeCurrency — Currency/geo-based visitor targeting. When exclude is true, only visitors matching the given currency (ISO 4217 code), are included in the experience; everyone else is excluded. Set currency to null (with exclude: false) to disable.
- experiencePageTargeting — Array of page targeting rules (each must include id)
Important Notes
- The experience must exist and belong to your organization
- Updating a running experience may affect active visitors
- Variation weights must sum to 100
- Variations, page targeting, and audience filters must include their id field. Key metrics are the exception: omit id to add a new one, since a new metric has no existing id to reference.
- Custom events already attached to the experience (experienceCustomMetrics) are kept on every update, whether or not they are key metrics. Removing a key metric does not detach its custom event.
- A personalization follows the same rules on update as on create: one variation, a show/hide audience, and the supported changes. What this request can't carry — product targeting, offer widgets, checkout blocks, and where the personalization came from — is kept from the stored experience.
- Unlike the rest of the body, an offer's products is kept when you leave it out. Send [] to remove every product, so the offer covers every product again, or send the whole new list to replace it. A different offer on a variation (a new id) starts with no products. Read the current list with GET /experiences/{experienceId}/offer-products; its entries' id, set and variants can be edited and sent back. See Create experience for the fields.
- An update never turns a test into a personalization or a personalization into a test.
- Checkout blocks and post-purchase upsells can't be sent in this body, and an update keeps the ones already on each variation it keeps. Add, change, and delete them with /v25-10-beta/experiences/{experienceId}/checkout-blocks.
- Onsite upsells are the exception to the full replace: a variation that leaves components out keeps its stored upsells, and one that sends the field replaces them with the list sent (an empty list removes them). To change an upsell, send it back with its id from the GET response and the whole config; the Agentic Logic placement it is bound to stays attached. Leave template out to keep its current template. Without an id it is a new upsell, with the same checks as on create (storefront access token, plan scope, no new bundles). An id that isn't on that variation is rejected.
Rate Limit: 50 requests per 30s window, refilling 25 tokens every 30s.
put/v25-10-beta/experiences/{experienceId}
Request
- Base URLhttps://api.intelligems.io
- AuthAPI key in header intelligems-access-token
- TypeScriptA function with typed inputs. Its response is checked against the schema.
Path parameters
experienceIdstring required
Request body
Response
OK
Changes
No recorded changes to this operation across all 1 revision of this API.