Send events to applications
This type of pipeline sends the events received from SDK and webhook connections to applications. It is available only for destination application connections that support events.
Create pipeline
Create a destination pipeline that sends events to an application.
Request
-
name
string RequiredThe pipeline's name.
Must be a non-empty string with a maximum of 60 characters. -
connection
string RequiredThe ID of the connection to which the events will be sent. It must be a destination application that supports events.
-
target
string RequiredThe entity on which the pipeline operates, which must be
Possible values:"Event"in order to create a pipeline that sends events."Event". -
enabled
booleanIndicates if the pipeline is enabled once created. If disabled, the pipeline cannot run, and attempts to run it will fail.
If not specified, the default is
false, so the pipeline is created disabled. -
eventType
string RequiredThe pipeline's event type.
This should be the ID of one of the event types supported by the connection, which can be retrieved with the Get connection method.
Must be a non-empty string with a maximum of 100 characters. -
filter
nullable filterThe filter applied to the events. If it's not null, only the events that match the filter will be sent to the destination.
See the API filter documentation for more details.
-
transformation
nullable object Conditionally RequiredThis mapping or function is responsible for transforming events into the values required for sending the event to the application.
If the event type's schema requires a specific property, you should provide a transformation that returns a value for this property. If a mapping or function is provided (not null), only one of them should be specified. The other must either be absent or set to null.
-
transformation.mapping
nullable object with string values Conditionally RequiredThe transformation mapping. Each key represents a property path in the event type schema, and its corresponding value is an expression. This expression can reference property paths from the event schema.
-
transformation.function
nullable object Conditionally RequiredThe transformation function. A JavaScript or Python function that, given an event, returns the values needed to send the event to the application.
-
transformation.function.source
string RequiredThe source code of the JavaScript or Python function.
Must be a non-empty string with a maximum of 50,000 characters. -
transformation.function.language
string RequiredThe language of the function.
Possible values:"JavaScript"or"Python". -
transformation.function.preserveJSON
booleanSpecifies whether JSON values are passed to and returned from the function as strings, keeping their original format without any encoding or decoding.
-
transformation.function.inPaths
array of string RequiredThe property paths that will be passed to the function. If the function does not depend on the event to produce its response, specify an empty array.
-
transformation.function.outPaths
array of string RequiredThe paths of the properties that may be returned by the function. At least one path must be present.
-
-
-
outSchema
nullable schema Conditionally RequiredThe schema for the output properties of the transformation. It is required and must not be null if a transformation is present.
It should be a subset of the schema of the passed event type.
Response
-
id
stringThe ID of the pipeline.
curl https://example.com/v1/pipelines \ -H "Authorization: Bearer api_xxxxxxx" \ --json '{ "name": "Send Add to Cart", "connection": "C8pT5vN3Qx6M", "target": "Event", "enabled": true, "eventType": "send_add_to_cart", "filter": { "operator": "and", "rules": [ { "property": "type", "operator": "is", "values": [ "track" ] } ] }, "transformation": { "function": { "source": "const transform = (event) => { ... }", "language": "JavaScript", "preserveJSON": false, "inPaths": [ "traits" ], "outPaths": [ "products", "amount" ] } }, "outSchema": { "kind": "object", "properties": [ { "name": "products", "type": { "kind": "array", "elementType": { "kind": "string" }, "minElements": 1 } }, { "name": "amount", "type": { "kind": "decimal", "precision": 10, "scale": 2 } } ] } }' {
"id": "7XcP4mZ9aQ2r"
}Update pipeline
Update a destination pipeline that sends events to an application.
Request
-
:id
string RequiredThe ID of the destination application pipeline.
-
name
string RequiredThe pipeline's name.
Must be a non-empty string with a maximum of 60 characters. -
enabled
booleanIndicates if the pipeline is enabled. Set to
falseto disable the pipeline. A disabled pipeline cannot run, and attempts to run it will fail.If not specified, the default is
false. Since the update replaces the entire pipeline, omitting this field disables an enabled pipeline.Use the Set status endpoint to change only the pipeline's status.
-
filter
nullable filterThe filter applied to the events. If it's not null, only the events that match the filter will be sent to the destination.
See the API filter documentation for more details.
-
transformation
nullable object Conditionally RequiredThis mapping or function is responsible for transforming events into the values required for sending the event to the application.
If the event type's schema requires a specific property, you should provide a transformation that returns a value for this property. If a mapping or function is provided (not null), only one of them should be specified. The other must either be absent or set to null.
-
transformation.mapping
nullable object with string values Conditionally RequiredThe transformation mapping. Each key represents a property path in the event type schema, and its corresponding value is an expression. This expression can reference property paths from the event schema.
-
transformation.function
nullable object Conditionally RequiredThe transformation function. A JavaScript or Python function that, given an event, returns the values needed to send the event to the application.
-
transformation.function.source
string RequiredThe source code of the JavaScript or Python function.
Must be a non-empty string with a maximum of 50,000 characters. -
transformation.function.language
string RequiredThe language of the function.
Possible values:"JavaScript"or"Python". -
transformation.function.preserveJSON
booleanSpecifies whether JSON values are passed to and returned from the function as strings, keeping their original format without any encoding or decoding.
-
transformation.function.inPaths
array of string RequiredThe property paths that will be passed to the function. If the function does not depend on the event to produce its response, specify an empty array.
-
transformation.function.outPaths
array of string RequiredThe paths of the properties that may be returned by the function. At least one path must be present.
-
-
-
outSchema
nullable schema Conditionally RequiredThe schema for the output properties of the transformation. It is required and must not be null if a transformation is present.
It should be a subset of the schema of the passed event type.
Response
No response body.curl -X PUT https://example.com/v1/pipelines/7XcP4mZ9aQ2r \ -H "Authorization: Bearer api_xxxxxxx" \ --json '{ "name": "Send Add to Cart", "enabled": true, "filter": { "operator": "and", "rules": [ { "property": "type", "operator": "is", "values": [ "track" ] } ] }, "transformation": { "function": { "source": "const transform = (event) => { ... }", "language": "JavaScript", "preserveJSON": false, "inPaths": [ "traits" ], "outPaths": [ "products", "amount" ] } }, "outSchema": { "kind": "object", "properties": [ { "name": "products", "type": { "kind": "array", "elementType": { "kind": "string" }, "minElements": 1 } }, { "name": "amount", "type": { "kind": "decimal", "precision": 10, "scale": 2 } } ] } }' Get pipeline
Get a destination pipeline that sends events to an application.
Request
-
:id
string RequiredThe ID of the destination application event pipeline.
Response
-
id
stringThe ID of the destination application event pipeline.
-
name
stringThe pipeline's name.
It is not longer than 60 characters. -
connector
stringThe code of the connection's connector.
-
connectorType
stringThe type of the connection's connector. It is always
Possible values:"Application"when the pipeline sends events to an application."Application","Database","FileStorage","MessageBroker","SDK"or"Webhook". -
connection
stringThe ID of the connection to which the events will be sent. It is a destination application that supports events.
-
connectionRole
stringThe role of the pipeline's connection. It is always
Possible values:"Destination"when the pipeline sends events to an application."Source"or"Destination". -
target
stringThe entity on which the pipeline operates. It is always
Possible values:"Event"when the pipeline sends events to an application."User"or"Event". -
enabled
booleanIndicates if the pipeline is enabled.
-
eventType
stringThe pipeline's event type.
It is not longer than 100 characters. -
orderingGroup
stringThe ordering group of the pipeline's event type. Event types in the same ordering group share the per-user delivery order.
It is not longer than 16 characters. -
deliveryEndpoint
stringThe delivery endpoint used for events of the pipeline's event type. Event types in the same ordering group use the same endpoint. An empty value identifies the connector's default endpoint.
It is not longer than 16 characters. -
filter
nullable filterThe filter applied to the events. If it's not null, only the events that match the filter will be sent to the destination.
See the API filter documentation for more details.
-
transformation
nullable objectThis mapping or function is responsible for transforming events into the values required for sending them to the application.
If there is no mapping, it is null. Otherwise one of either a mapping or a function is present, but not both. The one that is not present is null.
-
transformation.mapping
nullable object with string valuesThe transformation mapping. Each key represents a property path in the event type schema, and its corresponding value is an expression. This expression can reference property paths from the event schema.
-
transformation.function
nullable objectThe transformation function. A JavaScript or Python function that, given an event, returns the values needed to send the event to the application.
-
transformation.function.source
stringThe source code of the JavaScript or Python function.
It is not longer than 50,000 characters. -
transformation.function.language
stringThe language of the function.
Possible values:"JavaScript"or"Python". -
transformation.function.preserveJSON
booleanSpecifies whether JSON values are passed to and returned from the function as strings, keeping their original format without any encoding or decoding.
-
transformation.function.inPaths
array of stringThe property paths that will be passed to the function. If empty, the function does not rely on the event to generate the response.
-
transformation.function.outPaths
array of stringThe paths of the properties that may be returned by the function. It contains at least one property path.
-
-
-
inSchema
schemaThe schema for the properties used in the filter and the input properties in the transformation.
When sending events to apps, this is the event schema.
-
outSchema
nullable schemaThe schema for the output properties of the transformation. It is null if the pipeline does not apply any transformation.
curl https://example.com/v1/pipelines/7XcP4mZ9aQ2r \ -H "Authorization: Bearer api_xxxxxxx" {
"id": "7XcP4mZ9aQ2r",
"name": "Send Add to Cart",
"connector": "klaviyo",
"connectorType": "Application",
"connection": "C8pT5vN3Qx6M",
"connectionRole": "Destination",
"target": "Event",
"enabled": true,
"eventType": "send_add_to_cart",
"filter": {
"operator": "and",
"rules": [
{
"property": "type",
"operator": "is",
"values": [
"track"
]
}
]
},
"transformation": {
"function": {
"source": "const transform = (event) => { ... }",
"language": "JavaScript",
"preserveJSON": false,
"inPaths": [
"traits"
],
"outPaths": [
"products",
"amount"
]
}
},
"inSchema": {
"kind": "object",
"properties": [
{
"name": "connectionId",
"type": {
"kind": "string"
},
"displayName": "Connection ID"
},
{
"name": "anonymousId",
"type": {
"kind": "string"
},
"displayName": "Anonymous ID"
},
{
"name": "channel",
"type": {
"kind": "string"
},
"readOptional": true,
"displayName": "Channel"
},
{
"name": "category",
"type": {
"kind": "string"
},
"readOptional": true,
"displayName": "Category"
},
{
"name": "context",
"type": {
"kind": "object",
"properties": [
{
"name": "app",
"type": {
"kind": "object",
"properties": [
{
"name": "name",
"type": {
"kind": "string"
},
"readOptional": true,
"displayName": "Name"
},
{
"name": "version",
"type": {
"kind": "string"
},
"readOptional": true,
"displayName": "Version"
},
{
"name": "build",
"type": {
"kind": "string"
},
"readOptional": true,
"displayName": "Build"
},
{
"name": "namespace",
"type": {
"kind": "string"
},
"readOptional": true,
"displayName": "Namespace"
}
]
},
"readOptional": true,
"displayName": "App"
},
{
"name": "browser",
"type": {
"kind": "object",
"properties": [
{
"name": "name",
"type": {
"kind": "string",
"values": [
"Chrome",
"Safari",
"Edge",
"Firefox",
"Samsung Internet",
"Opera",
"Other"
]
},
"readOptional": true,
"displayName": "Name"
},
{
"name": "other",
"type": {
"kind": "string"
},
"readOptional": true,
"displayName": "Other"
},
{
"name": "version",
"type": {
"kind": "string"
},
"readOptional": true,
"displayName": "Version"
}
]
},
"readOptional": true,
"displayName": "Browser"
},
{
"name": "campaign",
"type": {
"kind": "object",
"properties": [
{
"name": "name",
"type": {
"kind": "string"
},
"readOptional": true,
"displayName": "Name"
},
{
"name": "source",
"type": {
"kind": "string"
},
"readOptional": true,
"displayName": "Source"
},
{
"name": "medium",
"type": {
"kind": "string"
},
"readOptional": true,
"displayName": "Medium"
},
{
"name": "term",
"type": {
"kind": "string"
},
"readOptional": true,
"displayName": "Term"
},
{
"name": "content",
"type": {
"kind": "string"
},
"readOptional": true,
"displayName": "Content"
}
]
},
"readOptional": true,
"displayName": "Campaign"
},
{
"name": "consents",
"type": {
"kind": "map",
"elementType": {
"kind": "boolean"
}
},
"readOptional": true,
"displayName": "Consents"
},
{
"name": "device",
"type": {
"kind": "object",
"properties": [
{
"name": "id",
"type": {
"kind": "string"
},
"readOptional": true,
"displayName": "Id"
},
{
"name": "advertisingId",
"type": {
"kind": "string"
},
"readOptional": true,
"displayName": "Advertising ID"
},
{
"name": "adTrackingEnabled",
"type": {
"kind": "boolean"
},
"readOptional": true,
"displayName": "Ad tracking enabled"
},
{
"name": "manufacturer",
"type": {
"kind": "string"
},
"readOptional": true,
"displayName": "Manufacturer"
},
{
"name": "model",
"type": {
"kind": "string"
},
"readOptional": true,
"displayName": "Model"
},
{
"name": "name",
"type": {
"kind": "string"
},
"readOptional": true,
"displayName": "Name"
},
{
"name": "type",
"type": {
"kind": "string"
},
"readOptional": true,
"displayName": "Type"
},
{
"name": "token",
"type": {
"kind": "string"
},
"readOptional": true,
"displayName": "Token"
}
]
},
"readOptional": true,
"displayName": "Device"
},
{
"name": "ip",
"type": {
"kind": "ip"
},
"readOptional": true,
"displayName": "IP"
},
{
"name": "library",
"type": {
"kind": "object",
"properties": [
{
"name": "name",
"type": {
"kind": "string"
},
"readOptional": true,
"displayName": "Name"
},
{
"name": "version",
"type": {
"kind": "string"
},
"readOptional": true,
"displayName": "Version"
}
]
},
"readOptional": true,
"displayName": "Library"
},
{
"name": "locale",
"type": {
"kind": "string"
},
"readOptional": true,
"displayName": "Locale"
},
{
"name": "location",
"type": {
"kind": "object",
"properties": [
{
"name": "city",
"type": {
"kind": "string"
},
"readOptional": true,
"displayName": "City"
},
{
"name": "country",
"type": {
"kind": "string"
},
"readOptional": true,
"displayName": "Country"
},
{
"name": "latitude",
"type": {
"kind": "float",
"bitSize": 64
},
"readOptional": true,
"displayName": "Latitude"
},
{
"name": "longitude",
"type": {
"kind": "float",
"bitSize": 64
},
"readOptional": true,
"displayName": "Longitude"
},
{
"name": "speed",
"type": {
"kind": "float",
"bitSize": 64
},
"readOptional": true,
"displayName": "Speed"
}
]
},
"readOptional": true,
"displayName": "Location"
},
{
"name": "network",
"type": {
"kind": "object",
"properties": [
{
"name": "bluetooth",
"type": {
"kind": "boolean"
},
"readOptional": true,
"displayName": "Bluetooth"
},
{
"name": "carrier",
"type": {
"kind": "string"
},
"readOptional": true,
"displayName": "Carrier"
},
{
"name": "cellular",
"type": {
"kind": "boolean"
},
"readOptional": true,
"displayName": "Cellular"
},
{
"name": "wifi",
"type": {
"kind": "boolean"
},
"readOptional": true,
"displayName": "Wi-Fi"
}
]
},
"readOptional": true,
"displayName": "Network"
},
{
"name": "os",
"type": {
"kind": "object",
"properties": [
{
"name": "name",
"type": {
"kind": "string",
"values": [
"Android",
"Windows",
"iOS",
"macOS",
"Linux",
"Chrome OS",
"Other"
]
},
"readOptional": true,
"displayName": "Name"
},
{
"name": "other",
"type": {
"kind": "string"
},
"readOptional": true,
"displayName": "Other"
},
{
"name": "version",
"type": {
"kind": "string"
},
"readOptional": true,
"displayName": "Version"
}
]
},
"readOptional": true,
"displayName": "OS"
},
{
"name": "page",
"type": {
"kind": "object",
"properties": [
{
"name": "path",
"type": {
"kind": "string"
},
"readOptional": true,
"displayName": "Path"
},
{
"name": "referrer",
"type": {
"kind": "string"
},
"readOptional": true,
"displayName": "Referrer"
},
{
"name": "search",
"type": {
"kind": "string"
},
"readOptional": true,
"displayName": "Search"
},
{
"name": "title",
"type": {
"kind": "string"
},
"readOptional": true,
"displayName": "Title"
},
{
"name": "url",
"type": {
"kind": "string"
},
"readOptional": true,
"displayName": "URL"
}
]
},
"readOptional": true,
"displayName": "Page"
},
{
"name": "referrer",
"type": {
"kind": "object",
"properties": [
{
"name": "id",
"type": {
"kind": "string"
},
"readOptional": true,
"displayName": "ID"
},
{
"name": "type",
"type": {
"kind": "string"
},
"readOptional": true,
"displayName": "Type"
}
]
},
"readOptional": true,
"displayName": "Referrer"
},
{
"name": "screen",
"type": {
"kind": "object",
"properties": [
{
"name": "width",
"type": {
"kind": "int",
"bitSize": 16
},
"readOptional": true,
"displayName": "Width"
},
{
"name": "height",
"type": {
"kind": "int",
"bitSize": 16
},
"readOptional": true,
"displayName": "Height"
},
{
"name": "density",
"type": {
"kind": "decimal",
"precision": 3,
"scale": 2
},
"readOptional": true,
"displayName": "Density"
}
]
},
"readOptional": true,
"displayName": "Screen"
},
{
"name": "session",
"type": {
"kind": "object",
"properties": [
{
"name": "id",
"type": {
"kind": "int",
"bitSize": 64
},
"readOptional": true,
"displayName": "ID"
},
{
"name": "start",
"type": {
"kind": "boolean"
},
"readOptional": true,
"displayName": "Start"
}
]
},
"readOptional": true,
"displayName": "Session"
},
{
"name": "timezone",
"type": {
"kind": "string"
},
"readOptional": true,
"displayName": "Timezone"
},
{
"name": "userAgent",
"type": {
"kind": "string"
},
"readOptional": true,
"displayName": "User agent"
}
]
},
"readOptional": true,
"displayName": "Context"
},
{
"name": "event",
"type": {
"kind": "string"
},
"readOptional": true,
"displayName": "Event"
},
{
"name": "groupId",
"type": {
"kind": "string"
},
"readOptional": true,
"displayName": "Group ID"
},
{
"name": "messageId",
"type": {
"kind": "string"
},
"displayName": "Message ID"
},
{
"name": "name",
"type": {
"kind": "string"
},
"readOptional": true,
"displayName": "Name"
},
{
"name": "properties",
"type": {
"kind": "json"
},
"readOptional": true,
"displayName": "Properties"
},
{
"name": "receivedAt",
"type": {
"kind": "datetime"
},
"displayName": "Received at"
},
{
"name": "sentAt",
"type": {
"kind": "datetime"
},
"displayName": "Sent at"
},
{
"name": "originalTimestamp",
"type": {
"kind": "datetime"
},
"displayName": "Original timestamp"
},
{
"name": "timestamp",
"type": {
"kind": "datetime"
},
"displayName": "Timestamp"
},
{
"name": "traits",
"type": {
"kind": "json"
},
"displayName": "Traits"
},
{
"name": "type",
"type": {
"kind": "string",
"values": [
"alias",
"identify",
"group",
"page",
"screen",
"track"
]
},
"displayName": "Type"
},
{
"name": "previousId",
"type": {
"kind": "string"
},
"readOptional": true,
"displayName": "Previous ID"
},
{
"name": "userId",
"type": {
"kind": "string"
},
"readOptional": true,
"displayName": "User ID"
}
]
},
"outSchema": {
"kind": "object",
"properties": [
{
"name": "products",
"type": {
"kind": "array",
"elementType": {
"kind": "string"
},
"minElements": 1
}
},
{
"name": "amount",
"type": {
"kind": "decimal",
"precision": 10,
"scale": 2
}
}
]
}
}