Contentful Personalization & Analytics
    Preparing search index...
    • Send a batch of analytics events using navigator.sendBeacon.

      Parameters

      • url: string | URL

        The endpoint URL to which the beacon request should be sent.

      • events: {
            events: {
                channel: "mobile" | "server" | "web";
                componentId: string;
                componentType: "Entry" | "Variable";
                context: {
                    app?: { name: string; version: string };
                    campaign: {
                        content?: string;
                        medium?: string;
                        name?: string;
                        source?: string;
                        term?: string;
                    };
                    gdpr: { isConsentGiven: boolean };
                    library: { name: string; version: string };
                    locale: string;
                    location?: {
                        city?: string;
                        continent?: string;
                        coordinates?: { latitude: number; longitude: number };
                        country?: string;
                        countryCode?: string;
                        postalCode?: string;
                        region?: string;
                        regionCode?: string;
                        timezone?: string;
                    };
                    page?: {
                        path: string;
                        query: Record<string, string>;
                        referrer: string;
                        search: string;
                        title?: string;
                        url: string;
                        [key: string]: JSONType;
                    };
                    screen?: { name: string; [key: string]: JSONType };
                    userAgent?: string;
                };
                experienceId?: string;
                messageId: string;
                originalTimestamp: string;
                sentAt: string;
                timestamp: string;
                type: "component";
                userId?: string;
                variantIndex: number;
            }[];
            profile: { id: string; [key: string]: JSONType };
        }[]

        The batch of events to serialize and send.

        • events: {
              channel: "mobile" | "server" | "web";
              componentId: string;
              componentType: "Entry" | "Variable";
              context: {
                  app?: { name: string; version: string };
                  campaign: {
                      content?: string;
                      medium?: string;
                      name?: string;
                      source?: string;
                      term?: string;
                  };
                  gdpr: { isConsentGiven: boolean };
                  library: { name: string; version: string };
                  locale: string;
                  location?: {
                      city?: string;
                      continent?: string;
                      coordinates?: { latitude: number; longitude: number };
                      country?: string;
                      countryCode?: string;
                      postalCode?: string;
                      region?: string;
                      regionCode?: string;
                      timezone?: string;
                  };
                  page?: {
                      path: string;
                      query: Record<string, string>;
                      referrer: string;
                      search: string;
                      title?: string;
                      url: string;
                      [key: string]: JSONType;
                  };
                  screen?: { name: string; [key: string]: JSONType };
                  userAgent?: string;
              };
              experienceId?: string;
              messageId: string;
              originalTimestamp: string;
              sentAt: string;
              timestamp: string;
              type: "component";
              userId?: string;
              variantIndex: number;
          }[]

          Insights events that should be recorded for this profile.

          InsightsEventArray

        • profile: { id: string; [key: string]: JSONType }

          Partial profile information used to associate events with a user.

          PartialProfile

          • id: string

            Identifier of the profile.

            Used to associate events with an existing profile.

      Returns boolean

      true if the user agent successfully queued the data for transfer, otherwise false.

      This is intended for fire-and-forget flushing of analytics events during lifecycle transitions (e.g., page unload or visibility change).

      const ok = beaconHandler('/analytics/batch', batchEvents)
      if (!ok) {
      // Optionally fall back to XHR/fetch
      }