Skip to content

fix(analytics-browser): rename Video events to align with new standards - #1971

Open
daniel-graham-amplitude wants to merge 4 commits into
video-analyticsfrom
CAP-1189-event-naming
Open

fix(analytics-browser): rename Video events to align with new standards#1971
daniel-graham-amplitude wants to merge 4 commits into
video-analyticsfrom
CAP-1189-event-naming

Conversation

@daniel-graham-amplitude

@daniel-graham-amplitude daniel-graham-amplitude commented Sep 4, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Renamed video events "[Amplitude] Content Started" and added event_property "delivery_mode", moved them to constants too
  • Added "delayedEventsServerUrl" parsing logic so that the delayed events server can be reached in prod

Checklist

  • Does your PR title have the correct title format?
  • Does your PR have a breaking change?: No

Note

Medium Risk
Renamed content events can break existing dashboards and funnels; default delayed-events endpoints now apply in production unless overridden, changing where delayed heartbeat events are sent.

Overview
Media analytics renames playback events from Video Content Started / Video Content Stopped to [Amplitude] Content Started and [Amplitude] Content Stopped (via new constants), and adds delivery_mode (video | audio) on start/stop properties. Capture and core observers now accept HTMLMediaElement so trackVideo works on <audio> as well as <video>.

Browser config introduces getDelayedEventsServerUrl, which sets delayedEventsServerUrl on init: append /delayed when serverUrl is set (overriding an explicit delayed URL), otherwise use delayedEventsServerUrl if provided, or zone defaults (US/EU prod delayed-events hosts). Previously the field often stayed undefined without manual config.

Bundle budgets in .size-limit.js rise (analytics-browser 69kb, unified 235kb). The video test page loads HLS via hls.js for Mux streams and drops the local delayedEventsServerUrl override on init.

Reviewed by Cursor Bugbot for commit b155a00. Bugbot is set up for automated code reviews on this repo. Configure here.

@daniel-graham-amplitude
daniel-graham-amplitude requested a review from a team as a code owner September 4, 2026 00:43
@linear-code

linear-code Bot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

CAP-1189

@daniel-graham-amplitude
daniel-graham-amplitude changed the base branch from main to video-analytics September 4, 2026 00:43
@github-actions

github-actions Bot commented Sep 4, 2026

Copy link
Copy Markdown

size-limit report 📦

Path Size
packages/analytics-browser/lib/scripts/amplitude-min.js.gz 66.51 KB (+0.2% 🔺)
packages/session-replay-browser/lib/scripts/session-replay-browser-min.js.gz 135.33 KB (0%)
packages/unified/lib/scripts/amplitude-min.umd.js.gz 219.64 KB (+0.04% 🔺)
@amplitude/element-selector (gzipped esm) 3.4 KB (0%)

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 2 potential issues.

Autofix Details

Bugbot Autofix prepared fixes for both issues found in the latest run.

  • ✅ Fixed: Event names are inline string literals
    • Moved [Amplitude] Content Started and Content Stopped into named constants in constants.ts and used those constants in video-capture.ts.
  • ✅ Fixed: Delayed events can ignore EU zone
    • getDelayedEventsServerUrl now uses the configured options.serverZone so EU projects with a custom serverUrl still get the EU delayed-events host.

Create PR

Or push these changes by commenting:

@cursor push 91a0c16c02
Preview (91a0c16c02)
diff --git a/packages/analytics-browser/src/constants.ts b/packages/analytics-browser/src/constants.ts
--- a/packages/analytics-browser/src/constants.ts
+++ b/packages/analytics-browser/src/constants.ts
@@ -6,6 +6,8 @@
 export const DEFAULT_FORM_START_EVENT = `${DEFAULT_EVENT_PREFIX} Form Started`;
 export const DEFAULT_FORM_SUBMIT_EVENT = `${DEFAULT_EVENT_PREFIX} Form Submitted`;
 export const DEFAULT_FILE_DOWNLOAD_EVENT = `${DEFAULT_EVENT_PREFIX} File Downloaded`;
+export const DEFAULT_CONTENT_STARTED_EVENT = `${DEFAULT_EVENT_PREFIX} Content Started`;
+export const DEFAULT_CONTENT_STOPPED_EVENT = `${DEFAULT_EVENT_PREFIX} Content Stopped`;
 export const DEFAULT_SESSION_START_EVENT = 'session_start';
 export const DEFAULT_SESSION_END_EVENT = 'session_end';
 

