Skip to main content

Data Exports: what each column means

If you've set up a WhatsApp data export to Google Sheets or SFTP, this article explains what each column in your file actually means.

WAX exports come in several types:

  1. One per WhatsApp (or RCS or SMS) event: Sent, Delivered, Clicked, Quick Reply, Failed, Undeliverable, Manual Inbound Message, Interacted, Billed Message, Opt In, Opt Out (will appear as "Metric exports" in the table below)

  2. Plus dedicated exports for

    1. Performance rollups,

    2. WhatsApp,

    3. Click Events, and

    4. Contact Lists.

Not every column appears in every export. Use the table below to find the column you're looking for, see which export(s) it belongs to, and understand exactly what it measures.

Metric exports

Column name

Definition

Expected value type

unique_id

Identifier tying the row back to its source message/interaction; used to dedupe and correlate an event across the delivery funnel

String/identifier

phone_number

Contact's WhatsApp phone number (built-in, mandatory column)

String (phone number)

occurred_at

Timestamp the event actually happened

Timestamp

metric_name

Internal event-type name identifying which metric this row is — e.g. whatsapp_sent, whatsapp_delivered; this is what actually distinguishes "Sent" from "Delivered" etc.

String (enum-like)

reference_name (optional — org toggle "include reference name")

Name of the Automation or Broadcast the event is tied to

String

reference_type (optional — same toggle)

Automation or Broadcast

String (enum)

reference_id (optional — same toggle)

DB id of that Automation/Broadcast

Number (integer)

properties (optional — org toggle "include properties")

Raw JSON of event-specific extra data; contents vary by metric type (e.g. Billed Message → category/currency/channel, never a cost value — most other metric types export an empty object)

JSON/text

phone_number (attribute) (optional)

Same phone number, added a second time as a selectable contact attribute (can duplicate the built-in column)

String

first_name (optional)

Contact's first name

String

last_name (optional)

Contact's last name

String

email (optional)

Contact's email

String (email)

language (optional)

Contact's language setting

String

whatsapp_valid (optional)

Whether this number is confirmed reachable on WhatsApp — TRUE after a confirmed delivery, FALSE after a confirmed send failure, blank = never yet confirmed

Boolean (nullable)

whatsapp_opt_in_status (optional)

WhatsApp-channel consent status: opted_in, opted_out, or unknown (default)

String (enum)

sms_opt_in_status (optional)

Same, for SMS channel consent

String (enum)

external_id (optional)

Contact's external system id (e.g. from an integration)

String

created_at (contact) (optional)

Date the contact record was created

Date

(any custom attribute) (optional)

Any org-defined custom contact attribute (tags, custom fields)

Varies by attribute type

WhatsApp Messages

Column name

Definition

Expected value type

id

Internal DB id of the record (WhatsappMessage id)

Number (integer)

phone_number

Contact's WhatsApp phone number (built-in, mandatory column)

String (phone number)

timestamp

Message creation time

Timestamp

kind

Message type — template, temporary_template, etc.

String

category

WhatsApp Business template category — marketing / utility / authentication; blank if not applicable

String

inbound

Whether the message came from the contact (TRUE) or was sent by WAX (FALSE)

Boolean

whatsapp_error_code

Error code from Meta/360Dialog if the message failed to send; blank if no error

String/code

message_payload

Raw message content — template body/params, or free text

Text (JSON-like string)

agent_email

Email of the human agent who sent the message; blank for automated/template sends

String (email)

reference_name (optional — org toggle "include reference name")

Name of the Automation or Broadcast the message is tied to

String

reference_type (optional — same toggle)

Automation or Broadcast

String (enum)

reference_id (optional — same toggle)

DB id of that Automation/Broadcast

Number (integer)

phone_number (attribute) (optional)

Same phone number, added a second time as a selectable contact attribute

String

first_name (optional)

Contact's first name

String

last_name (optional)

Contact's last name

String

email (optional)

Contact's email

String (email)

language (optional)

Contact's language setting

String

whatsapp_valid (optional)

Whether this number is confirmed reachable on WhatsApp — TRUE after a confirmed delivery, FALSE after a confirmed send failure, blank = never yet confirmed

