SAP Commerce Cloud
SAP Commerce Cloud exposes inbound Integration Objects as OData v2 services. Datafly Signal upserts identified customers into a Customer Integration Object server-side (POST /odata2webservices/<IntegrationObject>/<EntitySet>) on sign-up, login and identify.
Why route SAP Commerce Cloud through Datafly Signal
- Records come from your server, not the browser. They reach SAP Commerce Cloud even when a tracker blocker or a failed page unload would have dropped a client-side call, and no form integration or browser tag is needed.
- Delivery is queued and retried. Signal buffers to Kafka and retries on 429 or a transient failure rather than dropping the event; a permanent rejection goes to the dead-letter queue with the vendor’s reason.
- One consent decision governs every destination. SAP Commerce Cloud is gated by the same consent state as the rest of your stack, so a withdrawal applies everywhere at once.
Get your SAP Commerce Cloud credentials
Create an inbound Integration Object
In Backoffice open the Integration UI Tool and create an inbound Integration Object (for example InboundCustomer) with Customer as its root type and the attributes uid (unique), name and customerID.
Create an OAuth client
In Backoffice create an OAuth client with the client_credentials grant and the integration’s authority. Signal requests tokens from /authorizationserver/oauth/token.
Find your API host
The api (backoffice) host of your environment, not the storefront host.
Configuration
| Field | Required | Description |
|---|---|---|
base_url | Yes | Host of your SAP Commerce Cloud API endpoint, with no scheme and no trailing slash. This is the api/backoffice host that exposes /odata2webservices and /authorizationserver, NOT the storefront/OCC host. For on-prem this is your hybris server host:port. |
integration_object | Yes | Name of the INBOUND Integration Object you created in Backoffice (Integration UI Tool). It forms the first path segment of the OData service URL: /odata2webservices/<IntegrationObject>/<EntitySet>. |
entity_set | Yes | The OData entity set exposed by the Integration Object (the root type’s collection name), e.g. Customers. This is the second path segment of the OData service URL. |
client_id | Yes | Client ID of the OAuth client configured in Backoffice (OAuth Client Details) with the client_credentials grant and the integration credentials scope. |
client_secret | Yes | Client secret of the OAuth client. Used with client_id in the client_credentials grant against /authorizationserver/oauth/token. |
Management UI setup
- Go to Integrations in the sidebar and open the Integration Library tab.
- Find SAP Commerce Cloud under CRM and click Install.
- Choose a preset, enter the fields above and click Install Integration.
Management API setup
curl -X POST http://localhost:8084/v1/admin/integration-catalog/sap_commerce_cloud/install \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "SAP Commerce Cloud",
"variant": "default",
"config": {
"base_url": "your_base_url",
"integration_object": "your_integration_object",
"entity_set": "your_entity_set",
"client_id": "your_client_id",
"client_secret": "your_client_secret"
},
"delivery_mode": "server_side"
}'What Signal sends
An example request, rendered from the default preset for sign_up:
POST https://api.c1234-acme.model-t.cc.commerce.ondemand.com/odata2webservices/InboundCustomer/Customers
{
"customerID": "0f8fad5b-d9cb-469f-a165-70867728950e",
"name": "Neill Mcfixture",
"uid": "neill@example.com"
}| Field | Source |
|---|---|
uid | The email, trimmed and lower-cased: SAP Commerce’s customer uid and the Integration Object key. Required. |
name | The name trait, else first and last name. |
customerID | Your product user ID. |
The customer’s uid is their email, so the email and name are sent in plain text to your own SAP Commerce instance. An event without an email is not sent.
Presets
| Preset | Signal events |
|---|---|
Customer Sync (default) | identify, sign_up, login |
Events not listed are not sent. Each preset is a starting point: add, rename or remove mappings on the installed integration.
Notes and limits
- The Integration API’s POST creates or updates by the integration key (
uid), so repeat events update one customer. - The Integration Object must expose every attribute the preset sends; remove a mapping on the installed integration if your object does not have it.
Consent
Assign the consent category you use for this processing when you install SAP Commerce Cloud, so an event is delivered only when the visitor has granted it. Signal never writes a cookie-banner choice into SAP Commerce Cloud’s contact permissions (no consent field is sent): consent to cookies is not consent to be emailed, called or messaged. Record communication opt-in and opt-out in SAP Commerce Cloud.
Verify it’s working
- Open the integration in the Signal Management UI and watch Live Events while you trigger a mapped event.
- Confirm a 2xx response from SAP Commerce Cloud.
- Find the record in SAP Commerce Cloud and check it arrived.
Troubleshooting
| Symptom | Resolution |
|---|---|
401 | The OAuth client ID or secret is wrong, or the client lacks the integration authority. |
404 | The Integration Object or entity set name is wrong. |
400 | The Integration Object lacks an attribute the preset sends, or uid is missing. |
| Nothing sent for an event | The visitor had no email in identify() traits. |