diff --git a/packages/analytics-browser/src/video-capture/video-capture.ts b/packages/analytics-browser/src/video-capture/video-capture.ts
--- a/packages/analytics-browser/src/video-capture/video-capture.ts
+++ b/packages/analytics-browser/src/video-capture/video-capture.ts
@@ -8,6 +8,7 @@
   BaseEvent,
   getHeartbeatInstance,
 } from '@amplitude/analytics-core';
+import { DEFAULT_CONTENT_STARTED_EVENT, DEFAULT_CONTENT_STOPPED_EVENT } from '../constants';
 
 /** Playback states where a view session is still in progress (e.g. buffering). */
 const ACTIVE_PLAYBACK_STATES = new Set<VideoState['playbackState']>(['playing', 'waiting']);
@@ -81,7 +82,7 @@
         const now = new Date().getTime();
         const startEvent: BaseEvent = {
           insert_id: UUID(),
-          event_type: '[Amplitude] Content Started',
+          event_type: DEFAULT_CONTENT_STARTED_EVENT,
           time: now,
           event_properties: {
             ...nextState.lastEvent,
@@ -93,7 +94,7 @@
         this.stopEvent = {
           ...startEvent,
           insert_id: UUID(),
-          event_type: '[Amplitude] Content Stopped',
+          event_type: DEFAULT_CONTENT_STOPPED_EVENT,
           time: now + 1,
           event_properties: {
             ...nextState.lastEvent,

diff --git a/packages/analytics-core/src/config.ts b/packages/analytics-core/src/config.ts
--- a/packages/analytics-core/src/config.ts
+++ b/packages/analytics-core/src/config.ts
@@ -82,7 +82,7 @@
     const serverConfig = createServerConfig(options.serverUrl, options.serverZone, options.useBatch);
     this.serverZone = serverConfig.serverZone;
     this.serverUrl = serverConfig.serverUrl;
-    this.delayedEventsServerUrl = getDelayedEventsServerUrl(options.delayedEventsServerUrl, this.serverZone);
+    this.delayedEventsServerUrl = getDelayedEventsServerUrl(options.delayedEventsServerUrl, options.serverZone);
   }
 }
 

diff --git a/packages/analytics-core/test/config.test.ts b/packages/analytics-core/test/config.test.ts
--- a/packages/analytics-core/test/config.test.ts
+++ b/packages/analytics-core/test/config.test.ts
@@ -68,6 +68,21 @@
     );
   });
 
