Version History

Track all updates, enhancements, and fixes to Segmently

Release History

All released versions, newest first

Version 1.24.0

Latest
March 12, 2026
On-Site Test Panel: switch segments without touching the URL
A floating panel now appears in the bottom-right corner of any preview session, showing the active experiment name and segment. Use the dropdown to jump instantly to any other segment, click “View Original” to see the unmodified page, or open the experiment directly in the dashboard. The panel is fully CSS-isolated so it cannot conflict with your site’s styles, and its minimized or expanded state is remembered across page navigations within the same session.

Version 1.23.0

March 12, 2026
Management API: control your experiments from anywhere
Enterprise accounts can now generate management API keys (prefixed seg_mgmt_) and use them to list projects, read and update experiments, and pull results programmatically. Integrate Segmently into CI/CD pipelines, Zapier workflows, or your own backend without touching the dashboard.
Outbound webhook endpoints for real-time event delivery
Define HTTPS endpoints to receive live notifications whenever an experiment starts, pauses, reaches significance, or any of the 15 supported event types fires. Every payload is signed with HMAC-SHA256 so you can verify authenticity on your server. Enterprise plan feature, configurable from Settings.
Four new JavaScript SDK methods
The client snippet now exposes getVisitorId(), setAttributes(), getAllAssignments(), and reset(). Use these to pass user context for targeting, read all active segment assignments, and clear visitor identity on logout.

Version 1.22.1

Previous
March 10, 2026
Creating a new organization no longer redirects you into it
When creating an additional organization, the platform now keeps you in your current active organization. Previously, creating a new org immediately switched your context to the new empty org, making your existing projects, credits, and team members appear to disappear. You can switch to the new org at any time using the org switcher in the header. Your existing data was always safe and is fully intact.
Organization switch refreshes all context immediately
Switching between organizations in the header now triggers a full page reload, ensuring projects, credits, and team data all reflect the newly active organization without any stale state appearing from the previous session.

Version 1.22.0

Previous
March 11, 2026
Multi-organization support
Enterprise accounts can now create and manage multiple independent organizations from a single login. Each organization has its own projects, experiments, team members, and billing. Create a new organization from the header menu, or switch between existing ones with a single click. The active organization context is persisted server-side so it carries across devices and sessions. Creating additional organizations requires an Enterprise plan; non-Enterprise members can still be invited into Enterprise-owned organizations by their team owner.

Version 1.21.0

Previous
March 10, 2026
Country-level geotargeting for experiments
Experiments can now be restricted to visitors from specific countries. The Audience step in the experiment wizard gains a Location Targeting section with an All Countries / Specific Countries toggle, a searchable country picker covering all 195 countries (ISO 3166-1 alpha-2), and a chip strip showing selected countries at a glance. Geo detection runs on the server using the Vercel edge-injected X-Vercel-IP-Country header, so there is no external API call and no added latency. Visitors from countries outside the allowlist are excluded from the experiment without consuming their assignment slot. If a visitor arrives from a country that cannot be detected, they are included as a safe default so no real visitors are ever accidentally blocked.
Device targeting now enforced server-side
The Desktop, Mobile, and Tablet checkboxes in the Audience step have been saved to the database since launch but were never actually checked during visitor assignment. The assignment handler now reads the stored device targeting array and enforces it at assign time. Existing experiments that had all three device types selected (the default) continue to include all visitors unchanged. Experiments where a subset of devices was chosen will now correctly exclude unmatched device types for the first time.

Version 1.20.16

Previous
March 10, 2026
Split URL testing now live
Segments can now redirect visitors to an entirely different page URL, not just modify the current page. The snippet appends a secure handoff parameter to the redirect URL so the destination page is recognized as part of the same experiment: page views are tracked, conversion goals fire, and multi-page funnel steps are attributed correctly to the variant, even when the destination URL does not match the original targeting rules. Available on all paid plans.

Version 1.20.15

Previous
March 10, 2026
Segmently vs Convert.com comparison page
A full feature-by-feature comparison of Segmently against Convert.com is now live at /compare/convert. The page covers 40+ features with interactive tooltips on each row, a quick stats section, and narrative sections on Convert.com's MTU billing model, Segmently's permanent free tier, and per-experiment anti-flicker tuning. Convert.com has also been added to the Compare section in the footer and to the compare index page.
Roadmap expanded with 13 new planned features
The Future Updates section has been extended with items identified from a full competitive gap analysis against Convert.com. High Priority additions: Feature Flags & Gradual Rollouts and Geotargeting. Medium Priority: Advanced Targeting (cookie, traffic source, time of day, language, weather), Multivariate Testing (MVT), Real-Time Analytics & Live Logs, SRM Checks, Collision Prevention, Environments (staging vs production), Change History per Experiment, and Raw Data Export. Low Priority: Experiment Template Import/Export, Custom Pop-up Builder, and Data Segregation (Enterprise add-on). Notes: Multi-Arm Bandit was removed after confirming Segmently already ships this as "Auto Traffic Optimization." Split URL Testing was also immediately shipped in v1.20.16.

Version 1.20.14

Previous
March 10, 2026
Competitor comparison pages updated
All three competitor comparison pages (vs Optimizely, vs Google Optimize, vs LaunchDarkly) have been updated to reflect recent Segmently capabilities. Each table now includes rows for experiment scheduling, Slack experiment notifications, GA4/Mixpanel/webhook integrations, per-experiment activation delay, one-click analytics data export, and transparent public pricing, all features Segmently offers that the listed competitors either lack or restrict to expensive enterprise tiers.
Compare page hero layout improved on wider viewports
On tablet and desktop the "All comparisons" back link and the category badge pill were rendering as stacked text with no horizontal separation, making the hero feel cramped. They now sit side-by-side in a flex row on sm+ screens with a clear gap between them.
Analytics exports now named after the experiment
CSV and JSON exports from the experiment analytics page previously saved as a generic filename. They now use the experiment's name (e.g., homepage-hero-test.csv) so downloaded files are immediately identifiable without opening them.
Footer missing from analytics pages
The experiment analytics page and the main analytics overview page were both missing the site footer. Both pages now include the standard footer with version, copyright, and navigation links.

Version 1.20.13

March 10, 2026
Analytics dashboard fully redesigned for mobile
The analytics page previously required horizontal scrolling on phones due to an 8-column table that could not wrap. The table is now hidden on mobile and replaced with a compact card layout showing experiment name, status, project, key metrics, and a direct link to detailed analytics. The filter panel also collapses behind a tap-to-expand toggle so it no longer pushes content off-screen on small devices.
Duplicate filter removed from analytics page
A copy-paste error introduced a duplicate "Time Range" filter that had the wrong options (showing status values instead of time values). The broken duplicate has been removed and only the correct Time Range filter remains.

Version 1.20.12

March 9, 2026
Documentation page fully redesigned for mobile
The docs page previously displayed a fixed 256px sidebar that consumed most of the screen on phones, pushing content into an unusable sliver. The sidebar is now hidden on mobile and replaced with a sticky "Contents" bar and a slide-in drawer, providing the full navigation experience without sacrificing any reading space.
Blog articles now always sorted by date, newest first
Blog posts are now programmatically sorted by publish date so the most recent articles always appear at the top, regardless of the order they were added to the content file.
Free tier plan copy corrected, no more misleading experiment claims
The signup and login pages previously advertised "unlimited visitors" and "1 active experiment" for the free tier, both of which were inaccurate. The copy now correctly reflects what the free tier includes: build and preview experiments, full visual editor access, and 1 project, with a clear path to upgrade when you're ready to run live tests.

Version 1.20.11

