Skip to content
SSalesShiftDocs
API reference

Webhooks and tracking

Inbound provider webhooks for SendGrid, Mailgun and SES, the open pixel, the click redirect and unsubscribe.

7 endpoints· 7 not exercised here· verified against http://127.0.0.1:8741

7 endpoints

GET/api/v1/salesshift/t/c/{tracking_id}public-by-designNot exercised herePublic click tracker; records the click then redirects to the http(s) destination.
Auth
no dependency
Scope
public-by-design
Success
200 · application/json
Envelope
redirect

The click tracker is followed by the recipient's browser.

Path parameters

NameTypeRequiredNotes
tracking_idstringrequired

Query parameters

NameTypeRequiredNotes
ustringrequiredDestination URL

Request

curl
curl 'https://api.vxcloud.io/api/v1/salesshift/t/c/{tracking_id}?u=<string>'

Response · 200

302 RedirectResponse to the destination URL; a non-http(s) scheme gets 400 with an HTML body instead.

#get-api-v1-salesshift-t-c-tracking-idtracking_router · vxcloud_fastapiclient/app/services/salesshift/tracking_router.py:118Implemented and read in source for this inventory, but not exercised against a running server here. Treat as undemonstrated until someone calls it.
GET/api/v1/salesshift/t/o/{tracking_id}.pngpublic-by-designNot exercised herePublic 1x1 tracking pixel; records an open against the tracking id.
Auth
no dependency
Scope
public-by-design
Success
200 · application/json
Envelope
binary

The open pixel is loaded by the recipient's mail client; it cannot carry a credential.

Path parameters

NameTypeRequiredNotes
tracking_idstringrequired

Request

curl
curl 'https://api.vxcloud.io/api/v1/salesshift/t/o/{tracking_id}.png'

Response · 200

Response with a 1x1 image/png.

#get-api-v1-salesshift-t-o-tracking-id-pngtracking_router · vxcloud_fastapiclient/app/services/salesshift/tracking_router.py:44Implemented and read in source for this inventory, but not exercised against a running server here. Treat as undemonstrated until someone calls it.
GET/api/v1/salesshift/u/{tracking_id}public-by-designNot exercised herePublic unsubscribe confirmation page for a tracking id.
Auth
no dependency
Scope
public-by-design
Success
200 · text/html
Envelope
html

The unsubscribe page must work without a login — that is a compliance requirement, not an oversight.

Path parameters

NameTypeRequiredNotes
tracking_idstringrequired

Request

curl
curl 'https://api.vxcloud.io/api/v1/salesshift/u/{tracking_id}'

Response · 200

Returns text/html (html).

#get-api-v1-salesshift-u-tracking-idtracking_router · vxcloud_fastapiclient/app/services/salesshift/tracking_router.py:218Implemented and read in source for this inventory, but not exercised against a running server here. Treat as undemonstrated until someone calls it.
POST/api/v1/salesshift/u/{tracking_id}public-by-designNot exercised herePublic unsubscribe submit; suppresses the address and returns an HTML confirmation.
Auth
no dependency
Scope
public-by-design
Success
200 · text/html
Envelope
html

Unsubscribe submit; same reason.

Path parameters

NameTypeRequiredNotes
tracking_idstringrequired

Request

curl
curl -X POST 'https://api.vxcloud.io/api/v1/salesshift/u/{tracking_id}'

Response · 200

Returns text/html (html).

#post-api-v1-salesshift-u-tracking-idtracking_router · vxcloud_fastapiclient/app/services/salesshift/tracking_router.py:238Implemented and read in source for this inventory, but not exercised against a running server here. Treat as undemonstrated until someone calls it.
POST/api/v1/salesshift/webhooks/{integration_id}/mailgunurl-secret-onlyNot exercised hereMailgun webhook — {'event-data': {...}} payload.
Auth
no dependency
Scope
url-secret-only
Success
200 · application/json
Envelope
success+custom

No signature verification. The only credential is the integration_id UUID in the URL.

Path parameters

NameTypeRequiredNotes
integration_idstring(uuid)required

Request

curl
curl -X POST 'https://api.vxcloud.io/api/v1/salesshift/webhooks/{integration_id}/mailgun'

Response · 200

Top-level keys
{
  "applied": "…",
  "error": "…",
  "success": "…"
}
Top-level keys read from the handler's return statements.
#post-api-v1-salesshift-webhooks-integration-id-mailgunwebhooks_router · vxcloud_fastapiclient/app/services/salesshift/webhooks_router.py:140Implemented and read in source for this inventory, but not exercised against a running server here. Treat as undemonstrated until someone calls it.
POST/api/v1/salesshift/webhooks/{integration_id}/sendgridurl-secret-onlyNot exercised hereSendGrid Event Webhook — JSON array of events.
Auth
no dependency
Scope
url-secret-only
Success
200 · application/json
Envelope
success+custom

No signature verification. The only credential is the integration_id UUID in the URL. Anyone holding that UUID can post events that feed the suppression list.

Path parameters

NameTypeRequiredNotes
integration_idstring(uuid)required

Request

curl
curl -X POST 'https://api.vxcloud.io/api/v1/salesshift/webhooks/{integration_id}/sendgrid'

Response · 200

Top-level keys
{
  "applied": "…",
  "error": "…",
  "success": "…"
}
Top-level keys read from the handler's return statements.
#post-api-v1-salesshift-webhooks-integration-id-sendgridwebhooks_router · vxcloud_fastapiclient/app/services/salesshift/webhooks_router.py:116Implemented and read in source for this inventory, but not exercised against a running server here. Treat as undemonstrated until someone calls it.
POST/api/v1/salesshift/webhooks/{integration_id}/sesurl-secret-onlyNot exercised hereAWS SES via SNS.

AWS SES via SNS. Handles SubscriptionConfirmation + Notification.

Auth
no dependency
Scope
url-secret-only
Success
200 · application/json
Envelope
success+custom

No SNS signature verification. The only credential is the integration_id UUID in the URL. SubscriptionConfirmation is logged for an operator rather than auto-confirmed.

Path parameters

NameTypeRequiredNotes
integration_idstring(uuid)required

Request

curl
curl -X POST 'https://api.vxcloud.io/api/v1/salesshift/webhooks/{integration_id}/ses'

Response · 200

Top-level keys
{
  "action": "…",
  "applied": "…",
  "error": "…",
  "success": "…"
}
Top-level keys read from the handler's return statements.
#post-api-v1-salesshift-webhooks-integration-id-seswebhooks_router · vxcloud_fastapiclient/app/services/salesshift/webhooks_router.py:171Implemented and read in source for this inventory, but not exercised against a running server here. Treat as undemonstrated until someone calls it.