Boolean (nullable)

whatsapp_opt_in_status (optional)

WhatsApp-channel consent status: opted_in, opted_out, or unknown (default)

String (enum)

sms_opt_in_status (optional)

Same, for SMS channel consent

String (enum)

external_id (optional)

Contact's external system id (e.g. from an integration)

String

created_at (contact) (optional)

Date the contact record was created

Date

(any custom attribute) (optional)

Any org-defined custom contact attribute (tags, custom fields)

Varies by attribute type

Click Events

Column name

Definition

Expected value type

id

Internal DB id of the record (ClickEvent id)

Number (integer)

phone_number

Contact's WhatsApp phone number (built-in, mandatory column)

String (phone number)

timestamp

Click time

Timestamp

kind

Click type — url, quick_reply, list_option, flow, dial_phone, or ctwa (Click-to-WhatsApp ad touchpoint)

String (enum)

button_text

Text of the button clicked; populated for quick-reply/list/dial-phone clicks, blank for plain URL clicks

String

url

Destination URL for a kind: url click; blank otherwise

String (URL)

reference_name (optional — org toggle "include reference name")

Name of the Automation or Broadcast the click is tied to

String

reference_type (optional — same toggle)

Automation or Broadcast

String (enum)

reference_id (optional — same toggle)

DB id of that Automation/Broadcast

Number (integer)

phone_number (attribute) (optional)

Same phone number, added a second time as a selectable contact attribute

String

first_name (optional)

Contact's first name

String

last_name (optional)

Contact's last name

String

email (optional)

Contact's email

String (email)

language (optional)

Contact's language setting

String

whatsapp_valid (optional)

Whether this number is confirmed reachable on WhatsApp — TRUE after a confirmed delivery, FALSE after a confirmed send failure, blank = never yet confirmed

Boolean (nullable)

whatsapp_opt_in_status (optional)

WhatsApp-channel consent status: opted_in, opted_out, or unknown (default)

String (enum)

sms_opt_in_status (optional)

Same, for SMS channel consent

String (enum)

external_id (optional)

Contact's external system id (e.g. from an integration)

String

created_at (contact) (optional)

Date the contact record was created

Date

(any custom attribute) (optional)

Any org-defined custom contact attribute (tags, custom fields)

Varies by attribute type

Performances

One row per day per Automation/Broadcast. No contact-level or optional columns.

Column name

Definition

Expected value type

date

Calendar day of the row

Date

reference_name

Name of the Automation or Broadcast the aggregate is tied to (mandatory here)

String

reference_type

Automation or Broadcast

String (enum)

reference_id

DB id of that Automation/Broadcast

Number (integer)

cost_eur

WhatsApp/RCS/SMS messaging cost billed by Meta/BSP for that day+reference (not ad spend)

Currency, EUR (decimal)

delivered

Count of delivered events that day for that reference

Number (integer count)

read

Count of read events

Number (integer count)

interacted

Count of interacted events — includes every click type except ctwa

Number (integer count)

quick_reply

Count of quick-reply button clicks

Number (integer count)

clicked

Count of link/URL clicks specifically

Number (integer count)

converted_read

Count of orders (Shopify/PrestaShop/etc.) attributed to a prior "read" touchpoint, within the org's configurable read-attribution window

Number (integer count)

converted_interacted

Same, attributed to an "interacted" touchpoint

Number (integer count)

converted_clicked

Same, attributed to a "clicked" touchpoint

Number (integer count)

revenue_read_eur

Order subtotal revenue (EUR) attributed to read

Currency, EUR (decimal)

revenue_interacted_eur

Same, attributed to interacted

Currency, EUR (decimal)

revenue_clicked_eur

Same, attributed to clicked

Currency, EUR (decimal)

whatsapp_opt_in

Count of opt-in events that day

Number (integer count)

whatsapp_opt_out

Count of opt-out events that day

Number (integer count)

billed_message

Count of billed messages (WhatsApp+RCS+SMS combined) that day — count only, no cost/value figure exists at message level

Number (integer count)

Did this answer your question?