address.entered

Once per type per checkout, when that address is valid: every field its country requires is filled and valid, and so is each optional one filled. Checked when the shopper leaves a field they changed, once the checkout has started.

CODE
next.on('address.entered', (data, event) => {});

Data

Present: always; optional when it may be missing; campaign once the campaign is loaded; priced once the server priced the cart.

FieldTypePresent
first_namestringalways
last_namestringalways
line1stringalways
line2stringoptional
citystringoptionalNone in a country whose addresses have no city, such as Singapore.
statestringoptionalThe state or province code, in a country that has them.
postcodestringoptional
countrystringalwaysISO 3166-1 alpha-2.
phonestringoptionalIn E.164 once the address service read it, else the digits typed.
type"shipping" | "billing"alwaysWhich address: billing only when it is separate from the shipping one.

Example

The second argument, with data inside. See Events for the envelope's fields.

CODE
{
  "event_id": "3f2b8c1d9e7a4b6c8d5e2f1a0b9c8d7e",
  "event_type": "address.entered",
  "object": "address",
  "data": {
    "first_name": "Jane",
    "last_name": "Doe",
    "line1": "1 Main St",
    "city": "Austin",
    "state": "CA",
    "postcode": "90210",
    "country": "US",
    "type": "shipping"
  },
  "created_at": "2026-11-04T08:30:00.000Z",
  "session_id": "0b8f3c2d1e4a4f6b9c7d5e3f2a1b0c9d",
  "sdk_version": "0.5.0"
}