Mobile

_PushAddress

MobilePush device registrations: system tokens, opt-in status, and application binding per subscriber device.

Schema last reviewed 2026-06-17

Opens _PushAddress in the interactive canvas with SQL Sandbox.

Fields (20)

Field Type Flags Relations Description
DeviceID Text(200) PK, FK _PushAddress.DeviceID
_PushTag.DeviceID
Unique device identifier for the MobilePush endpoint.
SubscriberID Number FK _Sent.SubscriberID
_Open.SubscriberID
_Click.SubscriberID
_Bounce.SubscriberID
_Complaint.SubscriberID
_Unsubscribe.SubscriberID
Subscriber linked to the device.
SubscriberKey Text(254) FK, NULL _Subscribers.SubscriberKey Subscriber key for the device owner.
DeviceType Text(50) NULL Platform type (e.g., iOS, Android).
SystemToken Text(500) NULL Push notification system token from the OS.
OptInStatus Text(50) Opt-in state for push on this device.
OptInDate Date NULL When the subscriber opted in to push.
OptOutDate Date NULL When the subscriber opted out of push.
CreatedDate Date Record created in MobilePush.
ModifiedDate Date Last update to the device registration.
ApplicationID Text(36) NULL MobilePush application GUID.
ContactID Number NULL Contact ID when synchronized from Contact Builder.
Platform Text(100) NULL OS platform version string.
PlatformVersion Text(50) NULL Detailed platform version.
HardwareId Text(200) NULL Hardware identifier when provided by the SDK.
Badge Number NULL Last known badge count.
LocationEnabled Boolean Whether location services are enabled for the app.
TimeZone Text(50) NULL Device timezone offset or name.
Source Text(100) NULL Registration source (SDK, API, Journey).
Status Text(50) NULL Device registration status.

Example query

SELECT TOP 100
  SubscriberKey, SubscriberID, DeviceID, DeviceType, SystemToken, OptInStatus
FROM _PushAddress
WHERE CreatedDate >= DATEADD(day, -30, GETDATE())
ORDER BY CreatedDate DESC

Valid in Query Studio and Automation Studio Query Activities. GROUP BY is only needed for aggregates; ORDER BY is optional but recommended with TOP so rows are meaningful. Narrow date ranges on large tracking views to avoid timeouts.