March 8, 2026
Auto traffic optimization now actually shifts traffic as intended
A silent bug caused the automatic traffic optimizer to read stale segment weights from the experiment's original setup rather than the live weights updated by the optimizer. Variant traffic allocation was effectively frozen at creation time regardless of performance. The optimizer now always reads the current live weights, so winning variants correctly accumulate more traffic over time.
Statistical significance calculation corrected, auto-pause now triggers accurately
A SQL query error was causing conversion counts to be vastly inflated when calculating significance for the auto-pause feature. This could cause experiments to be auto-paused prematurely or significance to appear reached when it was not. The query now correctly joins visitor events to their assigned variants, producing accurate statistical results.
Dashboard and project pages are now fully mobile-responsive
The main projects dashboard and individual project pages have been redesigned with a mobile-first dual layout. On smaller screens, experiments display as compact cards with inline stats and action menus, replacing the wide desktop tables that were previously unusable on phones. All action buttons use shorter mobile-friendly labels and stack cleanly on narrow viewports.
Experiment significance emails: get notified the instant a winner emerges
Paid-tier users now receive an email the moment an experiment reaches 95% statistical confidence, including the winning variant name and confidence level. This fires exactly once per experiment so you won't receive duplicates. Toggleable in Settings → Notifications.
Weekly performance digest: your A/B testing results in your inbox
A weekly summary email lands in your inbox every week with active experiment count, total visitors over the last 7 days, and a list of experiments that reached significance that week. Available to all paid-tier organization owners and fully toggleable in Settings → Notifications.
Notification preferences now load your saved settings
The Notifications tab in Settings previously showed default toggle states on every visit. It now fetches your actual saved preferences from the server on load, so your choices are always reflected accurately.
Segment traffic sliders now fully interactive on mobile touch devices
The segment traffic allocation sliders in the experiment creation wizard previously only responded to mouse input. They now support full touch interaction; drag to adjust traffic and tap anywhere on the slider track to instantly set the value. Works across all mobile browsers and tablet devices.

Version 1.20.6

March 7, 2026
Scheduled experiments now use UTC, no more timezone mismatches
Experiment start and end times are now stored in UTC so that all team members, regardless of timezone, activate experiments at exactly the intended moment. The scheduling inputs continue to display times in your local timezone for convenience; the conversion to UTC happens automatically when you save.
New "Scheduled" status badge for pending experiments
Draft experiments with a future start date now show a distinct blue "Scheduled" badge instead of the generic "Draft" label. The experiment row also displays the exact local start time so you can confirm the schedule at a glance without opening the experiment.
Full GA4 & Mixpanel integration documentation
The Documentation page now features comprehensive guides for both integrations, including how each one works, technical data flow diagrams, event parameter reference tables, setup walkthroughs, advanced usage examples (GA4 Explore funnels, BigQuery SQL, Mixpanel cohort and retention analysis), and a side-by-side GA4 vs Mixpanel comparison table.
GA4 & Mixpanel analytics events now fire automatically
Enterprise plans with a GA4 Measurement ID or Mixpanel Project Token configured now receive an experiment_impression (GA4) and $experiment_started (Mixpanel) event the moment a visitor is bucketed into a variant, including the experiment name and human-readable variant name.
Security: integration secrets no longer exposed to the browser
The active-experiments API response now strips webhook URLs and Slack credentials before sending data to your visitors' browsers. Only the fields strictly needed for client-side analytics (GA4 Measurement ID, Mixpanel Project Token) are forwarded, and only for Enterprise accounts.
Full SEO overhaul: canonical tags, page-specific metadata & sitemap cleanup
Every public page now has a unique title, meta description, canonical tag, and Open Graph data, including pricing, docs, compare pages, blog posts, and legal pages. Transactional pages (checkout, password reset, team invitations) are now correctly marked noindex and removed from the sitemap.

Version 1.20.8

March 7, 2026
Active Session Management: see and revoke every logged-in device
Settings → Security now shows every active session: browser, device type, IP address, and last-seen time. Each session can be revoked individually with a single click, or you can sign out all other devices at once with “Sign out all other devices.” Revoked tokens are flagged in real time, and the session is terminated on the next request with no 30-day window. The current device is always clearly marked so you can't accidentally sign yourself out. This is also the foundation for IP Whitelisting and the upcoming Audit Log.

Version 1.20.5

March 6, 2026
Export analytics to CSV and JSON
Experiment analytics pages now include an Export button that generates a comprehensive CSV (experiment summary, per-variant performance including bounce rate, daily timeline, and device breakdown) or a structured JSON file. Available to Professional+ plans on experiment-level analytics, and to all users on the overview analytics dashboard.
GA4, Mixpanel & outgoing webhooks moved to Enterprise
Google Analytics 4, Mixpanel event sync, and outgoing webhooks are now exclusive to the Enterprise plan. Free, Professional, and Business plans retain Slack result notifications. This aligns deep third-party integrations with Enterprise's unlimited capacity and dedicated support model.

Version 1.20.0

March 5, 2026
Free plan restricted to draft & preview only
Free plan accounts can now create and preview experiments but cannot launch them live. Launching an experiment requires a Business or higher plan. This keeps experimentation accessible while ensuring production traffic is only served by paid accounts.
Faster snippet: branding badge removed
The "Powered by Segmently" badge previously injected on free plan sites has been removed entirely. This reduces snippet file size and eliminates a network request on every page load, improving load performance for all clients regardless of plan.
Business plan limit adjustment: 1 active experiment & 1 team seat
Business plan limits have been updated to 1 concurrent active experiment and 1 team member to better align with plan positioning. Teams needing multiple experiments or seats should contact us for Enterprise pricing.

Version 1.19.9

March 4, 2026
New Blog Post: Optimizely vs Segmently
Published a direct head-to-head comparison of Optimizely and Segmently, covering pricing, visual editor architecture, anti-flicker guarantees, statistical engines, onboarding speed, and integrations. Helps teams evaluate whether enterprise pricing is justified for their use case.
Professional plan now includes 2 projects
The Professional tier now supports 2 projects (up from 1), creating a clearer value gap between Free and Professional. Backend limits updated to match.
Business plan upgraded: 3 concurrent experiments & 3 team seats
Business tier now supports 3 active experiments (up from 2) and 3 team members (up from 2), making the 3× price difference vs Professional significantly more justified. Backend limits updated accordingly.
Experiment scheduling moved to Business+ tier
Auto-start/end dates and auto-pause at significance are now a Business and above feature. This reinforces the value gap between plans and gives Business a compelling differentiator. The Advanced tab scheduling section now shows a Business+ gate to Free and Professional users.
Homepage social proof now shows real platform stats
Replaced the generic logo row with a “Platform at a glance” metrics grid, highlighting 10,000+ experiments run, <5 min setup time, 99.9% uptime, unlimited traffic, $0 per-visitor cost, and 60× lower cost vs. Optimizely.
Testimonials now show verified review sources
Each customer testimonial on the homepage now includes a verified review attribution (G2, Capterra, Product Hunt) with a link to the source platform, increasing credibility for buyers doing due diligence.

Version 1.19.6

March 3, 2026
Plan Switch Now Works Instantly from Billing Settings
Fixed a bug where clicking "Switch Plan" in Settings → Billing would show the confirmation modal and then silently fail. Upgrading or downgrading your subscription now correctly applies the prorated charge to your saved payment method and activates the new plan immediately, no Stripe checkout redirect required.
Data Retention Windows Tightened
Professional plan retention reduced from 30 days to 7 days (1 week). Business plan retention reduced from 90 days to 30 days (1 month). This creates sharper tier differentiation and stronger upgrade incentives for teams that need access to longer historical data.
Analytics Retention Enforced Server-Side
The analytics API now hard-caps data access to your plan's retention window regardless of the time_range parameter passed. Users on Free, Professional, or Business plans cannot retrieve data beyond their tier's retention limit. Enterprise plans retain unlimited history.

Version 1.19.4

March 3, 2026
Subscription Upgrades Now Charge Only the Prorated Difference
When switching to a higher-tier plan, you are now charged only for the remaining days on the new plan, not the full monthly amount. Unused days on your current plan are credited back immediately, so you never lose money on a mid-cycle upgrade.
Upgrade Confirmation Modal with Proration Breakdown
Clicking “Switch to” a new plan now opens a clear confirmation step explaining exactly what will happen: your plan switches immediately, unused days are credited, only the prorated difference is charged now, and your full new plan rate begins at the next billing cycle.
Fixed: Upgrade No Longer Created a Second Subscription
Previously, clicking “Switch to” on an available plan routed through the standard checkout flow, which would have created a duplicate subscription alongside your existing one. This has been fixed: upgrades now update your current subscription in-place with no risk of double-billing.

