Pipeline Integrations
Pipeline integrations connect an integration template (at a specific revision) to a pipeline. This controls which vendors receive events from each pipeline and at which configuration version.
How It Works
Pipeline "Marketing Website"
├── Meta CAPI @ Revision v3 (enabled)
├── GA4 @ Revision v2 (enabled)
└── TikTok @ Revision v1 (disabled)Each pipeline can have multiple integrations attached. Each attachment pins to a specific revision, allowing you to:
- Roll out configuration changes to one pipeline at a time
- Keep different pipelines on different revision versions
- Disable an integration on a specific pipeline without affecting others
Pipeline Integration Object
{
"id": "pi_abc123",
"pipeline_id": "pip_xyz789",
"integration_id": "tmpl_abc123",
"integration_name": "Meta CAPI Production",
"vendor": "meta_capi",
"revision_id": "rev_xyz789",
"revision_number": 3,
"latest_revision": 5,
"enabled": true,
"created_at": "2026-02-20T10:00:00Z",
"updated_at": "2026-02-25T14:30:00Z"
}| Field | Type | Description |
|---|---|---|
id | string | Unique pipeline integration identifier |
pipeline_id | string | Pipeline this integration is assigned to |
integration_id | string | Integration template ID |
integration_name | string | Template display name (for convenience) |
vendor | string | Vendor key |
revision_id | string | Pinned revision ID |
revision_number | integer | Pinned revision number |
latest_revision | integer | Latest available revision number for the template |
enabled | boolean | Whether delivery is active for this pipeline |
created_at | string | ISO 8601 creation timestamp |
updated_at | string | ISO 8601 last-updated timestamp |
When revision_number is less than latest_revision, a newer configuration version is available. Update the revision_id to deploy the latest revision to this pipeline.
Parameter Substitution
If an integration revision’s config contains {{pipeline_param.KEY}} references, the pipeline’s parameters are substituted at processing time. This means the same integration revision can be shared across multiple pipelines, with each pipeline supplying its own values for vendor credentials, measurement IDs, or other configuration.
For example, Pipeline A and Pipeline B can both use the same GA4 integration revision. Pipeline A sets ga4_measurement_id to G-AAAA in its parameters, while Pipeline B sets it to G-BBBB. The event processor resolves the correct value for each pipeline when it loads the config.
List Pipeline Integrations
GET /v1/admin/pipelines/{pid}/integrations
Returns all integrations assigned to a pipeline.
Request:
curl -X GET http://localhost:8084/v1/admin/pipelines/pip_xyz789/integrations \
-H "Authorization: Bearer {access_token}"Response:
{
"integrations": [
{
"id": "pi_abc123",
"pipeline_id": "pip_xyz789",
"integration_id": "tmpl_abc123",
"integration_name": "Meta CAPI Production",
"vendor": "meta_capi",
"revision_id": "rev_xyz789",
"revision_number": 3,
"latest_revision": 5,
"enabled": true,
"created_at": "2026-02-20T10:00:00Z",
"updated_at": "2026-02-25T14:30:00Z"
}
]
}Required role: viewer or above.
Assign Integration to Pipeline
POST /v1/admin/pipelines/{pid}/integrations
Attach an integration template (at a specific revision) to a pipeline.
Request:
{
"integration_id": "tmpl_abc123",
"revision_id": "rev_xyz789",
"enabled": true
}| Field | Type | Required | Description |
|---|---|---|---|
integration_id | string | Yes | Integration template to assign |
revision_id | string | Yes | Revision to pin to |
enabled | boolean | No | Whether to enable delivery immediately (default true) |
Response (201 Created): Full pipeline integration object.
Required role: editor or above.
Update Pipeline Integration
PUT /v1/admin/pipelines/{pid}/integrations/{id}
Update an existing pipeline integration assignment. Use this to change the pinned revision or toggle enabled/disabled.
Request:
{
"revision_id": "rev_new456",
"enabled": true
}| Field | Type | Required | Description |
|---|---|---|---|
revision_id | string | No | New revision ID to pin to |
enabled | boolean | No | Enable or disable delivery |
Response: Updated pipeline integration object.
Example: Deploy a New Revision
# 1. Create a new revision with updated config
curl -X POST http://localhost:8084/v1/admin/integration-templates/tmpl_abc123/revisions \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json" \
-d '{
"config": { "pixel_id": "1234567890", "access_token": "new_token..." },
"delivery_mode": "server_side",
"change_summary": "Rotated access token"
}'
# 2. Update the pipeline integration to use the new revision
curl -X PUT http://localhost:8084/v1/admin/pipelines/pip_xyz789/integrations/pi_abc123 \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json" \
-d '{ "revision_id": "rev_new456" }'Required role: editor or above.
Remove Integration from Pipeline
DELETE /v1/admin/pipelines/{pid}/integrations/{id}
Remove an integration from a pipeline. Events will no longer be delivered to this vendor from this pipeline.
Request:
curl -X DELETE http://localhost:8084/v1/admin/pipelines/pip_xyz789/integrations/pi_abc123 \
-H "Authorization: Bearer {access_token}"Response:
{
"status": "removed"
}Removing a pipeline integration stops event delivery to that vendor from this pipeline immediately. The integration template and its revisions are not affected and remain available for other pipelines.
Required role: editor or above.