--- title: Analytics description: The API for interacting with web pixels. api_version: 2025-07 api_name: customer-account-ui-extensions source_url: html: >- https://shopify.dev/docs/api/customer-account-ui-extensions/2025-07/apis/analytics md: >- https://shopify.dev/docs/api/customer-account-ui-extensions/2025-07/apis/analytics.md --- # Analytics The API for interacting with web pixels. ## StandardApi The base API object provided to this and other `customer-account` extension targets. * **analytics** **Analytics** **required** Methods for interacting with [Web Pixels](https://shopify.dev/docs/apps/marketing), such as emitting an event. **Note:** Requires to \connect a third-party domain\ to Shopify for your customer account pages. ### Analytics * publish Publish method to emit analytics events to \[Web Pixels]\(/docs/apps/marketing). ```ts (name: string, data: Record) => Promise ``` * visitor A method for capturing details about a visitor on the online store. ```ts (data: { email?: string; phone?: string; }) => Promise ``` ### VisitorResult Represents a visitor result. ```ts VisitorSuccess | VisitorError ``` ### VisitorSuccess Represents a successful visitor result. * type Indicates that the visitor information was validated and submitted. ```ts 'success' ``` ### VisitorError Represents an unsuccessful visitor result. * message A message that explains the error. This message is useful for debugging. It's \*\*not\*\* localized, and therefore should not be presented directly to the buyer. ```ts string ``` * type Indicates that the visitor information is invalid and wasn't submitted. Examples are using the wrong data type or missing a required property. ```ts 'error' ``` Examples ### Examples * #### Publish ##### React ```jsx import { Banner, reactExtension, useApi, } from '@shopify/ui-extensions-react/customer-account'; export const orderStatusBlockRender = reactExtension( 'customer-account.order-status.block.render', () => , ); function Extension() { const {analytics} = useApi(); analytics .publish( 'customer-account-extension-loaded', { extensionName: 'My Extension', }, ) .then((result) => { if (result) { console.log( 'succesfully published event, web pixels can now recieve this event', ); } else { console.log('failed to publish event'); } }) .catch((error) => { console.log('failed to publish event'); console.log('error', error); }); return See console for result; } ``` ##### JavaScript ```js import {extension} from '@shopify/ui-extensions/customer-account'; export default extension( 'customer-account.order-status.block.render', (root, {analytics}) => { analytics .publish( 'customer-account-extension-loaded', { extensionName: 'My Extension', }, ) .then((result) => { if (result) { console.log( 'succesfully published event, web pixels can now recieve this event', ); } else { console.log('failed to publish event'); } }) .catch((error) => { console.error('failed to publish event'); console.error('error', error); }); }, ); ``` * #### Visitor ##### Description You can submit visitor information to Shopify, these will be sent to the shop backend and not be propagated to web pixels on the page. ##### React ```jsx import { Banner, reactExtension, useApi, } from '@shopify/ui-extensions-react/customer-account'; export const orderStatusBlockRender = reactExtension( 'customer-account.order-status.block.render', () => , ); function Extension() { const {analytics} = useApi(); analytics .visitor({ email: 'someEmail@example.com', phone: '+1 555 555 5555', }) .then((result) => { if (result.type === 'success') { console.log('Success', result); } else { console.error('Error', result); } }); return See console for result; } ``` ##### JavaScript ```js import {extension} from '@shopify/ui-extensions/customer-account'; export default extension( 'customer-account.order-status.block.render', (root, {analytics}) => { analytics .visitor({ email: 'someEmail@example.com', phone: '+1 555 555 5555', }) .then((result) => { if (result.type === 'success') { console.log( `Success`, JSON.stringify(result), ); } else { console.log( `Error`, JSON.stringify(result), ); } }); }, ); ```