Version 1.19.3

March 2, 2026
GA4 Sync & Integrations Documentation
Added a comprehensive Integrations section to the documentation covering Google Analytics 4 sync, Slack notifications (both org-level with 15 configurable event types and per-experiment override), Mixpanel, and outbound webhooks, including step-by-step setup guides, example payloads, tips, and direct links to each platform’s own documentation.
Next Billing Date Now Shows Correctly
Fixed an issue where the “Next Billing Date” field in Settings → Billing showed a placeholder dash for active monthly subscriptions. The date now correctly reflects when your next charge will occur by reading it from the latest invoice period end.
Styled Confirmation Modals Replace Browser Dialogs
All browser-native alert and confirm dialogs have been replaced with polished in-app modals and inline status messages. Cancel subscription now presents a clear styled confirmation with a summary of what will happen. Save actions in project configuration display success or error banners inline, without interrupting your workflow.

Version 1.19.2

March 1, 2026
Segment Persistence
Control how long a visitor’s variant assignment is remembered client-side. Permanent stores the assignment in localStorage with a 30-day TTL so returning visitors always land in the same segment across sessions. Session (default) uses sessionStorage; visitors are re-bucketed when they open a new tab or close their browser. None assigns fresh on every page load, useful for experiments where each visit should be treated independently. Configure per-experiment in the Advanced tab.
Experiment Priority
When multiple experiments target the same URL, activation order is now fully deterministic. Set an experiment’s priority to Critical, High, Normal, or Low from the Advanced tab. Higher-priority experiments always activate before lower-priority ones, giving you precise control over which changes are applied first when experiments target overlapping elements.
Cross-Domain Tracking
Visitors now carry their variant assignment seamlessly across domains. When cross-domain tracking is enabled for an experiment, outbound links to your configured domains are automatically tagged with a _sgmt_vid URL parameter. When the visitor lands on the linked domain, the snippet reads the parameter, adopts the same visitor ID, and strips it from the URL bar, ensuring consistent bucketing and accurate conversion attribution across your entire funnel, even when it spans multiple domains. Dynamic links added to the page after load are handled automatically via MutationObserver.
Payment History
A collapsible Payment History accordion now appears at the bottom of Settings → Billing for organization owners. It shows up to 24 past invoices with date, description, amount, and status. Each row has a direct link to view or download the PDF invoice from Stripe.
Saved Payment Cards Now Visible After Checkout
Fixed an issue where the saved cards section appeared empty immediately after subscribing via Stripe Checkout. The billing settings now correctly surface the payment method even when it resides on the subscription rather than being attached directly to the customer account.

Version 1.18.0

March 1, 2026
Auto Traffic Optimization
A new iPhone-style toggle on the Segments and Review tabs lets you turn on Auto Traffic Optimization for any experiment. When enabled, Segmently continuously monitors per-segment conversion rates and gradually shifts traffic toward the winning variant, up to 80% at peak significance, so your best-performing experience earns more of your audience automatically.

Version 1.17.7

March 1, 2026
Sitemap Cleanup
Removed non-existent blog and press pages from sitemap to eliminate 404s and improve crawl efficiency.
Expanded Slack Notification Events
Added 10 new org-level Slack notification events: experiment created/deleted, project created/deleted, member invited/joined/removed, ownership transferred, subscription upgraded/downgraded, and payment failed.
Slack Notification Preferences (Professional+)
Organization owners can now individually toggle each Slack notification event on or off. Preferences are saved per org & per webhook and persist across sessions.
Org-Level Integration Defaults with Experiment-Level Override
Integrations (Slack, GA4, Mixpanel, webhooks) can now be configured org-wide as defaults. Individual experiments inherit these unless overridden. The wizard shows “Using org default” when the experiment’s own value is blank.
Fixed Dashboard Crash for New Invite-Accepted Users
Users who joined via invitation were hitting a dashboard crash because no team context existed for their session. Org context resolution now handles this gracefully.
Plan Limit Consistency Across All Resources
All tier limit checks now read from a single source of truth in pricing.ts. Previously, some limits were hardcoded in handlers and diverged from the pricing page.
Seat Stacking Fix
Credit-purchased extra seats now correctly stack on top of plan-included seats when checking team member limits. Previously, only plan seats were counted.
Pricing Discount Structure
Annual billing discount is now consistently 20% across all paid tiers. Monthly and annual prices updated across the pricing page, settings, and checkout flows.
Shared Pricing Components
Extracted reusable PricingTile and PricingTileGrid components used by both the homepage and the /pricing page. Eliminates duplicate markup and ensures both pages stay in sync automatically.
Fix: Hide “Save X%” Badge When Discount Is Zero
The annual billing toggle previously showed “Save 0%” on plan's that had no annual discount configured. The badge is now hidden when the discount value is zero.
Playwright E2E Test Suite
Added automated end-to-end tests covering authentication, experiment creation, pricing tier enforcement, and billing flows. Tests use CSS selector & XPath targeting for resilience against UI changes.
Org-Level Billing Architecture
Subscription plans, credits, and add-ons are now organization-scoped rather than user-scoped. The team owner's billing state governs all members in the org.
Owner-Only Billing Controls
Plan upgrades, cancellations, and payment method changes are now restricted to the org owner. Members can still purchase credit packs and spend credits on extras.

Version 1.16.3

January 6, 2026
Fix: Bounce Rate Now Tracked in Analytics
The snippet now correctly identifies bounce sessions (single page_view with no time_on_page event) and includes them in the analytics dashboard. Events are sent with keepalive: true to survive tab closes.
Fix: Click Goal Conversions No Longer Lost on Navigation
Clicking a link like <a><button>Explore</button></a> caused the conversion event to be dropped as the page navigated away. Events are now sent with keepalive: true via fetch() to ensure delivery before page unload.
Removed All Remaining False Claims Sitewide
Audit removed references to unbuilt features across marketing, pricing, and FAQ pages, including SSO & audit logs listed as current features.
Fixed Stale Tier Limits in Docs & Changelog
Documentation and changelog entries were referencing outdated visitor caps and feature lists (including “cohort analysis” and other phantom features). All references updated to match the current platform.
Scheduling & Integrations Fully Documented
The in-app docs now include complete coverage of experiment scheduling, auto-pause at significance, and all integration types (Slack, GA4, Mixpanel, webhooks).

Version 1.16.0

November 25, 2025
Fix: Click & Form Submit Goals Now Track Automatically
Conversion goals of type Click Element and Form Submit previously required manual calls to window.Segmently.trackConversion(). The snippet now attaches event listeners automatically when the experiment loads.
Fix: Pageview Conversion Goals Now Track Automatically
Goals of type Page Visit were not firing a conversion event when the target URL was loaded. The snippet now checks URL match on each page view and fires the goal automatically.
Fix: Multi-Page Funnel Goals Now Track Conversions
Funnel goals were not recording conversions when the visitor’s journey was tracked across pages. Step completion is now stored in sessionStorage and the final conversion fires when the last step is reached.
Active Experiments API Now Includes Conversion Goals
The GET /experiments/active response now includes a conversion_goals array per experiment, giving the snippet everything it needs to wire up goal tracking without additional API calls.
Experiment Scheduling: Now Fully Wired
Experiments with a start date or end date are now automatically activated and paused by the server-side scheduler. No manual intervention required.
Auto-Pause at Statistical Significance
Experiments with "Auto-pause at significance" enabled are now automatically paused by the scheduler when a variant reaches 95% confidence, preventing further traffic exposure after a winner is found.
Integrations Persist to Database
Integration settings (Slack webhook, GA4 measurement ID, Mixpanel token, outgoing webhook URL) are now saved to the database and loaded back when editing an experiment.
GA4 & Mixpanel Client-Side Forwarding via Snippet
When a conversion fires, the snippet now automatically forwards the event to gtag (GA4) and mixpanel.track if those integrations are configured for the experiment.
Analytics Tier Gating & CSV Export
Free plans see basic conversion counts. Professional+ adds engagement metrics and statistical significance. Business+ unlocks CSV export of raw analytics data.
Removed False Advertising from Pricing & FAQ
Several pricing page claims and FAQ answers referenced features not yet built. All copy has been audited and updated to reflect only what the platform currently delivers.

