SAS Customer Intelligence 360 (SAS CI 360) is a cloud-based marketing platform from SAS. It helps brands plan, run, and measure customer engagement across digital and offline channels. It collects website and mobile app activity and combines it with known customer data to build customer profiles. Marketers use these profiles to build audiences, plan customer journeys, personalize content, and measure results. Its Server-Side Events API lets brands send web and mobile events to SAS CI 360 from their own systems, without using the SAS tag or the SAS Mobile SDK.
Product Type: Marketing
Integration Type: Starter Kit
Event Source Type: Web and Mobile App
Event Scope: Full-Funnel Events
- Sends page views, screen views, product views, add-to-cart actions, cart views, purchases, and customer identify events to SAS CI 360 from the server.
- Works without loading the SAS tag or the SAS Mobile SDK.
- Labels each event as web or mobile so it matches the right event setup in SAS CI 360.
- Fills SAS CI 360 commerce reports, such as product views, cart activity, and orders.
- Sends IP address and browser details so SAS CI 360 can identify device type and location.
- Links anonymous visitor activity to known customers.
- Lets events sent by MetaRouter be used as triggers and goals in SAS CI 360 campaigns.
- Product Viewed, Product Added, Cart Viewed, and Order Completed must each be set up and published in SAS CI 360 with an API event key before data is sent. Events sent before then will not be processed.
- Web events need a key from an Event API setup. Mobile events need a key from a Mobile App Action setup. Using the wrong key type may cause events to be dropped.
- The starter kit includes placeholder event keys (
'ADD_WEB_API_EVENT_KEY_HERE' and 'ADD_MOBILE_API_EVENT_KEY_HERE'). Replace them with your own keys from SAS CI 360.
- The starter kit includes a placeholder app ID (
'ADD_APP_ID_HERE'). Replace it with your Mobile Application ID from SAS CI 360.
- Mobile events must include a Mobile Application ID that is set up and active in SAS CI 360. Otherwise, most mobile events are rejected.
- Only the events listed in Event Mappings are sent. Except for Identify, events must also include a page URL or app name, or they are not sent.
- Each event is sent as its own request. Batching is not supported.
- When a
userId is present, events are sent under the customer ID. Otherwise, they are sent under the anonymous visitor ID.
- Identify events link the anonymous visitor ID to the customer ID so SAS CI 360 can connect past anonymous activity to the known customer.
- To save any extra fields that are not part of the standard SAS CI 360 event, first add them as custom attributes to the event's setup in SAS CI 360. Otherwise, SAS CI 360 ignores them.
- SAS CI 360 returns a success response even when an event has errors. Failed events can only be found in the SAS CI 360 error table.
- IP address and browser details must be on the first event of a session for device and location data to work. The starter kit sends them on every event.
- Visitor IDs must only use numbers and the letters a–f (hexadecimal), be 8 to 128 characters long, and stay the same for each device or browser. The starter kit removes dashes from
anonymousId to meet this rule.
- SAS CI 360 creates and manages sessions on its own. You do not need to send a page view before other events to start a session. When an event comes in with a new page URL, SAS CI 360 creates its own page load record for that page and links the event to the visitor's current session.
- SAS CI 360 lets you set different session timeout lengths for web and mobile. The timeout used for a session is based on the first event in that session. For example, if a session starts with a web event, the web timeout applies to the whole session, even if mobile events come in later.
- SAS CI 360 uses a different server address for each region. The
HOST parameter defaults to the US server (i-us.ci360.marketing). Update it if your account is in another region.
- SAS CI 360 privacy settings for approved domains and form fields only apply to the SAS tag, not to server-side events. SAS CI 360 stores whatever data it receives, so hash or remove any sensitive data before sending it.
- If your SAS CI 360 account is set to exclude certain IP addresses, browsers, or locations (for example, internal company traffic or bots), those settings also apply to server-side events. Events from excluded sessions are not saved.
- Each cart item needs at least one of a product ID, name, or SKU.
- Business process events (multi-step flows defined in SAS CI 360, such as signup) cannot be sent directly. SAS CI 360 creates them on its own from the basic events it receives, such as page views, clicks, or form submits.
- SAS CI 360 allows up to 700,000 requests from one IP address every five minutes. High-volume setups should plan for this limit.
- Custom fields cannot be added to individual cart items. They can only be added to the cart as a whole.
- Unlike the SAS tag, this integration cannot show on-site content, offers, or personalization.
- Events older than five minutes cannot be processed, so past data cannot be backfilled.
- SAS CI 360 does not check events when they arrive, so there is no error message when an event fails.
- Events, data tables, and access points cannot be created through the API. They must be set up in SAS CI 360.
- Collect the following from your SAS CI 360 account:
- Host: The SAS CI 360 server address for your account's region. Your SAS representative can confirm which one to use.
- External Tenant ID: In SAS CI 360, go to General Settings > External Access > Access Points. Create or open an access point and copy its Tenant ID.
- Authorization Token: From the same access point, copy the Client Secret. Use it with the Tenant ID to create a token. The token stays valid until the access point is deleted or its credentials change.
- Mobile Application ID (mobile events only): In SAS CI 360, go to Administration > Mobile Applications and copy the ID of an active app. Add it to the event mappings in place of the placeholder app ID.
- API Event Keys: For each event, create an event in SAS CI 360 (Event API for web, Mobile App Action for mobile), add an API Event Key, and publish it. Add each key to the event mappings in place of the placeholder keys.
- If you need help, ask your SAS representative for these credentials.
- From the integration library, add a SAS CI 360 integration. Then, fill out the Connection Parameters:
| Connection Parameter | Description |
|---|
HOST | SAS CI 360 server address for your account's region. Defaults to the US server (i-us.ci360.marketing). |
EXTERNAL_TENANT_ID | Tenant ID from your SAS CI 360 access point. Used in the endpoint address. |
AUTH_TOKEN | Token created from your access point's Tenant ID and Client Secret. Used to authorize requests. |
- MetaRouter provides all of the event mappings that SAS CI 360 integrations typically require. You may add custom events, parameters, or mappings in accordance with SAS CI 360's API documentation.
- In the Pipelines tab, add your SAS CI 360 integration.
- Select the correct integration revision.
- Click Add Integration and finalize deployment.
Global mappings will be applied to all events. If your parameter names do not match the Expected Inputs provided, you will need to overwrite the Inputs provided with your own.
| Output Key | Description | Expected Input |
|---|
id_type | String: Type of customer ID. Used in the endpoint address, not sent in the event body. | Enrichment – 'customer_id' |
anonymousId | String: Anonymous visitor ID, with dashes removed and cut to 128 characters. Used in the endpoint address when no userId is present. | anonymousId |
userId | String: Known customer ID. Used in the endpoint address when present. | userId |
channel Required | String: Event type, web for browser events or mobile for app events. | Expression – returns 'mobile' when app, device type, or OS details are present, otherwise 'web' |
mobile Required for mobile app traffic | Object: App and device details (app ID, app version, device model, type, maker, platform, language, screen size, carrier). Sent for mobile events only. | Expression – builds from context.app, context.device, context.os, context.locale, context.screen, and context.network; app ID set to 'ADD_APP_ID_HERE' |
uri Required | String: Page URL for web events, or the app name for mobile events. | Expression – uses context.page.url; for mobile events, uses the URL-encoded context.app.name |
properties.ip | String: User's IP address, used for location. | context.ip |
clientTime | String: Time the event happened. | Expression – uses timestamp, then originalTimestamp, then sentAt |
clientTimeStamp | String: Time the event happened, in milliseconds. | Expression – converts the event timestamp to milliseconds |
web.userAgent | String: User's browser details. Sent for web events only. | Expression – returns context.userAgent for web events |
| Output Key | Description | Expected Input |
|---|
userId | String: Known customer ID. Linked to the anonymous visitor ID in SAS CI 360. Only the IDs are sent; no other event details are included. Identify events are only sent when a userId is present. | userId |
| Output Key | Description | Expected Input |
|---|
eventName Required | String: SAS CI 360 event type for a page load. | Enrichment – 'load' |
uri | String: Page URL. Replaces the global uri when present. | properties.url |
properties.pageTitle | String: Page title. | properties.title |
properties.referrer | String: Address of the previous page. | properties.referrer |
properties.userAgent | String: User's browser details. | context.userAgent |
| Output Key | Description | Expected Input |
|---|
eventName Required | String: SAS CI 360 event type for a screen load. | Enrichment – 'load' |
properties.pageTitle | String: Screen name. | Expression – uses properties.name, then name |
| Output Key | Description | Expected Input |
|---|
eventName Required | String: SAS CI 360 event type. | Enrichment – 'cart' |
cart.action Required | String: Cart action. | Enrichment – 'cartview' |
cart.id Required | String: Unique cart ID. Events without a cart ID are not sent. | properties.cart_id |
cart.totalCartValue | Float: Total value of all items in the cart. | Expression – totals the price and quantity of properties.products |
cart.items | Array: Items in the cart with ID, name, SKU, category, quantity, price, and currency. | Expression – maps each item in properties.products; currency from properties.currency |
apiEventKey Required | String: API event key from the published SAS CI 360 event. | Expression – returns 'ADD_MOBILE_API_EVENT_KEY_HERE' for mobile events, otherwise 'ADD_WEB_API_EVENT_KEY_HERE' |
| Output Key | Description | Expected Input |
|---|
eventName Required | String: SAS CI 360 event type. | Enrichment – 'cart' |
cart.action Required | String: Cart action. | Enrichment – 'purchase' |
cart.id Required | String: Checkout ID, used as the cart ID. Events without a checkout ID are not sent. | properties.checkout_id |
cart.orderId | String: Unique order ID. Must be different for each order to avoid duplicates. | properties.order_id |
cart.totalCartValue | Float: Total order value. | properties.total |
cart.tax | Float: Tax amount for the order. | properties.tax |
cart.items | Array: Purchased items with ID, name, SKU, category, quantity, price, and currency. | Expression – maps each item in properties.products; currency from properties.currency |
apiEventKey Required | String: API event key from the published SAS CI 360 event. | Expression – returns 'ADD_MOBILE_API_EVENT_KEY_HERE' for mobile events, otherwise 'ADD_WEB_API_EVENT_KEY_HERE' |
| Output Key | Description | Expected Input |
|---|
eventName Required | String: SAS CI 360 event type. | Enrichment – 'cartAction' |
cart.action Required | String: Cart action. | Enrichment – 'add' |
cart.id Required | String: Unique cart ID. Events without a cart ID are not sent. | properties.cart_id |
product.id | String: Product ID. At least one of ID, name, or SKU is required. | properties.product_id |
product.name | String: Product name. | properties.name |
product.sku | String: Product SKU. | properties.sku |
product.group | String: Product category. | properties.category |
product.quantity | Integer: Number of units added to the cart. | properties.quantity |
product.unitPrice | Float: Price of one unit. | properties.price |
apiEventKey Required | String: API event key from the published SAS CI 360 event. | Expression – returns 'ADD_MOBILE_API_EVENT_KEY_HERE' for mobile events, otherwise 'ADD_WEB_API_EVENT_KEY_HERE' |
| Output Key | Description | Expected Input |
|---|
eventName Required | String: SAS CI 360 event type. | Enrichment – 'productView' |
product.id | String: Product ID. At least one of ID, name, or SKU is required. | properties.product_id |
product.name | String: Product name. | properties.name |
product.sku | String: Product SKU. | properties.sku |
product.group | String: Product category. | properties.category |
product.unitPrice | Float: Price of one unit. | properties.price |
apiEventKey Required | String: API event key from the published SAS CI 360 event. | Expression – returns 'ADD_MOBILE_API_EVENT_KEY_HERE' for mobile events, otherwise 'ADD_WEB_API_EVENT_KEY_HERE' |
These identifiers must be mapped to SAS CI 360 in order for successful user matching to occur. Without these IDs, any events sent to SAS CI 360 may not be accurately reflected in reporting.
| Attribute | Example | Sync Injector Required? |
|---|
anonymousId Required | 3f6c2a9e-1b7d-4c58-9e2f-7a1d0b4c8e21 | No |
userId Recommended | customer-48213 | No |
context.ip Recommended | 203.0.113.42 | No |
context.userAgent Recommended | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36 | No |
- Send a few test events through your pipeline, such as a page view, product view, cart view, and purchase. Write down the
anonymousId you used and the time you sent the events.
- SAS CI 360 events do not show up in the SAS CI 360 dashboard. To check them, use the SAS diagnostics agent or the SAS Download API and search by your
anonymousId and send times. Events show up about 30 minutes after they are sent and are kept for 62 days.
- Check that each event landed in the right SAS CI 360 table:
- Page views:
PAGE_DETAILS and VISIT_DETAILS
- Product views:
PRODUCT_VIEWS
- Cart views and purchases: one row in
ORDER_SUMMARY and one row per item in ORDER_DETAILS
- Location and device details:
SESSION_DETAILS
- Check that all events from the same visitor are grouped into one session.
- SAS CI 360 only keeps the first view of a page URL within a session. Repeat views of the same page are dropped without an error. This is expected.