links.arjun.tv/docs/end-user/chrome-extension

Chrome Extension

The 10x.in Experiment Runner is a Chrome extension that detects when you visit a domain mapped to a 10x.in handle and automatically runs active experiments on that page. It injects the tracking SDK, evaluates chain rules, and applies personalization — all without modifying the site's source code.

When to use

  • You want to run experiments on your site without adding a script tag.
  • You want visitors to receive personalized experiences (popups, banners, CTA swaps) driven by your 10x.in handle configuration.
  • You want to preview and test experiments on your own domain before deploying the tracking SDK site-wide.

Installation

  1. Download the extension

    Download the latest extension package:

    Download 10x Chrome Extension

    Extract the zip to a folder on your computer.

  2. Load in Chrome

    1. Open chrome://extensions in Chrome.
    2. Enable Developer mode (toggle in the top-right corner).
    3. Click Load unpacked.
    4. Select the extracted folder.
  3. Verify

    The 10x.in icon appears in your Chrome toolbar. Click it to open the popup.

Tip

Building from source — If you prefer, clone the repository and run:

  cd chrome-extension
  npm install
  npm run build

Then load the dist/ folder as an unpacked extension.

Authentication

The extension supports two authentication methods. You need to log in before experiments will activate.

  1. Click the extension icon in the toolbar.
  2. Select Email Login.
  3. Enter your 10x.in email and password.
  4. Click Sign in.

JWT tokens are stored in session storage and cleared when you close the browser. The extension refreshes tokens automatically.

How it works

Once logged in, the extension activates automatically as you browse:

StepWhat happens
1. Domain detectionWhen you navigate to any page, the extension checks if the domain is mapped to a 10x.in handle via GET /v2/public/domain-lookup.
2. Badge updateIf the domain is mapped, the badge turns green with the number of active experiments. Unmapped domains show no badge.
3. SDK injectionThe tracking SDK (tracking-sdk.umd.js) is injected into the page and initialized with the resolved handle.
4. Experiment executionPre-fetched chain rule decisions are evaluated. Matched actions (popups, banners, CTA swaps) execute immediately for page_load triggers.
5. Trigger listenersThe extension monitors scroll depth, exit intent, and idle time. When a trigger fires, the corresponding chain rule action executes.

Note

Domain lookups are cached for 5 minutes. Experiment configs are cached for 2 minutes. To force a refresh, reload the page.

Supported experiment types

Chain rule actions

The extension executes all 7 chain action types:

Action typeWhat it does
show_popupInjects a popup overlay with HTML from the template field
show_bannerInjects a banner (top or bottom) with HTML from the template field
swap_ctaFinds an element by CSS selector and replaces its content
redirectNavigates to the destinationUrl
add_to_cartFires a custom tenx:add_to_cart DOM event
fire_eventDispatches a custom DOM event with the specified eventName
no_actionDoes nothing (useful for control groups)

Trigger events

TriggerWhen it fires
page_loadImmediately when the page loads
scroll_25When the user scrolls past 25% of the page
scroll_50When the user scrolls past 50% of the page
scroll_75When the user scrolls past 75% of the page
exit_intentWhen the mouse leaves the viewport at the top edge
idle_30sAfter 30 seconds of no mouse, keyboard, or scroll activity

Each trigger fires at most once per page load.

Personalization rules

Personalization rules are evaluated based on URL parameters and visitor context:

  • sourceIn — matches utm_source or ref query parameter
  • campaignIn — matches utm_campaign query parameter
  • countryIn — matches visitor country (from targeting profile)
  • deviceIn — matches device type (mobile, desktop, tablet)

The highest-priority matching rule is applied. Variants can override the page title, swap CTAs, or redirect to a different URL.

Per-domain toggle

You can disable the extension on specific domains without logging out:

  1. Navigate to the domain.
  2. Click the extension icon.
  3. Toggle the switch to off.

The domain is added to a blocklist stored locally. Toggle it back on at any time.

Environment switching

By default, the extension connects to the production API (api.10x.in). For development, you can switch to the dev API (api.arjun.tv) by sending a SET_ENV message from the popup — this will be available in a future settings panel.

Troubleshooting

SymptomLikely causeFix
Badge is empty / grayDomain is not mapped to a handleMap the domain — see Marketer Setup Guide
Badge is green but nothing happensNo active chain rules or personalization rules for this handleCreate experiments — see Marketer Setup Guide
"This domain is not connected" in popupDomain lookup returned 404Verify domain is registered and in ACTIVE state via API
Extension not activating after loginPage was loaded before loginReload the page after logging in
Popup or banner looks unstyledThe template HTML in your chain rule may be missing CSSInclude inline styles in your chain rule template

Related guides