Coach webhook (Back Office legacy)¶
Back Office webhook (legacy)
This article applies only to the legacy registration configured in Settings > Webhook.
New Public API registrations use /api/v2/management/webhook-registrations/ and follow
the V2 payload reference.
Existing V1 registrations keep their historical contract.
Overview¶
The Coach webhook sends an event when an associated coach profile is created, updated, or deleted. It helps external systems keep coach records and access-related data aligned with bsport.
Who It Is For¶
- Teams syncing coach profiles to scheduling or payroll tools.
- Operations teams monitoring coach onboarding and offboarding.
- Support teams validating coach data propagation.
Supported Events¶
associated_coach-create: sent when a coach is added from Back Office.associated_coach-update: sent when the associated coach profile is updated from Back Office.associated_coach-delete: sent when a coach is archived from Back Office.
Important behavior:
- Updating a linked member profile does not trigger
associated_coach-update.
Inspect an existing registration¶
- Open
https://backoffice.bsport.io/settings/webhook. - Locate the existing coach registration.
- Verify its event and destination before planning the migration.
Do not create a new Back Office registration. Use the Public API teacher events for every new integration.
Payload Envelope¶
Data Fields¶
| Field | Type | Description | Example |
|---|---|---|---|
event_type |
string | Coach webhook event name. | "associated_coach-update" |
date |
number | Unix timestamp when event was emitted. | 1721639920 |
data.associated_coach.id |
number | Coach id. | 825 |
data.associated_coach.associated_coach_id |
number | Company-scoped coach id. | 837 |
data.associated_coach.firstname |
string | First name. | "Frederic" |
data.associated_coach.lastname |
string | Last name. | "Rougny" |
data.associated_coach.name |
string | Full display name. | "Frederic Rougny" |
data.associated_coach.email |
string | Email for communication and account linkage. | "fred@bsport.io" |
data.associated_coach.phone |
string | Phone number when available. | "+33600000000" |
data.associated_coach.disabled |
boolean | Whether this coach is disabled for the company. | false |
data.associated_coach.has_access_to_coach_space |
boolean | Coach space access permission. | true |
data.associated_coach.categories_taught |
array |
Categories this coach can teach. | [] |
data.associated_coach.meta_activities_taught |
array |
Meta activities this coach can teach. | [] |
data.associated_coach.workshops_taught |
array |
Workshops this coach can teach. | [] |
data.associated_coach.date_joined_company |
string or null | Join date in company profile. | null |
data.associated_coach.date_left_company |
string or null | Leave date when offboarded. | null |
data.associated_coach.notes |
string | Internal notes. | "" |
Example Payload¶
{
"event_type": "associated_coach-update",
"date": 1721639920,
"data": {
"associated_coach": {
"firstname": "Fred",
"lastname": "Coach",
"name": "Fred Coach",
"gender": "M",
"rating": "-1.00",
"id": 825,
"birthday": null,
"photo": null,
"description": "",
"color": "",
"email": "coach@bsport.io",
"associated_coach_id": 837,
"associatedcoach_set": [837, 838],
"disabled": false,
"default_payment_rule_id": null,
"coach_payment_rule_id": null,
"workshop_coach_payment_rule_id": null,
"private_coach_payment_rule_id": null,
"coach_payment_rule_group_id": null,
"private_slots_coach_payment_rules": [],
"facebook_url": "",
"instagram_url": "",
"has_access_to_coach_space": true,
"discipline_group": null,
"categories_taught": [],
"is_teaching_all_categories": false,
"meta_activities_taught": [],
"workshops_taught": [],
"is_teaching_all_workshops": false,
"discipline_group_establishments": [],
"discipline_group_establishment_groups": [],
"is_teaching_all_activities": false,
"date_joined_company": null,
"date_left_company": null,
"notes": ""
}
}
}
Delivery, Reliability, And Security¶
- Your endpoint must accept
POSTover HTTPS. - A documented retry policy is not currently specified in this guide.
- Event ordering guarantees are not currently documented.
- Signature verification headers are not currently documented.
Implementation approach:
- Use idempotent processing by coach id and event timestamp.
- Keep historical snapshots of coach profile changes if downstream systems depend on audit trails.
Troubleshooting¶
- Missing update event: verify the update was made on associated coach data, not only on linked member data.
- Delivery errors: ensure endpoint returns
2xxquickly and does not block on heavy processing. - Data mismatch: compare the latest payload values with Back Office coach profile.
FAQ¶
Does archiving a coach trigger an event?¶
Yes. Archiving a coach from Back Office triggers associated_coach-delete.
Can I sync teaching scope from this payload?¶
Yes. Teaching scope-related fields are included, such as categories, meta activities, and workshops lists.