WebhookCardTemplateMessage

  • channel
    Type: object · WebhookChannel
    required

    The channel the customer is conversing on.

    • id
      Type: number
    • name
      Type: string
    • type
      Type: stringenum

      Empirically confirmed: landbot (Web), whatsapp. (whatsapi from legacy docs is WRONG.) whatsappsandbox/facebook listed in legacy docs, not yet verified.

      values
      • landbot
      • whatsapp
      • whatsappsandbox
      • facebook
  • customer
    Type: object · WebhookCustomer
    required

    The customer this message belongs to. Custom variables (Fields/Hidden Fields) appear as ADDITIONAL top-level keys here and may be type-mangled (e.g. a list arrives as the Python-repr string "['a','b']"). Treat custom values as strings unless the source block guarantees otherwise.

    • agent_id
      Type: integer | null

      Assigned human agent, or null. Reflects current state.

    • archived
      Type: boolean
    • country
      Type: string

      Web only. Geo-inferred.

    • id
      Type: number
    • is_external
      Type: string

      Web only. The STRING "True"/"False", not a boolean — compare with === "True".

    • name
      Type: string
    • phone
      Type: string

      WhatsApp only. Number with country code, no + (e.g. 34696336450).

    • url
      Type: string

      Web only. The bot URL the customer is using.

    • webchat_type
      Type: string

      Web only. Widget variant, e.g. Native.

    • propertyName
      Type: anything
  • data
    Type: object
    required

    WhatsApp-only; the WhatsApp equivalent of dialog.

    • body
      Type: string
      required
    • buttons
      Type: array object[]
      required
    • footer
      Type: string
    • image
      Type: string | null
    • title
      Type: string
  • sender
    Type: object · WebhookSender
    required

    Who originated this message.

    • type
      Type: stringenum
      required

      Author class. Note _raw.author_type uses a different vocabulary (user instead of customer) — pick one as canonical, don't mix.

      values
      • customer
      • bot
      • agent
      • sys
    • id
      Type: number

      bot → bot ID (= abs(_raw.samurai)); customer → customer ID; agent → agent ID; sys → 0.

    • name
      Type: string

      Display name. Anonymous Web visitors get an auto-generated Visitor #…; sys is Landbot.

  • timestamp
    Type: number
    required

    Unix epoch SECONDS (not ms, not ISO). Web → microsecond float; WhatsApp customer-sent → integer; WhatsApp bot/agent-sent → float. Preserved across retries.

  • type
    enum
    const:  
    card_template
    required
    values
    • card_template
  • _raw
    Type: object · WebhookRaw

    The unwrapped raw message as Landbot represents it internally — fields not surfaced in data.

    • author_type
      Type: stringenum

      Author class in the _raw vocabulary (user = customer).

      values
      • user
      • bot
      • agent
      • sys
    • author_uuid
      Type: string | null

      Stable UUID per bot/agent; null for some types (e.g. notes).

    • read
      Type: boolean
    • rich_text
      Type: string | null
    • samurai
      Type: number

      Numeric author marker; sign discriminates class: bot → negative (abs = sender.id); agent → positive (= sender.id = customer.agent_id); sys → 0; customer → field absent. Can change mid-conversation on a Jump-to between bots.

    • seq
      Type: number | null

      Per-message sequence; helps break timestamp ties within a burst.

    • uuid
      Type: string

      UUID of this specific message.

    • propertyName
      Type: anything