Skip to main content

DSP Connection Statuses

Each location you bind to a DSP gets its own DSP connection, with its own status. That status is separate from the integration status of the merchant's DSP account. An active integration can have connections that are not live yet.

You can read a connection's status in two places:

DSP connection status lifecycle: bind leads to pending or APPROVED; pending becomes APPROVED when activated or needs_reconnection if the DSP abandons onboarding; APPROVED moves to waiting_for_deprovision and then deprovisioned on disconnect.

Status reference​

StatusMeaningOrders flow?What to do
pendingBound, waiting for the DSP or Stream's team to activate it.NoTrack activation. On manually activated DSPs, contact Stream support.
APPROVEDActive. Menu updates publish to the DSP.YesNothing.
needs_reconnectionThe DSP abandoned or restarted onboarding for this store.NoContact Stream support.
waiting_for_deprovisionDisconnecting.NoWait for deprovisioned.
deprovisionedDisconnected.NoNothing.
caution

A successful bind response does not mean the location is live. Bind returns success for every location it connects, including ones that are only pending. Always read status for each location in the response rather than relying on the HTTP status code.

In the bind response​

POST /onboarding/locations/bind

// Response
{
"locations": [
{
"_id": "DSP_CONNECTION_ID",
"dsp_provider_id": "DSP_LOCATION_ID",
"dsp_store_name": "Store Name in DSP",
"status": "pending" // "APPROVED" on immediate DSPs
}
]
}

Keep the _id. It is the DSP connection ID that appears as dsps[]._id when you read the organization, and the ID Stream support asks for.

In View Organization Locations​

GET /onboarding/org/{ORG_ID}/locations?location_id=LOCATION_ID

// Response
{
"locations": [
{
"_id": "LOCATION_ID",
"name": "Location Name",
"status": "active",
"dsps": [
{
"_id": "DSP_CONNECTION_ID",
"name": "DSP Name",
"source": "dsp_name",
"status": "pending",
"change_time": 1729555200000 // when the status last changed, in epoch milliseconds
}
]
}
]
}

change_time tells you how long a connection has been in its current status, which is what to look at when deciding whether a pending connection is stuck.