Version 1.16.1

October 28, 2025
Fix: Click Element Goal Now Tracked on Live Experiments
The targeting field used to store experiment settings was missing the conversion_goals array after the schema migration. The column’s default value has been corrected, and all goal handlers now read from targeting.conversionGoals.
Fix: All Wizard "Next" Clicks Now Save to Database
Advancing through the experiment wizard with "Next" or "Save Draft" now persists all fields to the database. Previously, only the final "Launch" step triggered a full save.
Multi-Page Funnel Goals: Documentation & Root URL Support
Added full in-app documentation for funnel goals. The matchesFunnelStepUrl helper now correctly matches root URL paths in addition to subpaths and query strings.
Members Can Create Projects
Team members (not just owners) can now create new projects, subject to the org's plan limits. The project creation endpoint validates team membership rather than ownership.
Team & Permissions Tab in Settings
A dedicated Team & Permissions tab in Settings now shows all members, pending invitations, roles, and account status in one view. Owners can manage everything from this single screen.
Organization Name Field (Owner-Only)
The Organization page now includes an editable org name field visible only to the owner, replacing the previous read-only display. Non-owners see “Managed by the team owner” instead.
Access & Permissions Card on Organization Page
A new Access & Permissions card on the Organization page summarizes each role's capabilities in a clean table, reducing support questions about what members can and cannot do.
Revised Plan Limits
Professional now allows 1 project and 5 active experiments. Business now allows 3 projects and 20 active experiments. Limits are enforced consistently across the API and dashboard.
Credit-Purchased Extras Guaranteed to Stack
Credit add-ons for extra_experiments, extra_projects, and extra_seats now reliably stack on top of plan-included counts. Previously, edge cases caused the extras to be ignored.
Fixed Overage Calculation Ignoring Purchased Extras
The overage check that determines whether a project or experiment slot is available was not including credit-purchased extras in its count. Users were being incorrectly blocked from creating resources they had paid for.

Version 1.15.2

Bug Fix
September 17, 2025
Fixed "Failed to update password" on Password Reset
The ResetPassword handler was attempting to update the password column instead of password_hash, causing all password resets to fail silently with a database error.
Login Page Dark Theme Polish
Input borders and dividers on the login page now use consistent dark-theme colors. The previous mix of light and dark border classes (including stray border-gray-200 on dark backgrounds) has been corrected.
Forgot Password & Reset Password Flow
Added a full forgot password flow at /forgot-password and wired it to the new POST /auth/reset-password endpoint. The reset link in the email points to the site's correct domain.
Fixed Login Error for Invite-Created Accounts
Accounts created via invitation had a NULL organization field, which caused a scan error at login. The query now uses COALESCE(organization, '') and Go's nullable string handling correctly.
Credit-Based Extra Seats
Teams can now purchase additional seats using credits via POST /credits/spend-seats. The member count display updates to reflect purchased extras: "2 / 3 seats used (1 extra from credits)".
Fixed Member Action Dropdown Hidden Behind Container
The member management dropdown was clipped by the parent's overflow-hidden container. The dropdown now renders with z-50 and absolute positioning outside the scroll boundary.
Merged Invitations Tab into Members View
Pending invitations are now shown inline within the Members tab instead of a separate Invitations tab. This simplifies the team management UI and reduces navigation steps.

Version 1.15.0

Bug Fix
August 22, 2025
Fixed Analytics Engagement Stats Always Showing 0
The analytics query filtered events strictly by experiment_id, excluding events that lack an experiment association. Adding OR e.experiment_id IS NULL and casting time values to 1000.0 milliseconds fixed the AVG() returning zero for all variants.
Fixed Variant Distribution Tile Showing Wrong Traffic Percentages
Variant weights were stored as []byte but read back as json.RawMessage, causing deserialization to fail silently. The tile now correctly maps each weight to its variant by matching "control" via v.name === variant.variant_name against the trafficWeight array.

Version 1.14.4

Bug Fix
July 30, 2025
Fixed Project Detail Page Returning 500 Error
The project detail query was missing columns added in recent migrations. The SELECT now includes target_url VARCHAR(500), settings JSONB, and updated_at TIMESTAMP to match the current schema.
Fixed "Project Not Found" on Project Detail Page
The project detail endpoint was looking up projects by user ID instead of team ID, causing valid projects to return 404 for any user who wasn't the original creator.
Removed All Visitor Cap Enforcement from API
Visitor quota checks have been removed from all API handlers. Segmently no longer enforces visitor limits — all plans include unlimited visitors.
Subscription-Info Endpoint Always Returns tracking_enabled: true
Previously, expired or downgraded subscriptions caused the snippet to stop tracking. The endpoint now always returns tracking as enabled regardless of subscription state.
Docs & README Updated to Unlimited-Visitor Model
All references to visitor caps and overages have been replaced with “Unlimited visitors” across the in-app docs, public README, and API reference.
Dashboard: Data Retention Tile Replaces Visitor Quota Widget
The dashboard overview now shows a data retention tile reflecting each plan's retention window instead of a visitor quota bar that is no longer relevant.
Revised Data Retention Limits: No Tier Has Unlimited Retention
Data retention periods are now: Free 3 days, Professional 30 days, Business 90 days, Enterprise 1 year. No plan offers indefinite storage — this is reflected across pricing, docs, and the dashboard.
Visitors Are Now Unlimited on All Plans
Segmently no longer caps visitors at any tier. All plans — including Free — can handle unlimited visitor traffic without overages or throttling.
Experiment Scheduling & Auto-Pause (Professional+)
Experiments can now be scheduled to start and end automatically. An auto-pause option stops the experiment when statistical significance is reached, preventing further exposure after a winner is identified.
Multi-Page Funnel Goals (Professional+)
Define multi-step conversion funnels as experiment goals. A conversion is recorded only when a visitor completes every step in the defined sequence across multiple pages.
Integrations Tab in Experiment Wizard
A new Integrations tab in the experiment creation wizard lets you connect Slack, GA4, Mixpanel, and webhooks per experiment. The tab doesn’t require any integration to be set to proceed.
Tiered Analytics Depth
Analytics now scale by plan: Free gets basic visitor & conversion counts, Professional adds engagement and significance testing, Business adds CSV export and advanced segmentation.
Data Retention Tiers as Core Differentiator
Data retention (3 days to 1 year) is now a primary plan differentiator alongside experiment count and seat limits, surfaced on the pricing page and in-app upgrade prompts.
Credit Top-Up System Rebranded as Capacity Add-Ons
The top-up system has been rebranded from visitor credits to capacity add-ons. Credits can now be used to purchase additional experiment slots, project slots, and team seats beyond plan limits.
Fixed Experiment Preview Flicker
The visual editor preview was revealing the original page briefly before applying segment changes. The preview mode now passes the experiment's instant=true flag to suppress anti-flicker delays during editing.
Visual Editor Now Loads the Experiment's Page URL
The visual editor iframe now defaults to the experiment's targeting URL. Previously it opened to the project root. Added a “Test URL” field so editors can test changes against a specific page. The field uses the first urlPattern from targeting rules or falls back to the project's domain, ignoring internal paths like /checkout.
Clearer Sequential Step Locking
Steps that depend on a prior step now show a specific inline message: “Enter a page URL in Step 2 first” rather than a generic disabled state.
“Test URLs” Promoted to Section Heading
The “Test URLs” section in the visual editor is now rendered as an h3 heading, improving visual hierarchy and making it easier to scan the editor layout.
Visual Editor Always Opens to Project's Target URL
When no specific test URL is set, the visual editor now reliably opens to the project's target URL. Previously it could open to a blank page or “/login” depending on how the modal was triggered.
Sequential Step Locking in Experiment Wizard
The visual editor and goal configuration steps are now locked until a page URL is defined in the targeting step. This prevents users from building changes against a blank or incorrect URL.

Version 1.13.13

