Send server-side events to Product Analytics. Server-Side Events Ingestion allows you to collect custom events
from any server-side source, and retains events for 15 months. Server-side events are helpful for understanding
causes of a funnel drop-off which are external to the client-side (for example, payment processing error).
See the Product Analytics page for more information.
POSThttps://browser-intake.ap1.datadoghq.com/api/v2/prodlyticshttps://browser-intake.ap2.datadoghq.com/api/v2/prodlyticshttps://browser-intake.datadoghq.eu/api/v2/prodlyticshttps://browser-intake.datadoghq.com/api/v2/prodlyticshttps://browser-intake.us3.datadoghq.com/api/v2/prodlyticshttps://browser-intake.us5.datadoghq.com/api/v2/prodlyticsNot supported in the GOV region
Overview
Send server-side events to Product Analytics. Server-side events are retained for 15 months.
Server-Side events in Product Analytics are helpful for tracking events that occur on the server,
as opposed to client-side events, which are captured by Real User Monitoring (RUM) SDKs.
This allows for a more comprehensive view of the user journey by including actions that happen on the server.
Typical examples could be checkout.completed or payment.processed.
Ingested server-side events are integrated into Product Analytics to allow users to select and filter
these events in the event picker, similar to how views or actions are handled.
Requirements:
At least one of usr, account, or session must be provided with a valid ID.
The application.id must reference a Product Analytics-enabled application.
Custom Attributes:
Any additional fields in the payload are flattened and searchable as facets.
For example, a payload with {"customer": {"tier": "premium"}} is searchable with
the syntax @customer.tier:premium in Datadog.
The status codes answered by the HTTP API are:
202: Accepted: The request has been accepted for processing
400: Bad request (likely an issue in the payload formatting)
401: Unauthorized (likely a missing API Key)
403: Permission issue (likely using an invalid API Key)
408: Request Timeout, request should be retried after some time
413: Payload too large (batch is above 5MB uncompressed)
429: Too Many Requests, request should be retried after some time
500: Internal Server Error, the server encountered an unexpected condition that prevented it from fulfilling the request, request should be retried after some time
503: Service Unavailable, the server is not ready to handle the request probably because it is overloaded, request should be retried after some time
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comNot supported in the US1-FED region"DD_API_KEY="<DD_API_KEY>"python3"example.py"
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comNot supported in the US1-FED region"DD_API_KEY="<DD_API_KEY>"rb"example.rb"
// Send server-side events returns "Request accepted for processing (always 202 empty JSON)." responsepackagemainimport("context""encoding/json""fmt""os""github.com/DataDog/datadog-api-client-go/v2/api/datadog""github.com/DataDog/datadog-api-client-go/v2/api/datadogV2")funcmain(){body:=datadogV2.ProductAnalyticsServerSideEventItem{Account:&datadogV2.ProductAnalyticsServerSideEventItemAccount{Id:"account-67890",},Application:datadogV2.ProductAnalyticsServerSideEventItemApplication{Id:"123abcde-123a-123b-1234-123456789abc",},Event:datadogV2.ProductAnalyticsServerSideEventItemEvent{Name:"payment.processed",},Session:&datadogV2.ProductAnalyticsServerSideEventItemSession{Id:"session-abcdef",},Type:datadogV2.PRODUCTANALYTICSSERVERSIDEEVENTITEMTYPE_SERVER,Usr:&datadogV2.ProductAnalyticsServerSideEventItemUsr{Id:"user-12345",},}ctx:=datadog.NewDefaultContext(context.Background())configuration:=datadog.NewConfiguration()apiClient:=datadog.NewAPIClient(configuration)api:=datadogV2.NewProductAnalyticsApi(apiClient)resp,r,err:=api.SubmitProductAnalyticsEvent(ctx,body)iferr!=nil{fmt.Fprintf(os.Stderr,"Error when calling `ProductAnalyticsApi.SubmitProductAnalyticsEvent`: %v\n",err)fmt.Fprintf(os.Stderr,"Full HTTP response: %v\n",r)}responseContent,_:=json.MarshalIndent(resp,""," ")fmt.Fprintf(os.Stdout,"Response from `ProductAnalyticsApi.SubmitProductAnalyticsEvent`:\n%s\n",responseContent)}
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comNot supported in the US1-FED region"DD_API_KEY="<DD_API_KEY>"go run"main.go"
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comNot supported in the US1-FED region"DD_API_KEY="<DD_API_KEY>"java"Example.java"
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comNot supported in the US1-FED region"DD_API_KEY="<DD_API_KEY>"cargo run
/**
* Send server-side events returns "Request accepted for processing (always 202 empty JSON)." response
*/import{client,v2}from"@datadog/datadog-api-client";constconfiguration=client.createConfiguration();constapiInstance=newv2.ProductAnalyticsApi(configuration);constparams: v2.ProductAnalyticsApiSubmitProductAnalyticsEventRequest={body:{account:{id:"account-67890",},application:{id:"123abcde-123a-123b-1234-123456789abc",},event:{name:"payment.processed",},session:{id:"session-abcdef",},type:"server",usr:{id:"user-12345",},},};apiInstance.submitProductAnalyticsEvent(params).then((data: any)=>{console.log("API called successfully. Returned data: "+JSON.stringify(data));}).catch((error: any)=>console.error(error));
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comNot supported in the US1-FED region"DD_API_KEY="<DD_API_KEY>"tsc"example.ts"