When to use custom events
Use a custom event when the action is important to your test and can be defined clearly. Good examples include clicking a size guide, reaching 75% of a long landing page, viewing a subscription page, or completing a custom product builder.When not to use custom events
Do not create a custom event for a standard metric that ABConvert already reports, such as Added to Cart, Reached Checkout, or Completed Checkout. Standard metrics have built-in definitions and are easier to compare across tests. Do not use a custom event as your only evidence for a winner. Custom event results are directional and do not include statistical significance.How custom events work
An active event listens for its saved condition on matching storefront pages. ABConvert uses the event definition for operational health signals and for eligible test Analytics. The same event can be used in more than one test.Before you start
Custom events depend on the ABConvert theme connection and web pixel. Keep both enabled while you verify the event and run your test. An event must exist before a test starts and remain Active until that test ends. You can choose the event for a test after launch, but you cannot use an event that was created after the test started.Understand the custom event library
Open Custom Events in ABConvert to see the event library. The columns describe both the event setup and its recent activity:- Event name identifies the event. The line below it shows how many running tests currently report the event.
- Type shows whether the event tracks a click, scroll depth, page view, or Custom JS event.
- First signal is the first accepted trigger ABConvert received for the event.
- Last triggered is the most recent accepted trigger. This timestamp can take about 60 seconds to update.
- Triggers 24h is a rolling count of accepted triggers from roughly the last 24 hours. It is a raw debugging count, not a unique visitor or session metric.
- Status is either Active or Archived.

The custom event library and its activity columns
Create a custom event
Start a new event
Choose an event type
Set up the event
Set the page scope
Create and verify the event

Choose one of the four custom event types
Click event
Use a Click event to track clicks on a specific storefront element, such as a button, link, image, or product option.- Enter an Event name.
- Open Element Picker and navigate to the page that contains the element.
- Click the element you want to track. ABConvert adds its CSS selector to the event setup.
- Check the number of matching elements in the picker.
- Add an optional page scope.
- Create the event.

Use Element Picker to select a storefront element and capture its CSS selector
Scroll depth event
Use a Scroll depth event to learn whether a visitor reached a meaningful point on a page. It is an engagement signal, not proof that the visitor read the content.- Enter an Event name.
- Set a scroll depth from 1% to 100%. The default is 75%.
- Add an optional page scope.
- Create the event.
Page view event
Use a Page view event when opening a particular page is the action you want to measure.- Enter an Event name.
- Add at least one page URL rule. This required page scope defines the event.
- Create the event.
Custom JS event
Use a Custom JS event when your storefront code knows that an action succeeded, but Click, Scroll depth, or Page view cannot describe it reliably. Creating the event registers its name and slug in ABConvert. It does not track anything by itself. Copy the JavaScript shown for the event and run it in your storefront code at the moment the action succeeds.product_builder_completed with the exact slug shown in ABConvert. Calls with an unknown or archived slug are ignored. A Custom JS event records at most once per page load, even if your code calls it more than once.
A Custom JS slug remains reserved after archive. Give a replacement event a distinct name and update your storefront code to use its new slug.
You can also add an optional page scope. ABConvert checks that scope when the page loads and ignores calls from pages outside it. See Track custom JS events on the JavaScript API page.
Set the page scope
Page scope controls which storefront URLs can trigger an event:- Exactly matches matches one storefront path, such as
/pages/size-guide. - Starts with includes paths that begin with the value.
- Contains includes paths that contain the value.

Leave an optional page scope blank for all storefront pages, or add URL rules
Verify an event before launch
Open your storefront and perform the action once. Then return to the custom event library and check:- First signal appears for a new event.
- Last triggered reflects the recent action. Allow about 60 seconds for this column to update.
- Triggers 24h increases when a new page load produces another accepted trigger.

Review active custom events before launching a test
Edit, duplicate, or archive an event
You can rename an event without changing its tracking slug. You cannot change its type, selector, scroll depth, or page scope after creation. Duplicate the event when you need a different setup, then verify the new event before using it in a future test. Archived events cannot be restored. You can duplicate an archived event to create a new active event, but the new event is not eligible for a test that already started. To stop tracking an event:- Open the event from the custom event library.
- Click Archive event.
- Review the warning and the listed running tests.
- Click Archive event to confirm.

The archive warning lists running tests that would lose the event
Common mistakes
- Creating the event after launch. A new event cannot be added to a test that already started.
- Archiving before the test ends. The event becomes ineligible for the whole running test, not only for future dates.
- Treating Triggers 24h as an Analytics metric. It is a raw health signal and is not deduplicated by visitor or session.
- Using a broad click selector. Check the match count, or clear Use short selector when you need one exact element.
- Registering a Custom JS event without calling its code. The dashboard creates the event definition, but your storefront must call
ABConvert.track(). - Expecting repeat actions on one page to add repeat triggers. Click, Scroll depth, and Custom JS events record at most once per page load.
Next step
See Use Custom Events in Analytics to add an event to a visitor filter, the session-based funnel, or the Custom Events results section.FAQ
Why can't I find the event I want to measure?
Why can't I find the event I want to measure?
Can I add an existing event after a test launches?
Can I add an existing event after a test launches?
Can I restore an archived event?
Can I restore an archived event?
Why does Last triggered update before Analytics?
Why does Last triggered update before Analytics?
Can I change an event's selector or page scope?
Can I change an event's selector or page scope?