June 15, 2025
Visitor Quota Widget on Dashboard & Project Pages
Added a visitor quota stat card to both the main dashboard and individual project pages showing the monthly visitor limit for your plan. Includes an orange “Add Visitors” button that opens a modal where you can spend credits in increments of +10, +100, or +1,000 to immediately extend your visitor quota for the period.
Tier-Specific Upgrade Tip on Top-Up Page
The Top-Up page now shows a smart, dismissible tip ribbon tailored to your current plan. Free users see that Professional ($499/mo) costs less than a single credit pack while giving more visitors every month. Professional users learn that Business covers 3× more visitors for only $450 more per month. Business users are reminded that Enterprise removes visitor overages entirely at 125K/month.
New Spend-Visitors API Endpoint
Added POST /api/v1/credits/spend-visitors endpoint. Deducts a chosen number of credits from the account balance to increase visitor quota, logs the transaction to credit_transactions, and returns the updated balance. Each credit adds 10 visitors.
PAYG Credits System
Introduced a pay-as-you-go credit system. Purchase credit packs (Starter, Growth, Pro, Scale) to unlock visitor overages, extra experiments, additional projects, and more seats beyond your plan limit. Credit balance is stored per account and shown in the dashboard header.
Top-Up Page & Purchase Modal
New /dashboard/top-up page with a tabbed interface for browsing credit packs and managing auto top-up. A 3-step purchase modal (confirm → processing → success/error) guides users through checkout safely, with Stripe-hosted payment and return-URL verification.
Automatic Monthly Overage Billing
At each billing cycle renewal, the platform automatically detects whether the account is over plan limits for visitors, experiments, projects, or team seats. The minimum credit pack needed to cover those overages is charged to the payment method on file and credits are applied to the balance immediately.
Auto Top-Up Toggle
Accounts can enable auto top-up from the Top-Up page. When enabled, the system automatically charges the minimum credit pack that covers any shortfall, triggered immediately when a credit-gated action is attempted, and again at the end of each billing cycle to reconcile accumulated visitor overages. Ensures uninterrupted service without manual intervention.
Credit Transaction Audit Log
All credit changes (purchases, auto top-ups, overage deductions, manual adjustments) are recorded in a credit_transactions table with timestamped entries, reasons, and Stripe references. A new /credits/history API endpoint exposes this log along with current usage stats.
Plan Tile Visual Consistency
Subscription plan tiles on the Settings billing tab now use a consistent purple-to-blue gradient for all CTA buttons, matching the upgrade ribbon. The highlighted (recommended) tile uses the gradient as its full background; its button inverts to white for contrast.
Business Plan Visitor Capacity Updated
Increased Business monthly visitor capacity from 10,000 to 15,000 across plan configuration and user-facing documentation.
Non-Enterprise Visitor Cap Enforcement
Added API and snippet enforcement so Free, Professional, and Business plans stop assignment and event tracking once monthly visitor limits are reached, until monthly reset or Enterprise upgrade.
Annual Refund Policy Clarification
Updated customer-facing FAQ and billing docs to clarify that annual subscriptions are not prorated for refunds; cancellations keep access through the paid term and stop renewal.
Automatic Retention Cleanup for Non-Active Experiments
Added backend enforcement so Free, Professional, and Business tiers automatically purge expired data tied to non-active experiments after each tier's retention window.

Version 1.13.9

May 27, 2025
Docs Code Blocks: Full Prism Syntax Highlighting
Migrated all remaining plain code blocks across the documentation pages to use the Prism-highlighted CodeBlock component, providing consistent syntax coloring and copy buttons throughout.
URL Targeting Consistency Fix for Experiment Assignment
Unified URL targeting evaluation across active experiment filtering and assignment so qualifying URLs reliably receive the intended variant changes.
Docs TOC Right-Side Full-Span Layout
Adjusted the docs sidebar parent spacing to remove right-side padding while keeping left padding intact, allowing TOC rows to extend to the right edge.
Docs TOC Full-Span Item Styling
Removed horizontal padding from docs table of contents rows so accordion headers and child items span the full available sidebar width while preserving active and hover states.
Docs Table of Contents Accordion Navigation
Updated the docs sidebar table of contents so parent sections are collapsible accordions by default, with explicit + and - indicators for expand/collapse state. Leaf entries keep the same header visual style without toggle icons.
True Prism Token Color-Coded Code Samples with Copy Buttons
Reworked technical docs code examples to use explicit Prism token rendering (matching the visual editor style strategy) and added copy buttons for snippet/API sample blocks.
Comprehensive Snippet Testing & Programmatic API Documentation
Expanded technical docs with a full snippet verification playbook, project/experiment QA checklist, and updated JavaScript + REST API integration guidance. Added explicit documentation sync rules to ensure future Segmently JavaScript API changes are always reflected in docs.
Prism-Powered Code Highlighting in Visual Editor
Upgraded Visual Editor code highlighting to use Prism tokenization for Global Custom CSS, Global Custom JavaScript, and selected-element Custom CSS fields. This delivers more accurate and thorough syntax coloring than manual regex-based highlighting while preserving existing editing behavior.
Local Preview Freshness and CSS State Consistency
Disabled localhost preview JSON caching to prevent stale visual changes during rapid edit/test cycles, and improved custom CSS cleanup by clearing previously managed inline style properties before applying new state. This keeps visual editor preview and preview-link behavior aligned and consistent.
Selected Element CSS Cleanup Consistency
Fixed preview-mode custom CSS cleanup by tracking per-selector style properties and removing previously applied inline properties when CSS is cleared or element styles are updated. This prevents stale styling from deleted or previously selected elements from persisting in the visual editor preview.

Version 1.13.0

April 21, 2025
Preview-Link Selected Elements Reliability
Updated snippet preview-mode selected-element application to use depth ordering and retry-capable HTML/CSS/visibility paths instead of one-pass immediate selector application. This improves consistency when previewing against dynamic pages where elements appear after initial load.
Intermittent Selected-Element Apply Race Fix
Fixed a race where snippet reinitialization could clear an in-flight pending selected-element apply cycle, causing occasional runs where no selected-element changes were applied. Pending apply state is now preserved across snippet-ready events and reset only when modal closes.
Prevent Empty-HTML Container Wipe
Fixed selected-element application to skip empty innerHTML values during preview initialization. This prevents unedited selected containers from being applied as empty content, which could remove header/nav children unexpectedly.
Explicit Visible-State Reapply Safeguard
Updated selected-element reapply flow to normalize missing visibility values to visible and always send visibility state during application. This prevents stale inline hide styles from persisting when elements should remain shown by default.
Conflicting Selector Safety for HTML Apply
Hardened visual editor HTML application logic to retry exact selectors first and only use fallback selectors when fallback resolution is unique. This prevents ambiguous fallback matches from applying changes to the wrong container and reduces disappearing-children behavior in nested/carousel contexts.
Tile Label Container-Concatenation Fix
Adjusted selected element label extraction to avoid concatenating multiple nested texts from container nodes. Labels now prefer direct text and then first descendant direct text, improving carousel and nested-content identification.
Selected Element Label Fallback Chain
Improved selected element tile labels with a fallback chain: first direct text node, then first immediate child element text, then normalized fallback text. This increases contextual labels for elements that do not expose direct text (such as nested structures and hidden carousel slides).
Selected Element Tile Text Precision
Updated selected element tile preview text to display only the first direct text node of the selected element, excluding nested child element text for cleaner and more accurate identification.
Visual Editor Apply Status Indicator (Debug)
Added a lightweight in-modal debug chip that shows selected-element apply lifecycle (idle, waiting, applying, applied, fallback) to speed up local troubleshooting of reapply timing and race-like behavior.
Deterministic Visual Editor Re-Apply on Modal Open
Fixed inconsistent selected-element reapplication by switching from fixed-delay timing to readiness-based application. Saved element changes now reliably reapply when reopening the visual editor modal.
Nested Element Race Condition Reduction
Improved parent/child selected element handling by enforcing deterministic depth-based ordering (parents first, children last) with stable staggered application. This reduces style override conflicts and disappearing behavior on nested selections.
Late-Loading Element Resilience
Added retry resilience for element HTML and visibility application paths in preview mode so late-loading SPA elements are more likely to receive saved modifications consistently.

