๐Ÿ” Synder Onboarding Deep Dive

Role-based flow analysis, drop-off analytics, UX findings, and bot-friendliness audit
๐Ÿ“… March 29, 2026 ๐Ÿ‘ค Analyst: Dasha ๐Ÿ”ฌ Method: Browser automation + LogRocket + Manual walkthrough

Executive Summary

6
Role options
3
Distinct flow paths
63.9%
Drop-off at role selection
8
UX findings
12
Bot-blocking elements

What we analyzed

Complete walkthrough of Synder's onboarding flow across all 6 role options, testing every form field, dropdown, and conditional element. Automated via headless Chromium (Playwright) to simultaneously document the UX and assess bot/agent compatibility.

Method

  • Browser automation with Playwright (headless Chromium) โ€” walked each role end-to-end
  • 40+ screenshots captured across all flows
  • LogRocket session analytics (Galileo AI API) โ€” 90-day funnel data
  • Form element inspection โ€” DOM analysis of every input, select, and radio

Role Flow Map

Synder's onboarding has 6 role options that branch into 3 distinct flow paths:

RoleFlow PathStep 1 (Extra)Step 2 NameAsks about client?
Business owner / Executive manager Business โ€” Provide business details No (asks about own biz)
Accounting or Bookkeeping Firm Firm Info about your practice
(employees, industries, # clients)
Provide Client details Yes โ€” client name, client's biz info
Staff Accountant Business โ€” Provide business details No (same as Biz Owner but without accountant question)
IT & Technology department Business โ€” Provide business details No
Marketing Business โ€” Provide business details No
Other Firm Free text role description + Info about your practice Provide Client details Yes โ€” same as Accounting firm

๐Ÿ’ก Key Insight

Only 2 roles (Accounting Firm and Other) get the "firm" flow with practice info + client details. The other 4 roles all get identical "business" flows. This means 67% of role options lead to the same experience โ€” the role selector provides minimal differentiation for most users.

Role-Based Flow Documentation

๐Ÿข Business Owner / Executive Manager

Step 1Role Selection
โ†’
Step 2Business Details
โ†’
Step 3Select Integrations
โ†’
Step 4Connect Integrations

Step 1: Tell us about you

Single dropdown: "How would you describe your role?" โ€” 6 options

  • DROPDOWN Role *

Step 2: Provide business details

"We'll use this information to tailor your account"

  • TEXT Business name *
  • TEXT What's your business website?
  • DROPDOWN Time zone * (defaults to UTC)
  • DROPDOWN Country *
  • MULTI-SELECT Industry * โš ๏ธ Non-standard react-select
  • DROPDOWN How long have you been in business? *
  • DROPDOWN Your revenue for the last year * โš ๏ธ HIDDEN โ€” appears only after industry + duration are filled
  • RADIO Do you have an accountant/bookkeeper? โ†’ Yes: shows email invite field / No: shows "find one" link
  • TEXT Accountant email * (only if "Yes")

Step 3: Select integrations

"Synder is SOC 2 compliant and certified, so your data is thoroughly protected"

  • CARDS Sales integrations โ€” platform icons (Stripe, PayPal, Shopify, Amazon, etc.)
  • CARDS Payment integrations
  • BUTTON View all integrations โ€” opens modal with full list

Step 4: Connect integrations

OAuth connection flow for selected platforms. Also shows accounting software selection (QuickBooks, Xero, Sage Intacct, etc.)

๐Ÿ”Ž Business Owner Field Options (captured from DOM)

FieldOptions
Timezone600+ timezones (IANA list). US timezones listed first.
Country250+ countries. Australia, Canada, UK, US shown first as favorites.
IndustryAutomotive, Construction, Education, Entertainment, Hospitality/Travel, Insurance, Legal, Logistics, Manufacturer, Marketing, Non-profit, Professional Services, Real-Estate, Retail/E-Commerce, Technology/SaaS, Other
Business durationJust starting, Less than 1 year, 1-3 years, 3+ years
Revenue0-250K, 250K-1M, 1M-10M, 10M+

๐Ÿ“Š Accounting or Bookkeeping Firm

Step 1Role Selection
โ†’
Step 1bPractice Info
โ†’
Step 2Client Details
โ†’
Step 3Select Integrations
โ†’
Step 4Connect Integrations

Step 1b: Info about your practice Extra step for firms only

This sub-step appears WITHIN the "Tell us about you" tab โ€” the stepper still shows 4 steps but this is effectively a 5th screen.

  • DROPDOWN How many employees? * โ€” 1 (just me), 2-9, 10-19, 20-49, 50+
  • MULTI-SELECT Industries you serve * โš ๏ธ Non-standard react-select
  • DROPDOWN How many clients to use Synder? * โ€” 1-2, 3-6, 7-14, 15-50, 50+

Subtitle: "(have online transactions with Stripe, Square, Amazon, Shopify, PayPal, etc.)"

Step 2: Provide your Client's basic info

"This info is needed to adjust Synder's functionality in accordance with your client's needs."

  • TEXT Client name *
  • TEXT What's your business website?
  • DROPDOWN Time zone *
  • DROPDOWN Country *
  • MULTI-SELECT Industry *
  • DROPDOWN How long has your Client been in business? *

Note: No revenue question, no accountant question (they ARE the accountant).

๐Ÿ“ Staff Accountant

Identical to Business Owner flow except:

  • No "Do you have an accountant?" question (they ARE the accountant)
  • No accountant email invite field
  • All other fields identical: business name, website, timezone, country, industry, duration
๐Ÿค” Question: Why does Staff Accountant get the "business" flow instead of the "firm" flow? A staff accountant at a firm would likely be managing clients, not their own business.

โ“ Other

Gets the Accounting Firm flow but with an extra step:

  • Free-text field: "I describe my role as..." * required
  • Then proceeds to Practice Info โ†’ Client Details โ†’ Select/Connect Integrations
๐Ÿค” Question: Why does "Other" default to the firm flow? Users who don't fit existing categories might be business owners, not necessarily firms managing clients.

Step Comparison Matrix

Step/FeatureBusiness OwnerAccounting FirmStaff AccountantOther
Stepper tabs shown44 (but 5 screens)44 (but 5-6 screens)
Step 2 heading"Provide business details""Provide Client details""Provide business details""Provide Client details"
Free-text role inputโŒโŒโŒโœ… Required
Practice info sub-stepโŒโœ…โŒโœ…
Employees countโŒโœ…โŒโœ…
Client countโŒโœ…โŒโœ…
Business name fieldโœ… "Business name"โœ… "Client name"โœ… "Business name"โœ… "Client name"
Revenue questionโœ… (conditional)โŒโŒโŒ
Accountant questionโœ… Yes/No + emailโŒโŒโŒ
Loom video widgetโœ…โœ…โœ…โœ…

Drop-off Analytics

Data from LogRocket Galileo AI API โ€” 30/90-day session analysis. Combined with browser walkthrough observations.

1,101
Sessions reached onboarding (30d)
63.9%
Drop-off at role selection
34.4%
Overall completion rate
2
Active JS bugs

Onboarding Funnel

Reached /onboarding
1,101 sessions
100%
Selected a role
~397
36.1%
Completed business/client details
~275
~25%
Selected integrations
~220
~20%
Completed onboarding
~170
~15.4%
Reached dashboard
~132
~12%

Drop-off Reasons by Step

Critical Step 1: Role Selection โ€” 63.9% abandon

The #1 problem. Nearly two-thirds of all users who reach onboarding never get past the role selector.

Probable reasons:

  • Opaque label: "How would you describe your role?" gives zero context about WHY the role matters or what changes based on selection
  • Dropdown hides options: Users can't see all choices without clicking โ€” unlike card-based selectors that show everything at a glance
  • Decision paralysis: 6 options, unclear which to pick. "IT & Technology department" and "Marketing" feel wrong for most ecommerce users
  • No "skip" or "I'll decide later": Required field with no way to proceed without choosing
  • Context switch: Users just signed up with marketing promises โ†’ land on a blank page with one dropdown and zero context

High Step 2: Business/Client Details โ€” ~30% drop between steps 1 and 2

Probable reasons:

  • Too many required fields: 6-7 required fields on one screen feels heavy
  • Hidden conditional field: Revenue question appears AFTER filling other fields โ€” feels like a moving goalpost
  • Industry multi-select confusion: "Please select all that apply" but the select component doesn't look like a multi-select โ€” it looks like a standard dropdown
  • Silent form failures: Clicking "Next step" with empty fields doesn't scroll to the first error โ€” validation messages appear but may be off-screen
  • Accountant invite pressure: Being asked to invite an accountant mid-setup can feel premature or irrelevant

High Step 3: Integration Selection โ€” ~20% drop

Probable reasons:

  • Must select BOTH sales AND accounting integrations: Business owners must select an accounting platform (QuickBooks, Xero, etc.) but these aren't shown in the default view or "View all" modal โ€” silent failure with no error on first click
  • Overwhelming platform list: "View all integrations" shows 30+ options
  • No guidance: Which ones should I connect first? What if I'm not sure?
  • "Choose at least one integration to proceed" โ€” error appears on SECOND click only, doesn't explain what TYPE of integration is needed

Medium Step 4: Connect Integrations โ€” ~25% drop

Probable reasons:

  • OAuth complexity: Connecting to Stripe, PayPal, etc. requires leaving Synder โ†’ logging into platform โ†’ authorizing
  • Account readiness: Users may not have their platform credentials handy
  • Fear of access: "What exactly will Synder access?" โ€” security concerns
  • Multi-step OAuth: Some platforms (QuickBooks) have multi-step authorization

Known Active Bugs

BugImpactStatus
TypeError: Cannot read properties of undefined (reading 'email') Blocks users at mapping/currency step โ€” prevents onboarding completion P0 โ€” Active
Converting circular structure to JSON Breaks Product Mappings page โ€” affects post-onboarding setup P0 โ€” Active

Findings & Recommendations

8 findings prioritized by impact. Each includes severity, evidence, and a specific recommendation.

Finding #1: Role selection kills 64% of users Critical

Evidence: 1,101 sessions reach onboarding; only 397 proceed past role selection. The dropdown label "Choose an option" (or "How would you describe your role?") provides zero context.

Recommendation: Replace dropdown with visual card-based selector showing 3-4 clear options with icons and descriptions: "I run an online business" / "I'm an accountant managing clients" / "Other". Reduce from 6 options to 3 โ€” IT, Marketing, and Staff Accountant get the same flow as Business Owner anyway.

Finding #2: Hidden required field โ€” Revenue appears conditionally Critical

Evidence: On the Business Owner flow, "Your revenue for the last year" only appears after filling Industry and Duration. Users who fill the visible fields and click "Next step" get blocked by a field they didn't even know existed. No scroll-to-error behavior.

Recommendation: Either (a) show the Revenue field from the start, or (b) make it optional. If it must be conditional, smoothly animate it into view with a gentle highlight so users notice the new field.

Finding #3: No progress indication or context Critical

Evidence: The text tabs ("Tell us about you โ†’ Provide business details โ†’ Select integrations โ†’ Connect integrations") are flat, hard to scan, and don't show completion state. For the Accounting Firm flow, there are 5 actual screens but only 4 tabs โ€” the Practice Info sub-step is hidden inside Step 1.

Recommendation: Add a numbered progress stepper with visual dots, completion checkmarks, and clear step counts. Show "Step 2 of 4" explicitly. See the Progress Stepper tab for a prototype.

Finding #4: Industry field is a non-standard multi-select High

Evidence: The Industry dropdown uses a custom react-select component with a hidden #clickableInput element. It's a multi-select ("Please select all that apply") but looks identical to single-select dropdowns. Users may not realize they can select multiple industries. The component also loses selections unpredictably in automated testing โ€” suggesting potential state management issues for real users too.

Recommendation: Use checkbox-style multi-select with visible chips/tags for selected items. Or use a standard <select multiple>. Make the multi-select nature visually obvious.

Finding #5: Integration selection has a hidden accounting gate High

Evidence: Business owners must select at least one accounting integration (QuickBooks, Xero, etc.) in addition to sales integrations โ€” but accounting options aren't prominently shown. The error message "Choose at least one integration to proceed" appears only on the second click and doesn't specify WHICH TYPE of integration is needed.

Recommendation: Split Step 3 into two clear sub-sections: "Where do you sell?" (sales platforms) and "Where do you do your books?" (accounting software). Make both visibly required with section labels.

Finding #6: 4 roles with identical flows waste the role selector High

Evidence: Business Owner, Staff Accountant, IT & Technology, and Marketing all lead to the same "Provide business details" flow (with minor variations in the accountant question). Only Accounting Firm and Other get a different path. This means 67% of role options are cosmetic.

Recommendation: Consolidate to 2-3 meaningful paths: "Business owner" / "Accountant/Bookkeeper managing clients" / "Other". Use the role selection to drive genuinely different experiences (welcome copy, feature highlights, default settings). If all paths converge, remove the selector entirely.

Finding #7: Accountant invite creates premature friction Medium

Evidence: Business owners are asked "Do you have an accountant/bookkeeper?" with a required email field if "Yes". Selecting "Yes" then trying to proceed without an email blocks the form. The "find a trusted accountant here" link (on "No") is a nice idea but mid-onboarding is the wrong time.

Recommendation: Move the accountant invite to post-onboarding settings or a "next steps" checklist. During onboarding, at most show a simple checkbox "I work with an accountant" and handle the invite later.

Finding #8: No welcome screen or post-signup context Medium

Evidence: Users go from signup directly to the role dropdown with no welcome, no "here's what to expect", no estimated time. The marketing site promises "three simple steps" but the onboarding shows 4 tabs with up to 5 actual screens.

Recommendation: Add a welcome interstitial: "Welcome to Synder! Let's set up your account in about 3 minutes. Here's what we'll do: โ‘  Tell us about your business โ‘ก Connect your sales channels โ‘ข Link your accounting software." Builds confidence and sets expectations.

๐Ÿค– Bot & AI Agent Friendliness Audit

Assessment of how well the onboarding flow can be automated by bots, AI agents, or automated testing frameworks. Tested with Playwright (headless Chromium).

12
Bot-blocking elements
5
Partially automatable
8
Fully automatable

Overall Bot-Friendliness Score

3/10

Not bot-friendly

Multiple non-standard form components, hidden fields, and state management issues make automated onboarding unreliable.

Element-by-Element Assessment

ElementBot ScoreIssueFix for Bot Compatibility
Role dropdown โœ… PASS Standard common-select โ€” works with .click() + option select โ€”
Business name input โš ๏ธ PARTIAL React-controlled input. Standard .fill() doesn't update React state. Needs nativeInputValueSetter + dispatchEvent('input') Add data-testid attributes. Ensure inputs respond to standard DOM events.
Timezone dropdown โœ… PASS Standard common-select โ€”
Country dropdown โš ๏ธ PARTIAL Standard common-select but "United States" matches 2 options (US + US Minor Outlying Islands). Strict mode fails. Use unique IDs or data-value attributes for each option
Industry multi-select โŒ FAIL Critical blocker. Hidden #clickableInput element, not a standard select. Requires pixel-coordinate click below label. Selection doesn't persist reliably โ€” Escape key undoes it. Value resets between interactions. No name or data-testid. Replace with standard multi-select or add API-accessible selection method. Add aria-* attributes and data-testid.
Business duration dropdown โœ… PASS Standard common-select โ€”
Revenue dropdown โŒ FAIL Hidden until other fields filled. Bot must fill Industry + Duration first, wait for re-render, then discover the new dropdown. No way to know it exists beforehand. Also a common-select (automatable once visible). Always render all fields. Use CSS visibility if progressive disclosure is desired.
Accountant radio buttons โŒ FAIL Radio at y:944 below 900px viewport โ€” not visible without scroll. .click() fails. scrollIntoViewIfNeeded() + {force: true} required. Overlapping labelContainer-1-1-12 div intercepts pointer events. Ensure radios are clickable via standard selectors. Remove overlapping container div. Add data-testid.
Accountant email input โš ๏ธ PARTIAL Conditional field โ€” only appears when Yes radio selected. Standard input once visible. Add data-testid and visibility state.
Integration platform cards โš ๏ธ PARTIAL Image-based cards with no text labels on some platforms. Need to click images by alt text or position. Add data-platform-id attributes to each card. Add visible text labels.
"View all" modal โœ… PASS Opens with click, closes with Escape โ€”
Form validation โŒ FAIL No error scroll-to-field. Validation messages may be off-screen. No aria-invalid attributes. Form silently fails with no API response on submit โ€” purely client-side React state check. Add aria-invalid, aria-errormessage. Scroll to first error. Return structured error response.
Step navigation โŒ FAIL Future step tabs are disabled โ€” can't click ahead. No URL changes between steps (all /onboarding/index). No query params for step state. Back button works but re-renders form from scratch. Add URL params (?step=2) or expose step state. Enable programmatic step navigation.
Practice Info sub-step โŒ FAIL Hidden sub-step within Step 1 tab โ€” no URL change, no distinct identifier. Bot must detect content change by reading page text. Stepper shows Step 1 for both role selection and practice info. Give each logical step a unique URL or data attribute.
Cloudflare Access gate โŒ FAIL Email verification required before reaching the app. Needs CF-Access-Client headers or manual email code. Blocks any bot without pre-configured service tokens. Provide CF-Access-Client-Id / CF-Access-Client-Secret service tokens for bot accounts. Or whitelist bot IPs.

Recommendations for Bot-Friendly Onboarding

Priority 1: Add data-testid attributes to all form elements

Every input, select, radio, button, and card should have a unique data-testid attribute. This is the single biggest improvement for automation compatibility.

Examples:

  • data-testid="onboarding-role-select"
  • data-testid="onboarding-industry-select"
  • data-testid="onboarding-integration-stripe"
  • data-testid="onboarding-next-button"

Priority 2: Replace non-standard react-select with accessible components

The Industry multi-select uses a custom react-select that doesn't respond to standard DOM interactions. Replace with a component that supports aria-* attributes and responds to .fill() / .selectOption().

Priority 3: Add URL-based step routing

Each onboarding step should have a distinct URL or query parameter (/onboarding?step=2). This allows bots to navigate directly to specific steps and detect their current position.

Priority 4: Provide an onboarding API

For true bot/agent onboarding at scale, expose a REST API that accepts all onboarding parameters in a single POST request. This bypasses the UI entirely and allows programmatic org setup.

POST /api/v1/onboarding/complete
{
  "role": "business_owner",
  "businessName": "My Company",
  "country": "US",
  "industry": ["retail_ecommerce"],
  "businessDuration": "1_3_years",
  "revenue": "250k_1m",
  "integrations": ["stripe", "quickbooks_online"]
}

Priority 5: Render all form fields immediately

Hidden/conditional fields (Revenue, accountant email) should be rendered in the DOM from the start (even if visually hidden). This allows bots to discover and fill all fields in a single pass.

Progress Stepper Concept

The current onboarding uses flat text tabs with no visual progress indication. Here's a proposed stepper design.

Current vs Proposed

โŒ Current: Flat text tabs

Tell us about you Provide business details Select integrations Connect integrations

Problems: No step numbers, no completion state, no time estimate, disabled future steps look like broken links.

โœ… Proposed: Visual progress stepper

Step 2 of 4 ยท About 2 minutes left

โœ“
About you
2
Business details
3
Integrations
4
Connect

Key improvements:

  • Numbered dots โ€” clear position in the flow
  • Completion checkmarks (โœ“) โ€” completed steps are visually distinct
  • Active state ring โ€” current step has a blue glow
  • Connected lines โ€” show flow direction and completion
  • "Step X of Y" โ€” explicit text for accessibility
  • Time estimate โ€” "About 2 minutes left" reduces anxiety
  • Short labels โ€” "About you" > "Tell us about you"

Welcome Screen Concept

๐ŸŽ‰

Welcome to Synder!

Let's set up your account. It takes about 3 minutes.

1
Tell us about your business
2
Connect your sales channels
3
Link your accounting software

Accounting Firm Variant

For accounting firms, the stepper should reflect the actual 5-screen flow:

Step 2 of 5 ยท About 3 minutes left

โœ“
Your role
2
Your practice
3
Client info
4
Integrations
5
Connect