Skip to main content
Sitecore Documentation
  • Learn
  • Downloads
  • Changelog
  • Roadmap
CDPCloud Portal
Sitecore CDP Developer Documentation
  • Developing with Sitecore CDP
            • Engage.init(settings)
            • Engage.initServer(settings)
            • Engage.initServer.handleCookie(req, res)
            • Engage.getBrowserId()
            • Engage.getGuestId()
            • Engage.updatePointOfSale(pointOfSale)
            • Engage.pageView(eventData[, extensionData])
            • Engage.identity(eventData[, extensionData])
            • Engage.event(type, eventData[, extensionData])
            • Engage.addToEventQueue(type, eventData[, extensionData])
            • Engage.processEventQueue()
            • Engage.clearEventQueue()
            • EngageServer.pageView(eventData, req[, extensionData])
            • EngageServer.identity(eventData, req[, extensionData])
            • EngageServer.event(type, eventData, req[, extensionData])
            • window.Engage.triggerExperiences()
        • Troubleshooting
        • Release notes
  1. Functions
  1. Stream API
  2. Functions
  3. Engage.event(type, eventData[, extensionData])

Engage.event(type, eventData[, extensionData])

The event() function sends one of the following:

  • A standard event, for example, ADD, CONFIRM, or CHECKOUT.

  • A custom event with custom data of your choice.

sidebar. Parameters for a standard event

Parameter

Type

Description

type

string

The type of the standard event. If you set this value to any of the Sitecore CDP reserved event names, for example, VIEW, ADD, or CONFIRM, the event becomes a standard event.

Sitecore CDP reserved event names:

  • Any event name starting with "SC_"

  • "ADD" - standard ADD event.

  • "ADD_CONSUMERS" - standard ADD_CONSUMERS event.

  • "ADD_CONTACTS" - standard ADD_CONTACTS event.

  • "CAMPAIGN_TRACKING" - internally reserved event. Do not use.

  • "CHECKOUT" - standard CHECKOUT event.

  • "CLEAR_CART" - standard CLEAR_CART event.

  • "CONFIRM" - standard CONFIRM event.

  • "FEEDBACK" - FEEDBACK event.

  • "IDENTITY" - standard IDENTITY event.

  • "INTERACTION" - internally reserved event. Do not use.

  • "ORDER_CHECKOUT" - standard ORDER_CHECKOUT event.

  • "PAYMENT" - standard PAYMENT event.

  • "SUBSCRIPTION" - internally reserved event. Do not use.

  • "SEARCH" - standard SEARCH event.

  • "TRACKING" - internally reserved event. Do not use.

  • "VIEW" - standard VIEW event.

eventData

object

All the event data specific to the standard event type, for example, an ADD event.

[extensionData]

optional

object

Maximum 50 custom attributes of your choice.

sidebar. Parameters for a custom event

Parameter

Type

Description

type

string

The name of the custom event. If you set this value to a custom value of your choice different than Sitecore CDP reserved event names, for example, "CUSTOM_EVENT_SEARCH" or "myretailsite:CLICKED_POPUP", the event becomes a custom event.

eventData

object

TFhe required attributes that every event object must include, and optional attributes that event objects can include.

[extensionData]

optional

object

Custom data about an event.

Maximum 50 custom attributes of your choice.

Example 5. ORDER_CHECKOUT event

Here's an example of how to use the event() function to send an ORDER_CHECKOUT event. The eventData object must contain all the required attributes for the event type, in this example, for an ORDER_CHECKOUT event.

import { engage } from "./engage.js";
// ...

const handleOrderCheckoutEvent = async () => {
    const eventData = {
      channel: "WEB",
      currency: "EUR",
      pointOfSale: "myretailsite/ireland",
      language: "EN",
      page: "checkout page",
      order: {
        referenceId: "123456",
        orderedAt: "2025-08-23T16:17:16.000Z",
        status: "PURCHASED",
        currencyCode: "EUR",
        price: 200,
        paymentType: "Card",
        cardType: "Visa",
        extensions: [ 
           {
              name: "ext",
              key: "default",
              refundable: true
           }
        ],
        orderItems: [
           {
              type: "MOBILE_PHONE",
              referenceId: "REF-123",
              orderedAt: "2025-08-23T16:17:16.000Z",
              status: "PURCHASED",
              currencyCode: "EUR",
              price: 200,
              name: "Mobile phone of type x",
              productId: "MOBILE_PHONE_TYPE_X",
              quantity: 1,
              extensions: [
                 {
                    name: "ext",
                    key: "default",
                    phoneColor: "Gold",
                    insurance: false
                 }
              ]
           }
        ]
     }
    };

    const extensionData = {
      customKey: "customValue"
    };

    await engage.event("ORDER_CHECKOUT", eventData, extensionData);
};

2.0 data model does not support this functionality.



Example 6. ADD event