Version 1.12.0

March 14, 2025
Team Invitation System
Implemented complete team invitation flow with email verification. Team owners can now invite members via email with secure 7-day expiration tokens. Invitations can be accepted by existing users or trigger new account creation. Includes pending invitations management and cancellation. All invitation emails sent from noreply@segmently.us.
Team Invitations Database
Added team_invitations table with secure token generation (32-byte random), status tracking (pending/accepted/expired), role assignment, and automatic expiration handling. Unique constraint prevents duplicate invitations to same email per team.
Team Invitation API Endpoints
Added 4 new API endpoints: POST /team/invitations (send invite), GET /team/invitations (list pending), DELETE /team/invitations/:id (cancel), POST /team/accept-invite (accept with token). All endpoints enforce ownership permissions and subscription tier limits.
Team Invitation Acceptance Page
Created /accept-invite page that handles both new user signups and existing user logins. Validates token, checks expiration, displays team details, and seamlessly adds users to teams. Includes proper error handling for expired/invalid tokens.
Organization Terminology Update
Renamed “Company” field to “Organization” throughout dashboard, API, and database schema. Updated signup form, settings page, profile display, and all API endpoints. Database migration script created to safely rename existing column. Reflects clearer terminology: Users → Teams → Projects → Experiments.
Dual Email System
Implemented separate email functions: sendEmail() for respondable messages (uses SMTP_FROM), sendNoReplyEmail() for automated notifications (always uses noreply@segmently.us). Team invitations now use dedicated no-reply address to prevent inbox clutter.
Enhanced Team Management UI
Updated Settings → Team & Permissions tab with invite modal, pending invitations list with cancel buttons, and improved member display. Shows invitation status, expiration dates, and respects subscription tier member limits with upgrade prompts.
Visual Editor State Persistence Fix
Fixed issue where visual editor changes weren't displaying when reopening segment modals. Improved hash comparison logic to always load saved data when modal first opens, ensuring customizations persist across sessions.
Comprehensive Feature Documentation
Added 1000+ lines of documentation to copilot instructions covering all current features: complete API inventory (76 endpoints), database schema (12 tables), frontend pages (26 routes), authentication flows, subscription system, email notifications, security features, analytics, deployment architecture, and critical preservation rules.
Future Multi-Organization Support Documented
Added roadmap documentation for future multi-org feature: accounts will be globalized to belong to multiple organizations, new Organizations page for managing multiple companies, per-organization team/project scoping, enabling agencies and consultants to manage multiple clients from one account.
3-State Invitation Acceptance Flow
Implemented intelligent invitation routing with email verification. System checks if invited email already has account and routes accordingly: (1) Existing users see login page with pre-filled email and redirect back to auto-accept, (2) New users see invitation-focused signup with team details visible, (3) Already logged-in users immediately accept and redirect to dashboard. Zero friction joining experience.
Team Member Removal Business Rules
Implemented critical safeguards preventing organization lockout: Cannot remove yourself (must transfer ownership first), organization must maintain at least one member, must have at least one admin/owner, only owners can remove members. UI shows disabled state with clear reasoning (e.g., “Last admin”, “You”) to prevent confusion.
Login Page Email Pre-fill
Enhanced login page to accept email parameter from URL and redirect parameter for post-login navigation. Enables seamless invitation flow: invitation link → login with pre-filled email → auto-accept → dashboard. Supports both ?returnUrl and ?redirect parameters for backward compatibility.
API URL Centralization
Created shared getApiUrl() utility to prevent exposing internal infrastructure URLs (fly.io) to clients. Function automatically detects environment and returns localhost:8080 for development or segmently.us for production. Integrated across all 9 frontend pages requiring API calls. Maintains brand consistency and hides backend architecture.
Modal Overlay Margin Fix
Fixed all 11 modal overlays across dashboard using !mt-0 to override parent .space-y-6 CSS selector. Affected modals: invitation, upgrade prompts, transfer ownership, remove member, delete confirmation, create project, regenerate key, and create metric modals. Ensures consistent overlay positioning.
Reusable Components & Performance Standards
Established comprehensive development guidelines prioritizing: component reusability (reduce duplication), performance optimization (React.memo, lazy loading, efficient algorithms), lightweight code (avoid bloat), maximum file size of 600 lines, and best practices for bundle optimization. Added to copilot instructions as permanent coding standards.
Comprehensive Team Documentation
Updated /docs page with complete team invitation and member management documentation. Covers 3-state acceptance flow, email verification, invitation security (tokens, expiration), removal business rules, team limits by tier, use cases for collaboration, and future multi-organization support. Helps users understand entire team collaboration system.

Version 1.11.0

February 6, 2025
Enhanced Documentation Visual Hierarchy
Added full-width alternating background colors (white/gray) to clearly distinguish between documentation chapters. Each major section now has visual separation for easier navigation and improved readability.
Complete Table of Contents
Added 9 missing section links to Technical Reference TOC: How It Works, Current Features, Security & Privacy, Team Features, API Reference, Best Practices, Troubleshooting, and Getting Help. All documentation sections are now accessible from sidebar navigation.
Removed Duplicate “Coming Soon” Section
Removed redundant “Coming Soon” section from documentation page to avoid maintaining future features in multiple places. All upcoming features are now tracked exclusively on this Updates page.
DocCard Transparency
Removed background color from documentation cards to allow alternating section backgrounds to show through, creating a cohesive visual experience throughout the documentation.
Comprehensive Documentation System
Added 1600+ lines of complete documentation covering Dashboard features, Experiments (all tabs), Visual Editor, Analytics (all metrics explained), Settings, Team Management, Billing, and Technical APIs. Includes detailed guides, examples, and best practices.
Interactive Table of Contents with Scroll Spy
Added sidebar navigation with automatic section highlighting as you scroll. Active sections are highlighted with blue background and bold text for easy orientation within documentation.
Improved Documentation Layout
Changed documentation from 2-column grid to single-column full-width layout for better readability on tablets and desktop. Each section now gets its own dedicated space without mixing across columns.
Fixed Subscription Display on Settings Page
Billing page now correctly shows all paid plans (Professional, Business, Enterprise) with current plan highlighted in green. Fixed issue where only upgrade options were shown instead of complete tier comparison.
Proper JSX Syntax in Documentation
Fixed all JSX compilation errors by properly escaping special characters (+, >, {}) in documentation text content. Resolved build failures and 500 errors on /docs page.

Version 1.8.9

January 9, 2025
Complete Email Notification System
Implemented full SMTP email sending with Go's net/smtp standard library. Emails now send in real-time to user accounts for password changes, profile updates, security alerts, and weekly reports (paid tiers).
Fixed Email Authentication & Port Issues
Resolved SMTP authentication failures by fixing environment variable naming (SMTP_PASS vs SMTP_PASSWORD) and switched from port 465 to 587 for better compatibility with IONOS email servers.
Test Email Button with Loading State
Added “Test Email (Dev)” button in Settings → Notifications with loading spinner and disabled state during the 20+ second SMTP processing time. Re-enables after success/failure for retesting.
Proper Error Handling for Email Failures
API now returns 500 error immediately when email sending fails instead of always showing success. Users see accurate error messages instead of false positives.
Consolidated Environment Configuration
Removed duplicate .env files (apps/dashboard/.env.local, apps/api/.env) and consolidated all configuration into single root .env file following project architecture guidelines.

Improved Button Visual Hierarchy

Updated experiment wizard buttons: “Launch Experiment” now uses eye-catching orange gradient (matching acquisition pages) while “Save Draft” uses calmer blue styling. This creates better visual hierarchy and draws attention to the primary action.

Instant Pricing Link Display

Fixed delayed “Pricing” link appearance in navigation. Now displays instantly by caching subscription tier in localStorage instead of waiting for API response. Link still validates in background to stay current.

Footer Navigation Reorganization

Added “Home” link as first item in Navigation section. Moved “Documentation” from Navigation to Support column for better logical grouping.

v1.8.7

December 28, 2024

