Every time your site loads, the SDK computes a SHA-256 hash of your manifest (canonical JSON: sorted keys, no spaces) and hands it to your widget, which sends it when the conversation starts. The server compares that fingerprint against the approved manifest for your channel:
- Matches → the copilot arms itself for that session.
- Doesn’t match and one was already approved before → your manifest becomes outdated and the copilot stays off until someone reviews and approves it again (section 9).
- None registered yet → the server asks for the full JSON to register it as pending.
If you change your manifest in your site’s code (adding a screen, fixing a label), the fingerprint changes on its own — there’s nothing to “recalculate” by hand.
