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.
The click tracker is followed by the recipient's browser.
Path parameters
| Name | Type | Required | Notes |
|---|---|---|---|
| tracking_id | string | required |
Query parameters
| Name | Type | Required | Notes |
|---|---|---|---|
| u | string | required | Destination URL |
Request
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/o/{tracking_id}.pngpublic-by-designNot exercised herePublic 1x1 tracking pixel; records an open against the tracking id.
The open pixel is loaded by the recipient's mail client; it cannot carry a credential.
Path parameters
| Name | Type | Required | Notes |
|---|---|---|---|
| tracking_id | string | required |
Request
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/u/{tracking_id}public-by-designNot exercised herePublic unsubscribe confirmation page for a tracking id.
The unsubscribe page must work without a login — that is a compliance requirement, not an oversight.
Path parameters
| Name | Type | Required | Notes |
|---|---|---|---|
| tracking_id | string | required |
Request
curl 'https://api.vxcloud.io/api/v1/salesshift/u/{tracking_id}'Response · 200
Returns text/html (html).
POST/api/v1/salesshift/u/{tracking_id}public-by-designNot exercised herePublic unsubscribe submit; suppresses the address and returns an HTML confirmation.
Unsubscribe submit; same reason.
Path parameters
| Name | Type | Required | Notes |
|---|---|---|---|
| tracking_id | string | required |
Request
curl -X POST 'https://api.vxcloud.io/api/v1/salesshift/u/{tracking_id}'Response · 200
Returns text/html (html).
POST/api/v1/salesshift/webhooks/{integration_id}/mailgunurl-secret-onlyNot exercised hereMailgun webhook — {'event-data': {...}} payload.
No signature verification. The only credential is the integration_id UUID in the URL.
Path parameters
| Name | Type | Required | Notes |
|---|---|---|---|
| integration_id | string(uuid) | required |
Request
curl -X POST 'https://api.vxcloud.io/api/v1/salesshift/webhooks/{integration_id}/mailgun'Response · 200
{
"applied": "…",
"error": "…",
"success": "…"
}POST/api/v1/salesshift/webhooks/{integration_id}/sendgridurl-secret-onlyNot exercised hereSendGrid Event Webhook — JSON array of events.
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
| Name | Type | Required | Notes |
|---|---|---|---|
| integration_id | string(uuid) | required |
Request
curl -X POST 'https://api.vxcloud.io/api/v1/salesshift/webhooks/{integration_id}/sendgrid'Response · 200
{
"applied": "…",
"error": "…",
"success": "…"
}POST/api/v1/salesshift/webhooks/{integration_id}/sesurl-secret-onlyNot exercised hereAWS SES via SNS.
AWS SES via SNS. Handles SubscriptionConfirmation + Notification.
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
| Name | Type | Required | Notes |
|---|---|---|---|
| integration_id | string(uuid) | required |
Request
curl -X POST 'https://api.vxcloud.io/api/v1/salesshift/webhooks/{integration_id}/ses'Response · 200
{
"action": "…",
"applied": "…",
"error": "…",
"success": "…"
}