When an authenticated user updates consent on one device, POST the consent event to your central consent store (or directly to your consent platform API) with a JWT signed by YOUR_SIGNING_KEY that includes the user's stable identifier (e.g., hashed email or internal userId).
On any subsequent device or session where the user is authenticated, retrieve current consent on page load by calling your consent API with the user's identifier; return the latest consent record including purpose decisions and timestamp.
Apply the retrieved consent state to your CMP on the new device: for Transcend, call Transcend.overrideConsentOptions(consentMap) with the server-fetched preferences so the banner does not re-appear for returning users who have already consented.
For unauthenticated sessions, fall back to local cookie-based consent; when the user subsequently authenticates, merge the local and server-side consent records by taking the most recently updated per-purpose decision.
Log sync events with origin device, destination device, timestamp, and the consent record version to support audit and debugging of cross-device consent conflicts.
Expire the signed JWT used for consent API calls after a short TTL (e.g., 15 minutes) to prevent replay attacks; refresh it via your authentication flow rather than storing a long-lived consent API token on the client.
Known gotchas
Merging conflicting consent records (e.g., opt-in on mobile, opt-out on desktop) requires a defined conflict-resolution policy; most implementations take the most recent timestamp, but if clocks are not synchronized across devices, this can produce incorrect results.
Cross-device consent sync relies on stable user identifiers, which themselves require user login; for anonymous users, cross-device sync is not possible without device-graph linking, which may itself require consent under GDPR.
Persisting consent server-side for anonymous users via a probabilistic device fingerprint violates GDPR data minimization principles; only sync consent for users with an authenticated stable identifier.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp