Deck Docs

Identity and context

Pass stable user ids and optional product context with each submission.

Identity and context

User identity

Pass a stable product user on DeckProvider:

user={{
  id: currentUser.id, // required
  email: currentUser.email,
  name: currentUser.name,
}}
FieldRequiredPurpose
idYesStable host-app user id. Links repeated widget submissions to the same contact.
emailNoImproves CRM / contact matching when present
nameNoDisplay / matching helper

Rules of thumb:

  • Prefer the same stable id you use elsewhere in your product (not a session id).
  • user.id is enough to create or match a contact even when email is omitted.
  • Empty or whitespace-only id is rejected client-side (user.id is required).

Product context

context is a free-form object stored with the submission (not shown in the SDK UI). Use it to filter or debug later in Deck.

context={{
  surface: "intelligence-panel",
  messageId: "msg_123",
  experiment: "checkout_v2",
}}

Allowed value types: string, number, boolean, null, or undefined.

Keep context small and serializable. Prefer identifiers and enums over large blobs.

You can pass context on:

  • FeedbackDialog
  • ThumbsFeedback
  • headless submitFeedback({ …, context })

Widget as source

widgetId identifies where the feedback came from in your product (a Deck widget source). Use different widgets for different surfaces when you want separate inboxes or Project links.

Next

URL privacy