Accessibility scan

Customer.io

https://customer.io

F

22 automated issues detected

Impact-weighted score: 175 · critical 13 · serious 9 · moderate 0 · minor 0

Automated axe-core 4.11.4 scan of the homepage only, run on June 23, 2026. Results are reproducible: the same engine, the same page.

Automated testing detects roughly 30–50% of WCAG issues. Many barriers — keyboard traps, screen-reader flow, focus order, meaningful alt text — need manual review by a person. A clean automated scan is not the same as an accessible site.

A clean automated scan is not a determination of ADA compliance, legal compliance, or full accessibility. These results describe only what an automated scan found on one page on one date.

Detected issues

ARIA attributes must conform to valid values

Critical · 1 element

WCAG: wcag2a, wcag412 · rule: aria-valid-attr-value

#radix-_R_dainlivb_-trigger-Build\ campaigns\ in\ a\ conversation
<button type="button" role="tab" aria-selected="true" aria-controls="radix-_R_dainlivb_-c..." data-state="active" id="radix-_R_dainlivb_-t..." data-slot="tabs-trigger" class="whitespace-wrap text..." tabindex="-1" data-orientation="horizontal" data-radix-collectio...="">

Buttons must have discernible text

Critical · 12 elements

WCAG: wcag2a, wcag412 · rule: button-name

.after\:to-spruce-900.isolate.transition-\[flex-grow\]:nth-child(1) > .z-50.relative > .group-hover\:bg-cta-hover.md\:group-hover\:text-cta.bg-\(--color-cta-surface\)
<button class="group ring-offset-ba...">
.after\:to-spruce-900.isolate.transition-\[flex-grow\]:nth-child(2) > .z-50.relative > .group-hover\:bg-cta-hover.md\:group-hover\:text-cta.bg-\(--color-cta-surface\)
<button class="group ring-offset-ba...">
.after\:to-spruce-900.isolate.transition-\[flex-grow\]:nth-child(3) > .z-50.relative > .group-hover\:bg-cta-hover.md\:group-hover\:text-cta.bg-\(--color-cta-surface\)
<button class="group ring-offset-ba...">
.after\:to-spruce-900.isolate.transition-\[flex-grow\]:nth-child(4) > .z-50.relative > .group-hover\:bg-cta-hover.md\:group-hover\:text-cta.bg-\(--color-cta-surface\)
<button class="group ring-offset-ba...">
.after\:to-spruce-900.isolate.transition-\[flex-grow\]:nth-child(5) > .z-50.relative > .group-hover\:bg-cta-hover.md\:group-hover\:text-cta.bg-\(--color-cta-surface\)
<button class="group ring-offset-ba...">
li:nth-child(1) > .hoverable\:hover\:bg-surface-subtle.items-end.md\:p-8 > .items-start.justify-between.w-full > div > .bg-surface-subtle.group-hover\:bg-cta.hoverable\:opacity-0
<button class="group ring-offset-ba...">
li:nth-child(2) > .hoverable\:hover\:bg-surface-subtle.items-end.md\:p-8 > .items-start.justify-between.w-full > div > .bg-surface-subtle.group-hover\:bg-cta.hoverable\:opacity-0
<button class="group ring-offset-ba...">
li:nth-child(3) > .hoverable\:hover\:bg-surface-subtle.items-end.md\:p-8 > .items-start.justify-between.w-full > div > .bg-surface-subtle.group-hover\:bg-cta.hoverable\:opacity-0
<button class="group ring-offset-ba...">
li:nth-child(4) > .hoverable\:hover\:bg-surface-subtle.items-end.md\:p-8 > .items-start.justify-between.w-full > div > .bg-surface-subtle.group-hover\:bg-cta.hoverable\:opacity-0
<button class="group ring-offset-ba...">
.md\:gap-4 > .items-start.justify-between.w-full > div:nth-child(2) > .group-hover\:bg-cta.hoverable\:opacity-0.sm\:bg-\[initial\]
<button class="group ring-offset-ba...">
.hover\:bg-surface.sm\:p-8[href$="security"] > .gap-4.flex-col.flex > .items-start.justify-between.w-full > div:nth-child(2) > .group-hover\:bg-cta.hoverable\:opacity-0.sm\:bg-\[initial\]
<button class="group ring-offset-ba...">
.hover\:bg-surface.sm\:p-8[href$="support"] > .gap-4.flex-col.flex > .items-start.justify-between.w-full > div:nth-child(2) > .group-hover\:bg-cta.hoverable\:opacity-0.sm\:bg-\[initial\]
<button class="group ring-offset-ba...">

