Receiving webhooks
Fan assignment updated
assignment.updatedThe employee assigned to a fan changed: assigned_user_id is the new assignee, or null when the assignment was removed.
Emitted for assignments made in the Fansquare app and for those made through this API (PUT and DELETE /v1/accounts/{account_id}/fans/{fan_id}/assignment): an integration also receives the echo of its own writes. A write can emit even when it changes nothing, for example when it assigns the employee already assigned, or when it removes through this API an assignment that was not set.
created_at is the time of the write.
{
"id": "0199c7a2-5d4e-7b3a-9f1e-2c8d6b4a1e07",
"type": "assignment.updated",
"created_at": "2026-10-12T21:14:00.000Z",
"api_version": "2026-07-06",
"data": {
"account_id": "c851d9d6-b90b-4958-aed2-2fdaa2fe21a3",
"fan_id": "a6df8022-e509-4575-ad28-e29c2d1d42dc",
"assigned_user_id": "ki9DZXxpgGz7KiDqHj88eCxHg56W"
}
}Delivery headers
Fansquare-SignaturestringrequiredSignature of the delivery:
v1=followed by the hexadecimal HMAC-SHA256 of{Fansquare-Signature-Timestamp}.{raw body}, keyed with the signing secret of the endpoint. Compute it over the raw body, before any JSON parsing, and compare in constant time.Fansquare-Signature-TimestampintegerrequiredUnix time, in seconds, at which this attempt was signed. Each attempt is signed again. Reject a delivery whose timestamp is more than 5 minutes away from your clock: it blocks replays of an intercepted delivery.
Fansquare-Event-TypestringrequiredEvent type, the
typeof the body.Fansquare-Event-IdstringrequiredEvent id, the
idof the body. The same across automatic retries and replays: deduplicate on it.format uuidFansquare-Delivery-IdstringrequiredId of this delivery of the event to this endpoint. The same across the automatic retries (10 seconds, 1 minute, then 5 minutes after a failed attempt), new on a replay. Any response other than a 2xx within 10 seconds, redirects included, is a failed attempt; after the last one the delivery is listed by GET /v1/webhooks/{endpoint_id}/failures.
format uuidUser-AgentstringrequiredAlways
Offmy-Webhooks/1.0.
Delivery body
idstringrequiredEvent id. The same for every endpoint that receives the event, and across automatic retries and replays: deduplicate on it. Also sent as the
Fansquare-Event-Idheader.format uuidtype"assignment.updated"requiredEvent type. Also sent as the
Fansquare-Event-Typeheader.created_atstringrequiredWhen the fact occurred (ISO 8601, UTC), not when this delivery was sent: a retry or a replay carries the original value. The description of each event says which instant it is.
format date-timeapi_versionstringrequiredVersion the payload is rendered in: the release date of the version pinned on the endpoint at its creation (the
api_versionof the endpoint), for example2026-07-06.dataobjectrequiredaccount_idstringrequiredMYM account id of the creator (
account.external_idin GET /v1/creators), as used by the /v1/accounts routes.fan_idstringrequiredMYM fan id.
assigned_user_idstring | nullrequiredFansquare id of the employee the fan is now assigned to (see GET /v1/employees), or null when the assignment was removed.
{
"id": "0199c7a2-5d4e-7b3a-9f1e-2c8d6b4a1e07",
"type": "assignment.updated",
"created_at": "2026-10-12T21:14:00.000Z",
"api_version": "2026-07-06",
"data": {
"account_id": "c851d9d6-b90b-4958-aed2-2fdaa2fe21a3",
"fan_id": "a6df8022-e509-4575-ad28-e29c2d1d42dc",
"assigned_user_id": "ki9DZXxpgGz7KiDqHj88eCxHg56W"
}
}