Skip to content

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

  1. Open https://backoffice.bsport.io/settings/webhook.
  2. Locate the existing coach registration.
  3. 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

{
  "event_type": "associated_coach-update",
  "date": 1721639920,
  "data": {
    "associated_coach": {}
  }
}

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 POST over 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 2xx quickly 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.