Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/intelligems-create-custom-event-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Intelligems External Create Custom Event API
version: v25-10-beta
description: Programmatic access to manage Intelligems A/B tests, personalizations, and experiences, to define custom events, and to pull experiment and sitewide analytics for a Shopify store. Authenticate with an API key in the `intelligems-access-token` header.
contact:
name: Intelligems
url: https://docs.intelligems.io/developer-resources/external-api
servers:
- url: https://api.intelligems.io
description: Production
security:
- intelligems_access_token: []
tags:
- name: Create Custom Event
description: 'The following custom event types are supported by the Intelligems Custom Events API:
- `clickEvent` — Fires when a visitor clicks an element matching one or more CSS selectors
- `scrollDepth` — Fires when a visitor scrolls past a configured percentage of the page (separate thresholds for mobile and desktop)
- `pageView` — Fires when a visitor views a page matching `applyToUrls`
- `productPageView` — Fires when a visitor views one of a specific set of product pages
- `collectionPageView`…'
paths:
/v25-10-beta/custom-events:
put:
tags:
- Create Custom Event
description: 'Creates a new custom event, or updates an existing one by passing back its `id`.
`customEvent` accepts either a single event object, or an array of event
objects (up to 50) to create/update several in one request.
Custom events let you define client-side behaviors (clicks, scroll depth,
page views, etc.) that can be tracked as goals or triggers on experiences.
This is a full PUT replacement — when updating an existing event, the entire
event configuration is replaced with the provided data. Any optional fields
omitted from the request are reset to their defaults, not preserved from the
previous version.
### Required Fields (inside each event object)
- `type` - The kind of custom event (see supported types above)
- `name` - A name for the custom event
- `settings` - Type-specific configuration (e.g. CSS selectors for `clickEvent`, scroll percentages for `scrollDepth`)
- `applyToUrls` - Required only for `pageView` (at least one rule); has no effect and is ignored for `productPageView`/`collectionPageView`
### Optional Fields (inside each event object)
- `id` (UUID) - Pass back the `id` from a previous create/update response to update that event in place instead of creating a new one. Omit to create a new event. Supplying an `id` that doesn''t belong to your organization creates a new event rather than adopting or overwriting it.
- `description` (string) - Description of the custom event
### Important Notes
- `customEvent` must be either a single event object or an array of up to 50 event objects — not a mix of anything else.
- `identifier` is server-generated and read-only; it is not guaranteed to stay the same across updates to the same event. Use `id` as the stable reference for an event, not `identifier`.
- Returns a `403` if your organization''s plan does not include custom events tracking. This applies to both creating a new event and updating an existing one.'
requestBody:
content:
application/json:
schema:
type: object
properties:
customEvent:
anyOf:
- oneOf:
- type: object
properties:
id:
type: string
format: uuid
pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
name:
type: string
description: Display name shown in the Events Manager and when selecting metrics for an experience.
description:
description: Internal note explaining what this event tracks.
anyOf:
- type: string
- type: 'null'
applyToUrls:
minItems: 1
type: array
items:
type: object
properties:
matchBy:
type: string
enum:
- equals
- contains
- startsWith
- endsWith
- doesNotEqual
- doesNotContain
- doesNotStartWith
- doesNotEndWith
- isNull
- isNotNull
- regex
value:
type: string
error:
anyOf:
- type: string
- type: 'null'
required:
- matchBy
- value
description: Optional URL rules restricting which pages this event fires on. Omit to track on all pages.
type:
type: string
const: pageView
description: Determines which visitor behavior is tracked and which `settings` shape is required. Use pageView for any page visit, productPageView/collectionPageView for specific product or collection pages, clickEvent/elementViewed for CSS-selector-targeted DOM interactions, scrollDepth for scroll-percentage milestones, and javascriptEvent for a custom JS snippet that fires the event.
settings:
type: object
properties: {}
required:
- name
- applyToUrls
- type
- settings
- type: object
properties:
id:
type: string
format: uuid
pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
name:
type: string
description: Display name shown in the Events Manager and when selecting metrics for an experience.
description:
description: Internal note explaining what this event tracks.
anyOf:
- type: string
- type: 'null'
type:
type: string
const: productPageView
description: Determines which visitor behavior is tracked and which `settings` shape is required. Use pageView for any page visit, productPageView/collectionPageView for specific product or collection pages, clickEvent/elementViewed for CSS-selector-targeted DOM interactions, scrollDepth for scroll-percentage milestones, and javascriptEvent for a custom JS snippet that fires the event.
settings:
minItems: 1
type: array
items:
type: object
properties:
productId:
type: string
description: Shopify product ID to track page views for.
handle:
type: string
description: Shopify product handle to track page views for.
required:
- productId
- handle
required:
- name
- type
- settings
- type: object
properties:
id:
type: string
format: uuid
pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
name:
type: string
description: Display name shown in the Events Manager and when selecting metrics for an experience.
description:
description: Internal note explaining what this event tracks.
anyOf:
- type: string
- type: 'null'
type:
type: string
const: collectionPageView
description: Determines which visitor behavior is tracked and which `settings` shape is required. Use pageView for any page visit, productPageView/collectionPageView for specific product or collection pages, clickEvent/elementViewed for CSS-selector-targeted DOM interactions, scrollDepth for scroll-percentage milestones, and javascriptEvent for a custom JS snippet that fires the event.
settings:
minItems: 1
type: array
items:
type: object
properties:
handle:
type: string
description: Shopify collection handle to track page views for.
required:
- handle
required:
- name
- type
- settings
- type: object
properties:
id:
type: string
format: uuid
pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
name:
type: string
description: Display name shown in the Events Manager and when selecting metrics for an experience.
description:
description: Internal note explaining what this event tracks.
anyOf:
- type: string
- type: 'null'
applyToUrls:
description: Optional URL rules restricting which pages this event fires on. Omit to track on all pages.
anyOf:
- type: array
items:
type: object
properties:
matchBy:
type: string
enum:
- equals
- contains
- startsWith
- endsWith
- doesNotEqual
- doesNotContain
- doesNotStartWith
- doesNotEndWith
- isNull
- isNotNull
- regex
value:
type: string
error:
anyOf:
- type: string
- type: 'null'
required:
- matchBy
- value
- type: 'null'
type:
type: string
const: clickEvent
description: Determines which visitor behavior is tracked and which `settings` shape is required. Use pageView for any page visit, productPageView/collectionPageView for specific product or collection pages, clickEvent/elementViewed for CSS-selector-targeted DOM interactions, scrollDepth for scroll-percentage milestones, and javascriptEvent for a custom JS snippet that fires the event.
settings:
type: object
properties:
selectors:
minItems: 1
type: array
items:
type: string
minLength: 1
description: CSS selectors identifying the elements whose clicks should be tracked.
required:
- selectors
required:
- name
- type
- settings
- type: object
properties:
id:
type: string
format: uuid
pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
name:
type: string
description: Display name shown in the Events Manager and when selecting metrics for an experience.
description:
description: Internal note explaining what this event tracks.
anyOf:
- type: string
- type: 'null'
applyToUrls:
description: Optional URL rules restricting which pages this event fires on. Omit to track on all pages.
anyOf:
- type: array
items:
type: object
properties:
matchBy:
type: string
enum:
- equals
- contains
- startsWith
- endsWith
- doesNotEqual
- doesNotContain
- doesNotStartWith
- doesNotEndWith
- isNull
- isNotNull
- regex
value:
type: string
error:
anyOf:
- type: string
- type: 'null'
required:
- matchBy
- value
- type: 'null'
type:
type: string
const: elementViewed
description: Determines which visitor behavior is tracked and which `settings` shape is required. Use pageView for any page visit, productPageView/collectionPageView for specific product or collection pages, clickEvent/elementViewed for CSS-selector-targeted DOM interactions, scrollDepth for scroll-percentage milestones, and javascriptEvent for a custom JS snippet that fires the event.
settings:
type: object
properties:
selectors:
minItems: 1
type: array
items:
type: string
minLength: 1
description: CSS selectors identifying the elements whose visibility in the viewport should be tracked.
required:
- selectors
required:
- name
- type
- settings
- type: object
properties:
id:
type: string
format: uuid
pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
name:
type: string
description: Display name shown in the Events Manager and when selecting metrics for an experience.
description:
description: Internal note explaining what this event tracks.
anyOf:
- type: string
- type: 'null'
applyToUrls:
description: Optional URL rules restricting which pages this event fires on. Omit to track on all pages.
anyOf:
- type: array
items:
type: object
properties:
matchBy:
type: string
enum:
- equals
- contains
- startsWith
- endsWith
- doesNotEqual
- doesNotContain
- doesNotStartWith
- doesNotEndWith
- isNull
- isNotNull
- regex
value:
type: string
error:
anyOf:
- type: string
- type: 'null'
required:
- matchBy
- value
- type: 'null'
type:
type: string
const: scrollDepth
description: Determines which visitor behavior is tracked and which `settings` shape is required. Use pageView for any page visit, productPageView/collectionPageView for specific product or collection pages, clickEvent/elementViewed for CSS-selector-targeted DOM interactions, scrollDepth for scroll-percentage milestones, and javascriptEvent for a custom JS snippet that fires the event.
settings:
type: object
properties:
mobile:
type: object
properties:
percentage:
type: number
minimum: 0
maximum: 100
description: Percentage of page height scrolled (0-100) that triggers the event.
required:
- percentage
description: Scroll depth threshold to track on mobile viewports.
desktop:
type: object
properties:
percentage:
type: number
minimum: 0
maximum: 100
description: Percentage of page height scrolled (0-100) that triggers the event.
required:
- percentage
description: Scroll depth threshold to track on desktop viewports.
required:
- mobile
- desktop
required:
- name
- type
- settings
- type: object
properties:
id:
type: string
format: uuid
pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
name:
type: string
description: Display name shown in the Events Manager and when selecting metrics for an experience.
description:
description: Internal note explaining what this event tracks.
anyOf:
- type: string
- type: 'null'
applyToUrls:
description: Optional URL rules restricting which pages this event fires on. Omit to track on all pages.
anyOf:
- type: array
items:
type: object
properties:
matchBy:
type: string
enum:
- equals
- contains
- startsWith
- endsWith
- doesNotEqual
- doesNotContain
- doesNotStartWith
- doesNotEndWith
- isNull
- isNotNull
- regex
value:
type: string
error:
anyOf:
- type: string
- type: 'null'
required:
- matchBy
- value
- type: 'null'
type:
type: string
const: javascriptEvent
description: Determines which visitor behavior is tracked and which `settings` shape is required. Use pageView for any page visit, productPageView/collectionPageView for specific product or collection pages, clickEvent/elementViewed for CSS-selector-targeted DOM interactions, scrollDepth for scroll-percentage milestones, and javascriptEvent for a custom JS snippet that fires the event.
settings:
type: object
properties:
code:
type: string
description: 'JavaScript snippet injected into a <script> tag on the page. To register an occurrence, it must call `window.igEvents.push({ event: "<identifier>" })` where `<identifier>` exactly matches this event''s own identifier. The identifier is server-generated and only returned after creation, so write a placeholder here and update the event''s code afterward with the returned identifier.'
required:
- code
required:
- name
- type
- settings
type: object
- maxItems: 50
type: array
items:
oneOf:
- type: object
properties:
id:
type: string
format: uuid
pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
name:
type: string
description: Display name shown in the Events Manager and when selecting metrics for an experience.
description:
description: Internal note explaining what this event tracks.
anyOf:
- type: string
- type: 'null'
applyToUrls:
minItems: 1
type: array
items:
type: object
properties:
matchBy:
type: string
enum:
- equals
- contains
- startsWith
- endsWith
- doesNotEqual
- doesNotContain
- doesNotStartWith
- doesNotEndWith
- isNull
- isNotNull
- regex
value:
type: string
error:
anyOf:
- type: string
- type: 'null'
required:
- matchBy
- value
description: Optional URL rules restricting which pages this event fires on. Omit to track on all pages.
type:
type: string
const: pageView
description: Determines which visitor behavior is tracked and which `settings` shape is required. Use pageView for any page visit, productPageView/collectionPageView for specific product or collection pages, clickEvent/elementViewed for CSS-selector-targeted DOM interactions, scrollDepth for scroll-percentage milestones, and javascriptEvent for a custom JS snippet that fires the event.
settings:
type: object
properties: {}
required:
- name
- applyToUrls
- type
- settings
- type: object
properties:
id:
type: string
format: uuid
pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
name:
type: string
description: Display name shown in the Events Manager and when selecting metrics for an experience.
description:
description: Internal note explaining what this event tracks.
anyOf:
- type: string
- type: 'null'
type:
type: string
const: productPageView
description: Determines which visitor behavior is tracked and which `settings` shape is required. Use pageView for any page visit, productPageView/collectionPageView for specific product or collection pages, clickEvent/elementViewed for CSS-selector-targeted DOM interactions, scrollDepth for scroll-percentage milestones, and javascriptEvent for a custom JS snippet that fires the event.
settings:
minItems: 1
type: array
items:
type: object
properties:
productId:
type: string
description: Shopify product ID to track page views for.
handle:
type: string
description: Shopify product handle to track page views for.
required:
- productId
- handle
required:
- name
- type
- settings
- type: object
properties:
id:
type: string
format: uuid
pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
name:
type: string
description: Display name shown in the Events Manager and when selecting metrics for an experience.
description:
description: Internal note explaining what this event tracks.
anyOf:
- type: string
- type: 'null'
type:
type: string
const: collectionPageView
description: Determines which visitor behavior is tracked and which `settings` shape is required. Use pageView for any page visit, productPageView/collectionPageView for specific product or collection pages, clickEvent/elementViewed for CSS-selector-targeted DOM interactions, scrollDepth for scroll-percentage milestones, and javascriptEvent for a custom JS snippet that fires the event.
settings:
minItems: 1
type: array
items:
type: object
properties:
handle:
type: string
description: Shopify collection handle to track page views for.
required:
- handle
# --- truncated at 32 KB (112 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/intelligems/refs/heads/main/openapi/intelligems-create-custom-event-api-openapi.yml