ARIA progressbar nodes must have an accessible name

Serious · 3 elements

WCAG: wcag2a, wcag111 · rule: aria-progressbar-name

#radix-_R_dainlivb_-trigger-Build\ campaigns\ in\ a\ conversation > .inset-x-0.-bottom-px.h-px > .bg-charcoal-100.overflow-x-hidden[aria-valuemax="100"]
<div aria-valuemax="100" aria-valuemin="0" role="progressbar" data-state="indeterminate" data-max="100" data-slot="progress" class="bg-charcoal-100 relative flex h-px w-full items-center overflow-x-hidden">
#radix-_R_dainlivb_-trigger-Analyze\ performance\ instantly > .inset-x-0.-bottom-px.h-px > .bg-charcoal-100.overflow-x-hidden[aria-valuemax="100"]
<div aria-valuemax="100" aria-valuemin="0" role="progressbar" data-state="indeterminate" data-max="100" data-slot="progress" class="bg-charcoal-100 relative flex h-px w-full items-center overflow-x-hidden">
#radix-_R_dainlivb_-trigger-Remember\ everything\ about\ your\ business > .inset-x-0.-bottom-px.h-px > .bg-charcoal-100.overflow-x-hidden[aria-valuemax="100"]
<div aria-valuemax="100" aria-valuemin="0" role="progressbar" data-state="indeterminate" data-max="100" data-slot="progress" class="bg-charcoal-100 relative flex h-px w-full items-center overflow-x-hidden">

Elements must only use permitted ARIA attributes

Serious · 1 element

WCAG: wcag2a, wcag412 · rule: aria-prohibited-attr

#radix-_R_dainlivb_-content-Build\ campaigns\ in\ a\ conversation > .z-1.w-full.relative
<div class="w-full relative z-1" aria-label="Build campaigns in a conversation">

Elements must meet minimum color contrast ratio thresholds

Serious · 1 element

WCAG: wcag2aa, wcag143 · rule: color-contrast

.text-highlight-mustard
<span class="text-highlight-mustard">relevant</span>
Contrast ratio: 1.83:1text: #edb73bbg: #ffffffuse #937125 (passes AA on this background)

Links must have discernible text

Serious · 4 elements

WCAG: wcag2a, wcag244, wcag412 · rule: link-name

.text-spruce-500.hover\:bg-surface-subtle.hover\:text-muted:nth-child(1)
<a href="https://www.linkedin.com/company/customer-io" target="_blank" rel="noopener noreferrer" class="group bg-surface text-spruce-500 hover:text-muted hover:bg-surface-subtle flex items-center justify-center rounded-xs p-1 transition-colors">
a[href$="customerio"]
<a href="https://twitter.com/customerio" target="_blank" rel="noopener noreferrer" class="group bg-surface text-spruce-500 hover:text-muted hover:bg-surface-subtle flex items-center justify-center rounded-xs p-1 transition-colors">
.text-spruce-500.hover\:bg-surface-subtle.hover\:text-muted:nth-child(3)
<a href="https://www.youtube.com/channel/UCkCaWdezRoa8ZyR9pEVaipA" target="_blank" rel="noopener noreferrer" class="group bg-surface text-spruce-500 hover:text-muted hover:bg-surface-subtle flex items-center justify-center rounded-xs p-1 transition-colors">
.text-spruce-500.hover\:bg-surface-subtle.hover\:text-muted:nth-child(4)
<a href="https://www.instagram.com/customer.io/" target="_blank" rel="noopener noreferrer" class="group bg-surface text-spruce-500 hover:text-muted hover:bg-surface-subtle flex items-center justify-center rounded-xs p-1 transition-colors">

Are you Customer.io?

This is a free, automated, homepage-only snapshot. Re-scan customer.io live, get the full element-level worklist across every page, or set up monitoring that re-checks on a schedule and alerts only on new issues.