Activation Delay Feature

Implemented user-configurable activation delay (0ms/100ms/500ms/1s/custom) allowing page scripts/dependencies to load before revealing experiments. Anti-flicker now respects timing preferences while maintaining zero-flicker guarantee for bucketed users.

API Enhancement - Activation Delay Support

Added activation_delay field to experiments API responses. Snippet automatically respects experiment-level delay configuration, defaulting to immediate (0ms) if not specified.

Review Tab UX Improvements

Fixed message to reference “Launch Experiment” (not “Create”), added Launch button below info box for convenience. Removed navigation clutter by hiding Previous button on first step and Next button on final step.

Auto-Commit Policy for Snippet

Established automatic commit/push workflow for snippet changes to enable immediate testing. Version tracking and standardized commit messages ensure deployment traceability.

v1.8.2

December 3, 2024

Hide server infrastructure from users

Configured Vercel reverse proxy so all API requests now use segmently.us/api/* instead of exposing the Fly.io server URL. Users and clients will never see the underlying infrastructure hostname in browser console, Network tab, or error messages.

Fixed subscription-info API 401 error

Fixed database query that was causing free tier branding badge to fail for projects with direct user ownership (non-team projects). Query now checks both user_id and team_id ownership patterns using COALESCE.

v1.8.0

November 11, 2024

Navigation Consolidation

Unified navigation system across all dashboard pages by implementing a single global Header component. Removed custom headers from ExperimentWizard and project detail pages, eliminating duplicate navigation and improving consistency.

Analytics Navigation Link

Added Analytics link to global header navigation for quick access to cross-project analytics dashboard from any page.

Visual Button Improvements

Enhanced visibility of ellipsis menu buttons (project settings and experiment actions) by adding persistent gray backgrounds with hover darkening effect, making interactive elements more discoverable.

Fixed Breadcrumbs Positioning

Corrected breadcrumb navigation placement to appear below the global header instead of overlapping, ensuring consistent layout across all pages.

Fixed Custom Metrics Display

Resolved issue where custom metrics with NULL values in optional fields (description, propertyPath, targetUrl) were silently skipped by the backend. Updated database query to use sql.NullString for proper NULL handling.

Enhanced Analytics UX

Made entire experiment list rows clickable on analytics dashboard for faster navigation. Users can now click anywhere on the row to view experiment analytics, with project name link properly isolated using stopPropagation.

v1.7.0

October 16, 2024

Real Device Tracking Implementation

Implemented backend device detection system capturing User-Agent headers and automatically categorizing visitors as desktop, mobile, or tablet. Added device_type and user_agent columns to assignments and events tables. Device tracking provides accurate breakdown in analytics dashboard with real-time device distribution charts.

Analytics Device Breakdown

Added device breakdown query to analytics API returning device_type, count, and percentage for all assignments. Frontend device charts now display real API data with bar charts and pie charts showing mobile, desktop, and tablet distribution.

Fixed Experiment Configuration Bugs

Resolved critical issues where traffic allocation was incorrectly set to 100% (should be 50%) and control variant had 0 weight causing all visitors to be assigned to segment_b. Created diagnostic and fix scripts to identify and correct configuration issues.

Variant Distribution Working

Fixed variant weight distribution to properly assign visitors to control and segment_b variants with 50/50 split. Traffic allocation now correctly excludes 50% of visitors when set to 50%. Deterministic hashing ensures consistent variant assignment per visitor.

Enhanced Test Bot Capabilities

Test bot now simulates 8 different device profiles (Chrome/Firefox/Safari/Edge desktop, iPhone, iPad, Chrome mobile/tablet) with proper User-Agent strings for realistic device testing.

Session Tracking Added

Implemented session tracking with 30-minute timeout to differentiate between unique visitors (people) and total sessions (visits). Enables tracking return visitors and calculating sessions per visitor.

Session ID Cookie

Added _seg_session_id cookie with activity-based expiration. Session continues if user returns within 30 minutes, creates new session after timeout. Includes timestamp tracking for accurate session management.

Enhanced Analytics Capabilities

Session tracking enables richer analytics: total sessions vs unique visitors, sessions per visitor (return rate), pages per session, and session-based engagement metrics.

API Headers Updated

Snippet now sends X-Session-ID header alongside X-Visitor-ID in all API calls for comprehensive tracking of both visitor identity and session continuity.

v1.6.1

September 28, 2024

Fixed Analytics Page Crash

Resolved TypeError where projects.map was failing when projects data wasn't an array. Added proper array validation before mapping.

SEO Enhancements

Added comprehensive Open Graph tags, Twitter Cards, robots.txt, and improved metadata for better search engine optimization and social media sharing.

Accessibility Improvements

Added aria-labels to navigation elements for better screen reader support and ADA compliance.

Performance Optimization

Fixed useEffect dependency issues in dashboard and project pages to prevent unnecessary re-renders.

Complete Analytics Dashboard System

Built comprehensive analytics infrastructure tracking all experiment data. Added “View Analytics” link to experiment menu (all statuses), created experiment-specific analytics page with key metrics (visitors, conversions, conversion rate, duration), winner callout with 95%+ confidence threshold, variant performance comparison, engagement metrics (time on page, bounce rate), and revenue tracking per variant.

Overall Analytics Dashboard

Created `/dashboard/analytics` page with cross-project analytics overview, experiment filtering (project, status, time range), sortable experiments table (by date, visitors, conversions, rate), and direct links to experiment-specific analytics. Added “Analytics” link to main dashboard header navigation.

Backend Analytics API

Implemented 2 new API endpoints: `/api/v1/experiments/:id/analytics` (experiment details) and `/api/v1/analytics/overview` (cross-project summary). Added time range filtering (all, 7d, 30d, 90d), segment-based filtering, and statistical significance calculation using Bayesian approximation.

Event & Assignment Tracking

Fully implemented event tracking (page_view, conversion, bounce) with database storage, batch event tracking with transactions, and JSONB metadata storage. Enhanced variant assignment with deterministic hashing for consistency, traffic percentage enforcement, weight-based distribution, and duplicate prevention via UNIQUE constraint.

Enhanced Project List Interactivity

Redesigned project list items with improved visual feedback: thicker borders, blue hover effects, shadow elevation, animated chevron icons, and smooth transitions. Cards now clearly indicate they're clickable with multiple hover states working together.

Fixed Visual Editor Scrolling & Syntax Highlighting

Completely rebuilt HTML Content field with proper syntax highlighting (color-coded tags, attributes, and values) and fixed scrolling behavior to prevent background page interaction when modal is open.

Enhanced Production Preview Access

Renamed and clarified “Enable Production Preview Access” feature - allows QA teams to preview specific segments on live experiments using ?segmently_preview=experiment-slug:segment-name format. Disabled by default for security.

Improved Modal UX

Added body scroll lock when visual editor is open, click-outside-to-close functionality, and better event handling to prevent background page interaction.

Enhanced Experiment Wizard Navigation

Added Previous/Next navigation buttons at the top of each tab for easier navigation without scrolling. Checkmarks now only appear after clicking “Next” on a tab, providing clear visual progress tracking. This helps users identify completed sections and remaining forms at a glance.

Improved Activation Delay Settings

Redesigned Activation Delay radio buttons with card-based styling matching the rest of the wizard. Layout now shows “Immediate” and “Custom” on the first row, with preset times (100ms, 500ms, 1 second) evenly distributed on the second row. Fixed backwards description - now correctly encourages immediate activation to prevent flickering, with delays only for specific script dependencies.

Added Login Loading Indicator

Login button now displays animated spinner while processing authentication. Button is disabled during login to prevent multiple submissions, providing clear visual feedback that the system is working. Replaces arrow icon with spinning loader during authentication process.

v1.5.1

August 19, 2024

Added Comprehensive About Page

New About page showcasing our mission, core values, and key benefits. Includes detailed comparison chart with Optimizely, VWO, and Google Optimize highlighting our 70% cost savings, 5-minute setup time, and enterprise features at fair prices. Full SEO optimization with meta tags and sitemap integration

Competitor Comparison Matrix

Interactive comparison table showing feature parity with industry leaders. Highlights include visual editor capabilities, pricing transparency, setup time, free tier availability, and 24/7 support - all areas where Segmently excels

Fixed Variants Column Display

Experiments list now correctly displays variant counts. Updated API handler to parse variants JSON and return both the full array and count. Previously showed 0 for all experiments regardless of actual segment count

Enhanced Navigation

Added About link to main navigation header for easy access to company information and competitive advantages. Sitemap updated with new About page for improved SEO performance

Fixed Critical Browser Crash Bug

Eliminated infinite loop in experiment slug generation that was causing browser crashes. The useEffect hook was both depending on and updating the same state (experimentData.slug), triggering continuous re-renders. Fixed by removing circular dependency and adding ref guard to prevent multiple executions

Enhanced Duplicate Feature with Auto-Save

Duplicate now saves directly to database and stays on experiments list page. Automatically generates unique names ('Original - Copy', 'Original - Copy 2') and slugs ('slug-1', 'slug-2') with collision detection. No more confusion between original and duplicate - each has distinct name and preview URL!

Fixed Delete Experiment Functionality

Delete now actually removes experiments from database. Implemented team-based ownership verification (experiments belong to projects owned by teams) and proper SQL DELETE queries. Before this fix, deletes would return success but data would persist after refresh

Improved Duplicate Data Handling

Optimized duplicate loading order - wizard now loads duplicate data BEFORE slug auto-generation to prevent overwrites. Added console logging for easier debugging and set ref flag to prevent slug regeneration from interfering with pre-generated unique slugs

Duplicate Experiment Feature

Added 'Duplicate' option to experiment menu (Files icon) for quickly creating variations of existing experiments. Clicking duplicate redirects to new experiment page with all settings pre-filled, automatically appends '(Copy)' to name, and clears ID/slug/timestamps for fresh creation. Super convenient for iterative testing workflows!

Fixed Duplicate Page Loading Issue

Resolved loading state bug that caused duplicate experiment page to appear broken. Now properly fetches experiment data and API key before rendering the form with pre-filled duplicate data

Fixed JavaScript Variable Redeclaration Error

Resolved “redeclaration of const” error when custom JavaScript contained variable declarations. Now wraps injected scripts in IIFEs (Immediately Invoked Function Expressions) to create isolated scopes, preventing variable name collisions when scripts are reapplied or segments are switched

Eliminated FOOC (Flash Of Original Content)

Implemented anti-flicker technique used by enterprise A/B platforms: body is now hidden immediately when preview mode is detected (before page renders), changes are applied ASAP, then body is revealed only after all visual modifications are complete. No more flickers or flashes when loading preview links!

Improved Preview Performance

Optimized preview mode initialization to apply changes faster - removed unnecessary parallel wait logic, streamlined API fetch and DOM manipulation sequence. Preview links now load with all segment changes already applied instantaneously

v1.4.2

July 8, 2024

Experiment Lifecycle Management

Complete experiment status controls: Start (draft → live), Pause (live → paused, no metrics), Resume (paused → live), Archive (hidden but accessible), Reinstate (archived → draft). Status badges now show “STARTED” (green), “PAUSED” (yellow), “ARCHIVED” (purple)

Archived Experiments Section

New collapsible accordion for archived experiments keeps main view clean while preserving experiment history. Shows count, supports reinstate to draft, keeps experiments accessible for reference

Project Page Reorganization

Experiments now shown first for better workflow. API Key and Integration Instructions converted to collapsible accordions (collapsed by default) for cleaner interface while keeping setup info accessible

Slug Generation Improvements

Eliminated 'untitled' slugs - now auto-generates professional slugs from experiment names (“My Test” → “my-test”) or uses timestamps (“experiment-1737936000000”) as fallback. Much more professional for production use

Enhanced Preview Mode Debugging

Added comprehensive logging to preview mode: shows API URL, fetch URL, experiment data structure, visual changes object, available segments, and detailed error messages with stack traces for easier troubleshooting

Menu Simplification

Removed verbose “Experiment” suffix from menu items (“Start Experiment” → “Start”, “Pause Experiment” → “Pause”) for cleaner, more professional UI. Status-based menu logic now properly handles all experiment states

v1.4.1

May 22, 2024

Element Hover Preview

Visual editor now highlights elements on the page when hovering over them in the Selected Elements list - shows blue outline to easily identify which element you're about to edit

Enhanced Syntax Highlighting

HTML content editor now features color-coded syntax highlighting - HTML tags (blue), attributes (purple), values (green), CSS properties (orange), CSS values (teal) - makes editing complex HTML significantly easier

PostMessage Communication

Added new message type (segmently-highlight-element) for real-time element highlighting via iframe-to-snippet communication

v1.4.0

April 7, 2024

🏆 Intelligent Query Parameter Passing

Added checkbox option for redirect URLs to pass existing query parameters with smart merging. Handles absolute URLs, relative paths, query-only strings, and parameter conflicts (redirect params take precedence). This feature gives us a major competitive advantage over Optimizely where query param handling is buggy.

Robust URL Parsing

Implemented comprehensive URL parsing logic using URLSearchParams API - properly handles all URL formats, encodes parameters correctly, and merges current page params with redirect URL params intelligently

Redirect Mode Enhancement

Enhanced Visual Editor's redirect mode with passQueryParams state management, database persistence, and clear UI explanation. Checkbox defaults to enabled for better UX.

Snippet performRedirect() Method

Added new method in snippet to handle redirects with optional query parameter passing. Distinguishes between visual editor preview mode (logs only) and live mode (actually redirects).

v1.3.2

February 18, 2024

RESTful Experiment Editing

Implemented proper RESTful URL structure for editing experiments (/experiments/[id]/edit) - edit flow now uses the same wizard UI with checkmarks showing completed tabs

Query Parameter Type Fix

Fixed TypeScript compilation error from outdated 'exact' mode references - updated review section to show 'match_specific' parameters correctly

Flexible Query Parameter System

Replaced rigid “exact” matching with key-value pair system - specify required parameters with accordion UI, supports multiple parameters with AND logic

Advanced Tab Implementation

Added activation delay, segment persistence options, QA force parameter, cross-domain tracking, and experiment priority controls

Audience Page Improvements

Added proper h3 headings for “Device Targeting” and “Library Injection” sections, improved visual hierarchy

Reorganized Custom JavaScript Condition

Moved Custom JS Condition from Audience tab to Project Customizations tab (now “Advanced Audience Condition”) for better logical grouping

Segments Page Spacing

Added proper vertical spacing (mt-8 mb-8) around traffic adjustment container for better visual rhythm

v1.2.2

December 14, 2023

Build Fixes

Fixed TypeScript compilation errors for Vercel deployment (targeting/variants/goals properties, error handling types)

testUrl Migration

Updated VisualEditorModal to use testUrls array instead of deprecated testUrl property

Footer Coverage

Added Footer component to project detail page ensuring consistent site-wide footer presence

Multiple Test URLs Feature

Added ability to test multiple URLs against targeting rules with +/- buttons, individual validation, and overall status summary

Targeting Tab Reorganization

Moved snippet section to top, improved visual hierarchy with headings and dividers

Query Parameter Handling Simplified

Reduced from 3 options to 2 (Ignore/Exact) to eliminate redundancy and improve UX

UI Fixes

Fixed snippet accordion styling, restored amber/orange color scheme, improved radio button visibility

Experiment Database Save Implementation

Save Draft and Launch Experiment now properly save to database with full experiment data

Team Membership Bug Fix

Fixed 403 errors - users now automatically added to team_members on team creation

UUID v4 Generation

Replaced hardcoded “demo123” with cryptographically secure UUID v4 with collision detection

LocalStorage Management

Clear localStorage after successful database save to prevent stale drafts

v1.1.2

October 5, 2023

Stripe Integration Complete

Full billing system with checkout, subscription management, portal, and webhooks

Centralized Pricing Configuration

Single source of truth for all pricing across the app

Earlier Versions (v1.0.0 - v1.1.1)

Initial platform launch with core features: authentication, project management, experiment wizard, visual editor, snippet implementation, and production deployment.