tracker.trackBeginCheckout()
Fires a GA4 begin_checkout event. When conversionLabels.beginCheckout is configured, also fires a matching Ads conversion. All input fields are optional.
Signature
Section titled “Signature”tracker.trackBeginCheckout(input?: BrowserBeginCheckoutInput): Promise<void>;BrowserBeginCheckoutInput
Section titled “BrowserBeginCheckoutInput”type BrowserBeginCheckoutInput = { transactionId?: string; value?: number; currency?: string; items?: TrackbridgeItem[]; coupon?: string; userData?: UserData;};| Field | Required | Notes |
|---|---|---|
transactionId | no | Auto-generated tb_<uuid> if missing. The standard “dual-send disabled” warning fires (trackBeginCheckout matched server-side would generate a different ID and double-count). |
value | no | Cart total at checkout start, in currency. |
currency | no | ISO 4217. |
items | no | TrackbridgeItem[]. |
coupon | no | Forwarded as GA4 coupon param. |
userData | no | Hashed per enhanced conversions when supplied. |
Returns
Section titled “Returns”Promise<void>.
Behavior
Section titled “Behavior”Same fan-out shape as trackPurchase, keyed on conversionLabels.beginCheckout instead of conversionLabels.purchase. The GA4 event name is begin_checkout.
Example
Section titled “Example”'use client';import { tracker } from '@/lib/tracker.client';
export function CheckoutButton({ cart }: { cart: Cart }) { return ( <button onClick={async () => { await tracker.trackBeginCheckout({ transactionId: cart.id, // pass through to checkout completion value: cart.total, currency: cart.currency, items: cart.items, }); router.push('/checkout'); }} > Checkout </button> );}If you generate a server-side cart.id early and reuse it as transactionId here and at trackPurchase time, your begin_checkout/purchase funnel in GA4 stitches correctly.