WebhookIframeMessage
- channelType: object · WebhookChannelrequired
The channel the customer is conversing on.
- idType: number
- nameType: string
- typeType: stringenum
Empirically confirmed:
landbot(Web),whatsapp. (whatsapifrom legacy docs is WRONG.)whatsappsandbox/facebooklisted in legacy docs, not yet verified.values- landbot
- whatsapp
- whatsappsandbox
- facebook
- customerType: object · WebhookCustomerrequired
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.
- agentType: integer | null
_id Assigned human agent, or null. Reflects current state.
- archivedType: boolean
- countryType: string
Web only. Geo-inferred.
- idType: number
- isType: string
_external Web only. The STRING
"True"/"False", not a boolean — compare with=== "True". - nameType: string
- phoneType: string
WhatsApp only. Number with country code, no
+(e.g.34696336450). - urlType: string
Web only. The bot URL the customer is using.
- webchatType: string
_type Web only. Widget variant, e.g.
Native. - propertyType: anything
Name
- dataType: objectrequired
- urlType: stringFormat: urirequired
- senderType: object · WebhookSenderrequired
Who originated this message.
- typeType: stringenumrequired
Author class. Note
_raw.author_typeuses a different vocabulary (userinstead ofcustomer) — pick one as canonical, don't mix.values- customer
- bot
- agent
- sys
- idType: number
bot → bot ID (= abs(_raw.samurai)); customer → customer ID; agent → agent ID; sys → 0.
- nameType: string
Display name. Anonymous Web visitors get an auto-generated
Visitor #…; sys isLandbot.
- timestampType: numberrequired
Unix epoch SECONDS (not ms, not ISO). Web → microsecond float; WhatsApp customer-sent → integer; WhatsApp bot/agent-sent → float. Preserved across retries.
- typeenumconst:iframerequiredvalues
- iframe
- _rawType: object · WebhookRaw
The unwrapped raw message as Landbot represents it internally — fields not surfaced in
data.- authorType: stringenum
_type Author class in the
_rawvocabulary (user= customer).values- user
- bot
- agent
- sys
- authorType: string | null
_uuid Stable UUID per bot/agent; null for some types (e.g. notes).
- readType: boolean
- richType: string | null
_text - samuraiType: 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.
- seqType: number | null
Per-message sequence; helps break timestamp ties within a burst.
- uuidType: string
UUID of this specific message.
- propertyType: anything
Name