+  test('should default delayedEventsServerUrl for EU when custom serverUrl is set', () => {
+    const defaultConfig = useDefaultConfig();
+    const config = new Config({
+      apiKey: API_KEY,
+      serverZone: 'EU',
+      serverUrl: 'https://proxy.example.com/2/httpapi',
+      storageProvider: defaultConfig.storageProvider,
+      transportProvider: defaultConfig.transportProvider,
+    });
+    expect(config.serverZone).toBeUndefined();
+    expect(config.delayedEventsServerUrl).toBe(
+      'https://delayed-events.prod.eu-central-1.amplitude.com/2/httpapi/delayed',
+    );
+  });
+
   test('should overwrite default config', () => {
     const defaultConfig = useDefaultConfig();
     const config = new Config({

You can send follow-ups to the cloud agent here.

Comment thread packages/analytics-browser/src/video-capture/video-capture.ts Outdated
Comment thread packages/analytics-core/src/config.ts Outdated

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 2 potential issues.

Autofix Details

Bugbot Autofix prepared fixes for both issues found in the latest run.

  • ✅ Fixed: Delayed events URL path is wrong
    • getDelayedEventsServerUrl now prefers delayedEventsServerUrl and appends /delayed to a custom HTTP API serverUrl instead of duplicating /2/httpapi/delayed.
  • ✅ Fixed: Browser config drops custom serverUrl
    • BrowserConfig now forwards serverUrl to the parent Config constructor so delayed events follow a custom ingest URL or proxy.

Create PR

Or push these changes by commenting:

@cursor push 0aeaf04cb3
Preview (0aeaf04cb3)
diff --git a/packages/analytics-browser/src/config.ts b/packages/analytics-browser/src/config.ts
--- a/packages/analytics-browser/src/config.ts
+++ b/packages/analytics-browser/src/config.ts
@@ -87,7 +87,7 @@
     public partnerId?: string,
     public plan?: Plan,
     public serverUrl: string = '',
-    public delayedEventsServerUrl?: string,
+    delayedEventsServerUrl?: string,
     public serverZone: ServerZoneType = DEFAULT_SERVER_ZONE,
     sessionId?: number,
     deferredSessionId?: number,
@@ -114,7 +114,14 @@
     public enableRequestBodyCompression: boolean = false,
     public customEnrichment?: boolean | CustomEnrichmentOptions,
   ) {
-    super({ apiKey, storageProvider, transportProvider: createTransport(transport) });
+    super({
+      apiKey,
+      storageProvider,
+      transportProvider: createTransport(transport),
+      delayedEventsServerUrl,
+      serverUrl,
+      serverZone,
+    });
     this._cookieStorage = cookieStorage;
     this.deviceId = deviceId;
     this.lastEventId = lastEventId;

diff --git a/packages/analytics-browser/src/constants.ts b/packages/analytics-browser/src/constants.ts
--- a/packages/analytics-browser/src/constants.ts
+++ b/packages/analytics-browser/src/constants.ts
@@ -6,6 +6,8 @@
 export const DEFAULT_FORM_START_EVENT = `${DEFAULT_EVENT_PREFIX} Form Started`;
 export const DEFAULT_FORM_SUBMIT_EVENT = `${DEFAULT_EVENT_PREFIX} Form Submitted`;
 export const DEFAULT_FILE_DOWNLOAD_EVENT = `${DEFAULT_EVENT_PREFIX} File Downloaded`;
+export const DEFAULT_CONTENT_STARTED_EVENT = `${DEFAULT_EVENT_PREFIX} Content Started`;
+export const DEFAULT_CONTENT_STOPPED_EVENT = `${DEFAULT_EVENT_PREFIX} Content Stopped`;
 export const DEFAULT_SESSION_START_EVENT = 'session_start';
 export const DEFAULT_SESSION_END_EVENT = 'session_end';
 

diff --git a/packages/analytics-browser/src/video-capture/video-capture.ts b/packages/analytics-browser/src/video-capture/video-capture.ts
--- a/packages/analytics-browser/src/video-capture/video-capture.ts
+++ b/packages/analytics-browser/src/video-capture/video-capture.ts
@@ -8,6 +8,7 @@
   BaseEvent,
   getHeartbeatInstance,
 } from '@amplitude/analytics-core';
+import { DEFAULT_CONTENT_STARTED_EVENT, DEFAULT_CONTENT_STOPPED_EVENT } from '../constants';
 
 /** Playback states where a view session is still in progress (e.g. buffering). */
 const ACTIVE_PLAYBACK_STATES = new Set<VideoState['playbackState']>(['playing', 'waiting']);
@@ -81,7 +82,7 @@
         const now = new Date().getTime();
         const startEvent: BaseEvent = {
           insert_id: UUID(),
-          event_type: '[Amplitude] Content Started',
+          event_type: DEFAULT_CONTENT_STARTED_EVENT,
           time: now,
           event_properties: {
             ...nextState.lastEvent,
@@ -93,7 +94,7 @@
         this.stopEvent = {
           ...startEvent,
           insert_id: UUID(),
-          event_type: '[Amplitude] Content Stopped',
+          event_type: DEFAULT_CONTENT_STOPPED_EVENT,
           time: now + 1,
           event_properties: {
             ...nextState.lastEvent,

diff --git a/packages/analytics-browser/test/config.test.ts b/packages/analytics-browser/test/config.test.ts
--- a/packages/analytics-browser/test/config.test.ts
+++ b/packages/analytics-browser/test/config.test.ts
@@ -157,7 +157,7 @@
         },
         topLevelDomain: '.amplitude.com',
         enableRequestBodyCompression: false,
-        delayedEventsServerUrl: undefined,
+        delayedEventsServerUrl: 'https://delayed-events.prod.us-west-2.amplitude.com/2/httpapi/delayed',
       });
       expect(getTopLevelDomain).toHaveBeenCalledTimes(1);
     });
@@ -169,6 +169,21 @@
       expect(config.delayedEventsServerUrl).toBe(delayedEventsServerUrl);
     });
 