Here's an example of how to use the event() function to send an ADD event. The eventData object must contain all the required attributes for the event type, in this example, for an ADD event.

import { engage } from "./engage.js";
// ...

const handleClickAddEvent = async () => {
    const eventData = {
      channel: "WEB",
      currency: "EUR",
      pointOfSale: "myretailsite/ireland",
      language: "EN",
      page: "products",
      product: {
          name: "GHT 84 Lace Sneaker",
          type: "FOOTWEAR",
          item_id: "SHOES_8475GHT",
          productId: "example_product_id",
          referenceId: "MA-490094",
          orderedAt: new Date().toISOString(),
          quantity: 1,
          price: 7.99,
          currency: "EUR",
          originalPrice: 7.79,
          originalCurrencyCode: "USD"
      }
    };

    const extensionData = {
      customKey: "customValue"
    };

    await engage.event("ADD", eventData, extensionData);
};


Example 7. CONFIRM event

Here's an example of how to use the event() function to send a CONFIRM event. The eventData object must contain all the required attributes for the event type, in this example, for a CONFIRM event.

import { engage } from "./engage.js";
// ...

const handleClickConfirmEvent = async () => {
    const eventData = {
      channel: "WEB",
      currency: "EUR",
      pointOfSale: "myretailsite/ireland",
      language: "EN",
      page: "checkout",
      product: [
        { item_id: "SHOES_8475GHT" }
      ]
    };

    const extensionData = {
      customKey: "customValue"
    };

    await engage.event("CONFIRM", eventData, extensionData);
};


Example 8. CHECKOUT event

Here's an example of how to use the event() function to send a CHECKOUT event. The eventData object must contain all the required attributes for the event type, in this example, for a CHECKOUT event.

import { engage } from "./engage.js";
// ...

const handleClickCheckoutEvent = async () => {
    const eventData = {
      channel: "WEB",
      currency: "EUR",
      pointOfSale: "myretailsite/ireland",
      language: "EN",
      page: "home",
      reference_id: "MA-490094",
      status: "PURCHASED"
    };

    const extensionData = {
      customKey: "customValue"
    };

    await engage.event("CHECKOUT", eventData, extensionData);
};


Example 9. PAYMENT event

Here's an example of how to use the event() function to send a PAYMENT event. The eventData object must contain all the required attributes for the event type, in this example, for a PAYMENT event.

import { engage } from "./engage.js";
// ...

const handleClickPaymentEvent = async () => {
    const eventData = {
      channel: "WEB",
      currency: "EUR",
      pointOfSale: "myretailsite/ireland",
      language: "EN",
      page: "home",
      paymentType: "voucher"
    };

    const extensionData = {
      customKey: "customValue"
    };

    await engage.event("PAYMENT", eventData, extensionData);
};


Example 10. CLEAR_CART event

Here's an example of how to use the event() function to send a CLEAR_CART event. The eventData object must contain all the required attributes for the event type, in this example, for a CLEAR_CART event.

import { engage } from "./engage.js";
// ...

const handleClickClearCartEvent = async () => {
    const eventData = {
      channel: "WEB",
      currency: "EUR",
      pointOfSale: "myretailsite/ireland",
      language: "EN",
      page: "home"
    };

    const extensionData = {
      customKey: "customValue"
    };

    await engage.event("CLEAR_CART", eventData, extensionData);
};


Example 11. SEARCH event

Here's an example of how to use the event() function to send a SEARCH event. The eventData object must contain all the required attributes for the event type, in this example, for a SEARCH event.

import { engage } from "./engage.js";
// ...

const handleSearchEvent = async () => {
    const eventData = {
      channel: "WEB",
      currency: "EUR",
      pointOfSale: "myretailsite/ireland",
      language: "EN",
      page: "search result page",
      "product_name": "airSupport",
      "product_type": "RUNNERS"
    };

    const extensionData = {
      customKey: "customValue"
    };

    await engage.event("SEARCH", eventData, extensionData);
};


Example 12. Custom event

Here's an example of how to use the event() function to send a custom event called myretailsite:CLICKED_POPUP. eventData contains all the required attributes for the event data object. extensionData contains the custom data.

import { engage } from "./engage.js";
// ...

const handleClick = async () => {
    const eventData = {
      channel: "WEB",
      currency: "EUR",
      pointOfSale: "myretailsite/ireland",
      language: "EN",
      page: "home"
    };

    const extensionData = {
      customKey: "customValue"
    };

    await engage.event("myretailsite:CLICKED_POPUP", eventData, extensionData);
};


If you have suggestions for improving this article, let us know!

Documentation Assistant

This assistant uses AI to generate responses based on Sitecore documentation. While it has access to official sources, answers may be incomplete or inaccurate and should not be considered official advice or support.
Powered by
k
kapa.ai
Protected by reCAPTCHA

© Copyright 2026, Sitecore A/S or a Sitecore affiliated company.
All rights reserved.

Privacy policySitecore Trust CenterTerms of use