+    test('should derive delayedEventsServerUrl from custom serverUrl', async () => {
+      jest.spyOn(Config, 'getTopLevelDomain').mockResolvedValueOnce('.amplitude.com');
+      const serverUrl = 'https://proxy.example.com/2/httpapi';
+      const config = await Config.useBrowserConfig(apiKey, { serverUrl }, new AmplitudeBrowser());
+      expect(config.delayedEventsServerUrl).toBe(`${serverUrl}/delayed`);
+    });
+
+    test('should default delayedEventsServerUrl for EU', async () => {
+      jest.spyOn(Config, 'getTopLevelDomain').mockResolvedValueOnce('.amplitude.com');
+      const config = await Config.useBrowserConfig(apiKey, { serverZone: 'EU' }, new AmplitudeBrowser());
+      expect(config.delayedEventsServerUrl).toBe(
+        'https://delayed-events.prod.eu-central-1.amplitude.com/2/httpapi/delayed',
+      );
+    });
+
     test('should fall back to memoryStorage when storageProvider is not enabled', async () => {
       const localStorageIsEnabledSpy = jest
         .spyOn(LocalStorageModule.LocalStorage.prototype, 'isEnabled')
@@ -293,7 +308,7 @@
           },
           topLevelDomain: 'amplitude.com',
           enableRequestBodyCompression: false,
-          delayedEventsServerUrl: undefined,
+          delayedEventsServerUrl: 'https://delayed-events.prod.us-west-2.amplitude.com/2/httpapi/delayed',
         });
       });
     });

diff --git a/packages/analytics-core/src/config.ts b/packages/analytics-core/src/config.ts
--- a/packages/analytics-core/src/config.ts
+++ b/packages/analytics-core/src/config.ts
@@ -73,7 +73,6 @@
     this.offline = options.offline !== undefined ? options.offline : defaultConfig.offline;
     this.optOut = options.optOut ?? defaultConfig.optOut;
     this.serverUrl = options.serverUrl;
-    this.delayedEventsServerUrl = options.delayedEventsServerUrl;
     this.serverZone = options.serverZone || defaultConfig.serverZone;
     this.storageProvider = options.storageProvider;
     this.transportProvider = options.transportProvider;
@@ -83,6 +82,11 @@
     const serverConfig = createServerConfig(options.serverUrl, options.serverZone, options.useBatch);
     this.serverZone = serverConfig.serverZone;
     this.serverUrl = serverConfig.serverUrl;
+    this.delayedEventsServerUrl = getDelayedEventsServerUrl(
+      options.serverUrl,
+      options.delayedEventsServerUrl,
+      this.serverZone,
+    );
   }
 }
 
@@ -108,6 +112,26 @@
   };
 };
 
+export const getDelayedEventsServerUrl = (
+  serverUrl: string | undefined,
+  delayedEventsServerUrl: string | undefined,
+  serverZone: ServerZoneType = getDefaultConfig().serverZone,
+) => {
+  if (delayedEventsServerUrl) {
+    return delayedEventsServerUrl;
+  }
+  if (serverUrl) {
+    return `${serverUrl}/delayed`;
+  }
+  switch (serverZone) {
+    case 'EU':
+      return 'https://delayed-events.prod.eu-central-1.amplitude.com/2/httpapi/delayed';
+    case 'US':
+    default:
+      return 'https://delayed-events.prod.us-west-2.amplitude.com/2/httpapi/delayed';
+  }
+};
+
 export class RequestMetadata implements IRequestMetadata {
   sdk: {
     metrics: {

diff --git a/packages/analytics-core/test/config.test.ts b/packages/analytics-core/test/config.test.ts
--- a/packages/analytics-core/test/config.test.ts
+++ b/packages/analytics-core/test/config.test.ts
@@ -33,7 +33,7 @@
       plan: undefined,
       ingestionMetadata: undefined,
       serverUrl: 'https://api2.amplitude.com/2/httpapi',
-      delayedEventsServerUrl: undefined,
+      delayedEventsServerUrl: 'https://delayed-events.prod.us-west-2.amplitude.com/2/httpapi/delayed',
       serverZone: 'US',
       storageProvider: defaultConfig.storageProvider,
       transportProvider: defaultConfig.transportProvider,
@@ -55,6 +55,44 @@
     expect(config.delayedEventsServerUrl).toBe(delayedEventsServerUrl);
   });
 
+  test('should prefer delayedEventsServerUrl over custom serverUrl', () => {
+    const defaultConfig = useDefaultConfig();
+    const delayedEventsServerUrl = 'https://example.com/2/httpapi/delayed';
+    const config = new Config({
+      apiKey: API_KEY,
+      serverUrl: 'https://proxy.example.com/2/httpapi',
+      delayedEventsServerUrl,
+      storageProvider: defaultConfig.storageProvider,
+      transportProvider: defaultConfig.transportProvider,
+    });
+    expect(config.delayedEventsServerUrl).toBe(delayedEventsServerUrl);
+  });
+
+  test('should derive delayedEventsServerUrl from custom serverUrl', () => {
+    const defaultConfig = useDefaultConfig();
+    const serverUrl = 'https://proxy.example.com/2/httpapi';
+    const config = new Config({
+      apiKey: API_KEY,
+      serverUrl,
+      storageProvider: defaultConfig.storageProvider,
+      transportProvider: defaultConfig.transportProvider,
+    });
+    expect(config.delayedEventsServerUrl).toBe(`${serverUrl}/delayed`);
+  });
+
+  test('should default delayedEventsServerUrl for EU', () => {
+    const defaultConfig = useDefaultConfig();
+    const config = new Config({
+      apiKey: API_KEY,
+      serverZone: 'EU',
+      storageProvider: defaultConfig.storageProvider,
+      transportProvider: defaultConfig.transportProvider,
+    });
+    expect(config.delayedEventsServerUrl).toBe(
+      'https://delayed-events.prod.eu-central-1.amplitude.com/2/httpapi/delayed',
+    );
+  });
+
   test('should overwrite default config', () => {
     const defaultConfig = useDefaultConfig();
     const config = new Config({
@@ -90,7 +128,7 @@
         sourceVersion: '2.0.0',
       },
       serverUrl: 'https://api2.amplitude.com/batch',
-      delayedEventsServerUrl: undefined,
+      delayedEventsServerUrl: 'https://delayed-events.prod.us-west-2.amplitude.com/2/httpapi/delayed',
       serverZone: 'US',
       storageProvider: defaultConfig.storageProvider,
       transportProvider: defaultConfig.transportProvider,

diff --git a/packages/analytics-node/test/config.test.ts b/packages/analytics-node/test/config.test.ts
--- a/packages/analytics-node/test/config.test.ts
+++ b/packages/analytics-node/test/config.test.ts
@@ -26,7 +26,7 @@
         plan: undefined,
         ingestionMetadata: undefined,
         serverUrl: 'https://api2.amplitude.com/2/httpapi',
-        delayedEventsServerUrl: undefined,
+        delayedEventsServerUrl: 'https://delayed-events.prod.us-west-2.amplitude.com/2/httpapi/delayed',
         serverZone: 'US',
         storageProvider: undefined,
         transportProvider: new Http(),
@@ -61,7 +61,7 @@
         plan: undefined,
         ingestionMetadata: undefined,
         serverUrl: 'https://api2.amplitude.com/2/httpapi',
-        delayedEventsServerUrl: undefined,
+        delayedEventsServerUrl: 'https://delayed-events.prod.us-west-2.amplitude.com/2/httpapi/delayed',
         serverZone: 'US',
         storageProvider: undefined,
         transportProvider: new Http(),

diff --git a/packages/analytics-react-native/test/config.test.ts b/packages/analytics-react-native/test/config.test.ts
--- a/packages/analytics-react-native/test/config.test.ts
+++ b/packages/analytics-react-native/test/config.test.ts
@@ -43,7 +43,7 @@
         plan: undefined,
         ingestionMetadata: undefined,
         serverUrl: 'https://api2.amplitude.com/2/httpapi',
-        delayedEventsServerUrl: undefined,
+        delayedEventsServerUrl: 'https://delayed-events.prod.us-west-2.amplitude.com/2/httpapi/delayed',
         serverZone: 'US',
         sessionTimeout: 300000,
         trackingOptions: {
@@ -99,7 +99,7 @@
         plan: undefined,
         ingestionMetadata: undefined,
         serverUrl: 'https://api2.amplitude.com/2/httpapi',
-        delayedEventsServerUrl: undefined,
+        delayedEventsServerUrl: 'https://delayed-events.prod.us-west-2.amplitude.com/2/httpapi/delayed',
         serverZone: 'US',
         sessionTimeout: 300000,
         storageProvider: new core.MemoryStorage(),
@@ -181,7 +181,7 @@
           sourceVersion: '2.0.0',
         },
         serverUrl: 'https://api2.amplitude.com/2/httpapi',
-        delayedEventsServerUrl: undefined,
+        delayedEventsServerUrl: 'https://delayed-events.prod.us-west-2.amplitude.com/2/httpapi/delayed',
         serverZone: 'US',
         _sessionId: -1,
         sessionTimeout: 1,

diff --git a/test-server/video-analytics/track-html-video.html b/test-server/video-analytics/track-html-video.html
--- a/test-server/video-analytics/track-html-video.html
+++ b/test-server/video-analytics/track-html-video.html
@@ -56,7 +56,6 @@
       // initialize Amplitude
       amplitude.setUserId(userId);
       amplitude.init(import.meta.env.VITE_AMPLITUDE_API_KEY, {
-        delayedEventsServerUrl: `${location.origin}/2/httpapi/delayed`,
         fetchRemoteConfig: false,
         autocapture: false,
       }).promise.then(() => {

You can send follow-ups to the cloud agent here.

Comment thread packages/analytics-core/src/config.ts Outdated
Comment thread packages/analytics-browser/src/config.ts Outdated
@daniel-graham-amplitude
daniel-graham-amplitude force-pushed the CAP-1189-event-naming branch 4 times, most recently from 11d62e6 to 2964f6a Compare September 4, 2026 18:53

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Autofix Details

Bugbot Autofix prepared a fix for the issue found in the latest run.

  • ✅ Fixed: Derived delayed URL path is wrong
    • Changed getDelayedEventsServerUrl to append /delayed onto custom serverUrl so proxies that already include /2/httpapi no longer get a doubled path.

Create PR

Or push these changes by commenting:

@cursor push 1c80bf5f37
Preview (1c80bf5f37)
diff --git a/packages/analytics-browser/src/config.ts b/packages/analytics-browser/src/config.ts
--- a/packages/analytics-browser/src/config.ts
+++ b/packages/analytics-browser/src/config.ts
@@ -50,7 +50,7 @@
   serverZone: ServerZoneType = DEFAULT_SERVER_ZONE,
 ) => {
   if (serverUrl) {
-    return `${serverUrl}/2/httpapi/delayed`;
+    return `${serverUrl}/delayed`;
   }
   if (delayedEventsServerUrl) {
     return delayedEventsServerUrl;

diff --git a/packages/analytics-browser/test/config.test.ts b/packages/analytics-browser/test/config.test.ts
--- a/packages/analytics-browser/test/config.test.ts
+++ b/packages/analytics-browser/test/config.test.ts
@@ -179,9 +179,9 @@
 
     test('should derive delayedEventsServerUrl from custom serverUrl', async () => {
       jest.spyOn(Config, 'getTopLevelDomain').mockResolvedValueOnce('.amplitude.com');
-      const serverUrl = 'https://proxy.example.com';
+      const serverUrl = 'https://proxy.example.com/2/httpapi';
       const config = await Config.useBrowserConfig(apiKey, { serverUrl }, new AmplitudeBrowser());
-      expect(config.delayedEventsServerUrl).toBe(`${serverUrl}/2/httpapi/delayed`);
+      expect(config.delayedEventsServerUrl).toBe(`${serverUrl}/delayed`);
     });
 
     test('should prefer custom serverUrl over delayedEventsServerUrl', async () => {
@@ -192,7 +192,7 @@
         { serverUrl, delayedEventsServerUrl: 'https://example.com/2/httpapi/delayed' },
         new AmplitudeBrowser(),
       );
-      expect(config.delayedEventsServerUrl).toBe(`${serverUrl}/2/httpapi/delayed`);
+      expect(config.delayedEventsServerUrl).toBe(`${serverUrl}/delayed`);
     });
 
     test('should fall back to memoryStorage when storageProvider is not enabled', async () => {

You can send follow-ups to the cloud agent here.

Comment thread packages/analytics-browser/src/config.ts
@daniel-graham-amplitude
daniel-graham-amplitude force-pushed the CAP-1189-event-naming branch 5 times, most recently from a1ec66e to 0641843 Compare September 4, 2026 20:45
@daniel-graham-amplitude

Copy link
Copy Markdown
Collaborator Author

bugbot run

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit b155a00. Configure here.

@Mercy811 Mercy811 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The PR LGTM! Are the new [Amplitude] events registered in the backend?

@daniel-graham-amplitude

Copy link
Copy Markdown
Collaborator Author

@Mercy811 not yet no. I'll look into that next

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants