FAQ

+

How do students earn and view course certificates?

0

Classification: Areas: Frontend, Courses · Audience: Student, Teacher, Parent · Visibility: Public (draft) · Verified: sj-learn-certificates · 2026-09-24

After passing a course that has a certificate, students can view earned certificates via certificate APIs such as LP_Certificate::get_user_certificates().

Teachers may also see certificate tabs on Student Profile.

Evidence: class-lp-certificate.php.

Was this helpful?
+

Do I need a credit card to start SJ CRM?

0

Classification: Areas: Frontend, Settings · Audience: Customer · Visibility: Public (draft) · Verified: sj-crm 2.9.17 / sj-crm-signup · 2026-09-23

No. New SaaS signups are created on the Free plan only. Paid plans are upgrades for existing workspaces and are handled separately by the Stripe billing add-on.

On the public SJ CRM site, signup is offered from Sign-up / Get Started (registration page). The signup plugin requires email verification for every new signup.

Evidence: sj-crm-signup plugin header and flow (free plan + required email verification); sj-crm-stripe comments that paid plans are upgrades; public homepage FAQ on sjcrmapp.com.

Was this helpful?
+

Does SJ CRM include a built-in AI chatbot for CRM records?

0

Classification: Areas: Chatbot · Audience: Customer · Visibility: Public (draft) · Verified: sj-crm 2.9.17 · 2026-09-23

No. The SJ CRM core plugin does not embed an AI chatbot that reads CRM contacts, businesses, or other tenant records.

Product support on the public SJ CRM site is positioned as human email support, not a CRM chatbot. A marketing-site chat widget (if present) is not the same as an in-CRM AI assistant over your data.

Staff documentation for CRM operators can be provided through the separate SJ FAQs / Knowledge Base add-on. The SJ Chatbot product is documented separately and is not wired into SJ CRM core in the current master.

Evidence: no chatbot integration symbols in sj-crm; sj-crm-faq-addon wraps sj-faqs Help Center for staff knowledge; public support copy on sjcrmapp.com.

Was this helpful?
+

How do I find my CRMs if I have more than one workspace?

0

Classification: Areas: Frontend, Chatbot · Audience: Customer · Visibility: Public (draft) · Verified: sj-crm-signup + theme integration · 2026-09-23

If you belong to more than one SJ CRM workspace on the SaaS network, use these tools:

  • Find My CRMs — open /find-my-crms/ on the main site, enter your email, and (when an account matches) receive an email listing your CRM workspaces. The response message does not reveal whether an email exists.
  • CRM Picker — when signed in with access to multiple CRMs, open /crm-picker/ to choose a workspace or set a default. Single-CRM users may be redirected straight into their workspace.

Support agents can point customers to Find My CRMs before escalating account recovery. Do not publish personal workspace URLs or family CRM links in public docs.

Evidence: sj-crm-signup handle_find_my_crms_page(), handle_crm_picker_page(); theme integration links to /find-my-crms/ and /crm-picker/.

Was this helpful?
+

What happens when I cancel or downgrade my SJ CRM subscription?

0

Classification: Areas: Settings, Frontend, Chatbot · Audience: Customer · Visibility: Public (draft) · Verified: sj-crm-stripe · 2026-09-23

Billing changes are handled by the Stripe add-on and, where enabled, the Stripe Customer Portal.

  • Cancel — cancellation is typically scheduled for the end of the current period (cancel_at_period_end). You keep access until that date.
  • Downgrade — downgrades are commonly scheduled as a pending change effective at period end, rather than cutting limits immediately.
  • Cancel a scheduled change — if a pending downgrade/cancel is waiting, the billing UI/API can cancel that scheduled change before it applies.
  • Upgrade — paid upgrades are generally applied more immediately (with Stripe proration behavior as configured).

Use Manage billing / Customer Portal when offered. After the effective date, plan limits and add-on gating follow the new plan. This FAQ does not invent refund policy beyond what Stripe/portal shows.

Evidence: sj-crm-stripe subscription UI, pending downgrade handling, portal session creation, checkout cancel-at-period-end behavior.

Was this helpful?
+

How do I return safely from a child or delegated lesson session?

0

Classification: Areas: Frontend, Security · Audience: Parent, Teacher · Visibility: Public (draft) · Verified: sj-learn-network · 2026-09-24

Delegated sessions let an adult open a learner context. Returning uses SJL_Delegated_Learner_Session::return_to_actor(). Parent/agent returns may require the adult password; teacher returns follow teacher rules.

Evidence: class-sjl-delegated-learner-session.php.

Was this helpful?
+

How are lesson times shown in my timezone?

0

Classification: Areas: Booking, Frontend · Audience: Student, Parent · Visibility: Public (draft) · Verified: sj-booking-learn · 2026-09-24

Students can store a viewer timezone in user meta sjbk_viewer_timezone. The my-appointments UI saves it via ajax_save_viewer_timezone so slots display in the viewer’s zone.

Evidence: class-sjbk-learn-student.php.

Was this helpful?
+

How do I buy a marketplace course with Stripe checkout?

0

Classification: Areas: Marketplace, Payments · Audience: Student, Teacher · Visibility: Public (draft) · Verified: sj-learn-stripe · 2026-09-24

Marketplace checkout can use the LearnPress Stripe gateway (LP_Gateway_Stripe), with marketplace filters for gateway keys.

Evidence: class-lp-gateway-stripe.php; marketplace stripe filters.

Was this helpful?
+

Why is my company subdomain not available when I sign up?

0

Classification: Areas: Frontend · Audience: Customer · Visibility: Public (draft) · Verified: sj-crm-signup 1.3.16 · 2026-09-23

During SaaS signup, the company subdomain is checked live via GET /sj-crm-signup/v1/check-subdomain.

A subdomain can be rejected because:

  • It is already taken by another site.
  • It is on the reserved list: www, admin, mail, ftp, api, app, blog, help, support, status, demo.
  • It fails length/format rules (signup requires at least 3 characters for the subdomain label).

Choose a different label (for example your brand plus a short qualifier) and retry. Reserved names protect platform routing and common infrastructure hostnames.

Evidence: reserved array and redirect error in sj-crm-signup.php; REST route /check-subdomain.

Was this helpful?
+

Do paid SJ CRM plans include a free trial?

0

Classification: Areas: Frontend, Settings · Audience: Customer · Visibility: Public (draft) · Verified: sj-crm-stripe 1.0.34 · 2026-09-23

Paid plan cards can show a free trial when the plan’s trial_days value is greater than zero. Checkout then passes trial_period_days to Stripe.

Code defaults for built-in paid plan templates use 14 trial days (enterprise-style templates may use 0). Operators can change trial_days per plan in Stripe network settings, so the live pricing page is the source of truth—not marketing PDFs.

Trial badges on

Basic

Perfect for small businesses getting started

$ 9.99 /month
  • Up to 10,000 contacts
  • Up to 10,000 businesses
  • All add-ons included
  • Email support

Enterprise

For large organizations with unlimited needs

$ 199.99 /month
  • Unlimited contacts
  • Unlimited businesses
  • All add-ons included
  • 24/7 phone support
  • Custom integrations
  • Dedicated account manager
typically appear for new checkouts when trial_days > 0. Free signup without a card is a separate flow documented elsewhere.

Evidence: plan fields and checkout arrays in sj-crm-stripe.php (trial_days / trial_period_days); trial badge in render_pricing_shortcode.

Was this helpful?
+

Can I pay yearly instead of monthly?

0

Classification: Areas: Frontend, Settings · Audience: Customer · Visibility: Public (draft) · Verified: sj-crm-stripe 1.0.34 · 2026-09-23

Yes, when yearly pricing is configured for the plan. Each plan can store price_yearly and a Stripe yearly price ID alongside monthly fields.

The pricing shortcode

Basic

Perfect for small businesses getting started

$ 9.99 /month
  • Up to 10,000 contacts
  • Up to 10,000 businesses
  • All add-ons included
  • Email support

Enterprise

For large organizations with unlimited needs

$ 199.99 /month
  • Unlimited contacts
  • Unlimited businesses
  • All add-ons included
  • 24/7 phone support
  • Custom integrations
  • Dedicated account manager
can show a Monthly/Yearly toggle when the attribute show_billing_toggle="yes" is set (attribute default is no). Buttons use data-billing="monthly" / data-billing="yearly" and swap displayed amounts.

Dollar amounts in code templates are examples only; live Stripe prices and network plan settings control what customers are charged.

Evidence: billing toggle and yearly amount markup in sj-crm-stripe.php render_pricing_shortcode; plan admin fields for price_yearly.

Was this helpful?
+

Can I use a Stripe promotion or discount code when I upgrade?

0

Classification: Areas: Settings, Frontend · Audience: Customer · Visibility: Public (draft) · Verified: sj-crm-stripe 1.0.34 · 2026-09-23

Yes. SJ CRM Stripe Checkout sessions for signup and upgrade set allow_promotion_codes to true, so Stripe’s Checkout page can show an “Add promotion code” field when the network has valid Stripe coupons/promotion codes.

Enter the code on the Stripe-hosted Checkout page—not inside the CRM admin form. If the field is missing, the promotion may be inactive, restricted to certain products, or not created in the connected Stripe account. Codes and discounts are configured in Stripe; SJ CRM only enables the Checkout option.

Evidence: Checkout session arrays in sj-crm-stripe.php with allow_promotion_codes => true (signup and upgrade flows).

Was this helpful?
+

How do I pay for courses with Paystack?

0

Classification: Areas: Payments · Audience: Student · Visibility: Public (draft) · Verified: sj-learn-paystack · 2026-09-24

Paystack is available as a LearnPress gateway (PaystackGateway) with email + redirect checkout.

Evidence: PaystackGateway.php.

Was this helpful?
+

What happens when a marketplace purchase is refunded?

0

Classification: Areas: Marketplace · Audience: Student, Teacher · Visibility: Public (draft) · Verified: sj-learn-marketplace · 2026-09-24

Refunds revoke course access for the related transaction via SJLM_Refunds::revoke_access_for_transaction().

Evidence: class-sjlm-refunds.php.

Was this helpful?
+

What are course prerequisites and locked enrollment?

0

Classification: Areas: Courses · Audience: Student, Teacher · Visibility: Public (draft) · Verified: sj-learn-prerequisites-courses · 2026-09-24

Prerequisite courses must be finished before enrollment unlocks, via get_prerequisite_courses().

Evidence: prerequisites courses add-on.

Was this helpful?
+

Can I sign up a child on the first free lesson form?

0

Classification: Areas: Booking, Network · Audience: Parent · Visibility: Public (draft) · Verified: sj-booking-learn · 2026-09-24

Yes. The first-lesson guest flow can create a parent login and call SJL_Managed_Learners::create_and_link_learner() when booking for someone else.

Evidence: class-sjbk-learn-first-lesson.php.

Was this helpful?
+

Why does signup say my company name is already taken?

0

Classification: Areas: Frontend · Audience: Customer · Visibility: Public (draft) · Verified: sj-crm-signup 1.3.16 · 2026-09-23

During signup, SJ CRM checks the company display name—not only the subdomain. company_name_is_taken() normalizes the name (via normalize_company_name()) and compares it to existing sites’ stored sj_crm_company_name values.

If another workspace already uses the same normalized company name, signup blocks with a “taken” style error even when a different subdomain is free. Choose a distinct legal/trade name (or a clear qualifier), or use a subdomain that matches your unique brand if the company field is colliding.

This is separate from reserved-subdomain rejection documented elsewhere.

Evidence: company_name_is_taken / normalize_company_name in sj-crm-signup.php.

Was this helpful?
+

What are SJ Learn student (s-*) and teacher (t-*) spaces?

0

Classification: Areas: Frontend, Network · Audience: Student, Teacher · Visibility: Public (draft) · Verified: sj-learn-network 1.13.67 · 2026-09-24

SJ Learn uses separate multisite blogs for roles:

  • Student space — path style /s-{login}/, linked via user meta sjl_student_site_id.
  • Teacher space — path style /t-{login}/, linked via sjl_teacher_site_id.

Dual-role users often have both site IDs. Student UI and teacher UI are intentionally separate so learners do not see teacher tools on the student blog (and vice versa).

Evidence: provisioner meta writes; space docs in network plugin; SJL_Space_Switcher dual-site comments.

Was this helpful?
+

How does SJ Speak pronunciation work when there is no teacher recording?

0

Classification: Areas: Lessons, Frontend · Audience: Student, Teacher · Visibility: Public (draft) · Verified: sj-speak 1.3.31 · 2026-09-24

When a word has no custom teacher audio file, SJ Speak can still pronounce it using fallback playback (browser/SayIt-style voices) depending on play-button mode.

Modes in public settings include variants such as tooltip_fallback and tooltip_fallback_click: the orange/SayIt control may hide beside the word while playback remains available inside the tooltip card. “No voice / no recording yet” in teacher workflows usually means fallback voice is expected—not a silent/hidden play button unless the teacher explicitly chose a hide mode.

Evidence: play button mode switch in class-sj-speak-public.php (tooltip_fallback cases).

Was this helpful?
+

What are managed learners and linked accounts?

0

Classification: Areas: Frontend, Network · Audience: Parent, Student, Teacher · Visibility: Public (draft) · Verified: sj-learn-network · 2026-09-24

A managing account can link one or more managed learners (for example a parent booking for a child). Linked learner rows come from SJL_Managed_Learners::get_linked_learners().

Managed learners keep separate student spaces while the parent chooses who a booking is for.

Evidence: class-sjl-managed-learners.php.

Was this helpful?
+

How do I unsubscribe from an SJ Learn email?

0

Classification: Areas: Frontend, Messages · Audience: Student, Teacher, Parent · Visibility: Public (draft) · Verified: sj-email-studio · 2026-09-24

Campaign emails include a signed one-click unsubscribe link (sjes_action=unsubscribe). Recipients do not need to be logged in.

Evidence: SJES_Tracking.

Was this helpful?
+

What is the Google One Tap prompt on SJ Learn pages?

0

Classification: Areas: Frontend, Security · Audience: Student, Teacher, Parent · Visibility: Public (draft) · Verified: sj-login · 2026-09-24

When Google One Tap is enabled (one_tap_enabled), logged-out visitors may see a floating Google account card without clicking Sign in first.

Evidence: SJ_Login One Tap setting.

Was this helpful?
+

How do I view my login history?

0

Classification: Areas: Frontend, Security · Audience: Student, Teacher · Visibility: Public (draft) · Verified: sj-user-data · 2026-09-24

Use [sj_login_history] and [sj_last_login] on profile or account pages.

Evidence: SJ_User_Data_Frontend.

Was this helpful?
+

Why does a loading bar appear when I change lessons?

0

Classification: Areas: Frontend, Lessons · Audience: Student, Teacher · Visibility: Public (draft) · Verified: sj-page-loader · 2026-09-24

SJ Page Loader shows a perceived-loading bar for full-page navigations and in-course lesson changes. It signals progress; it does not make pages faster.

Evidence: SJ_Page_LoaderPlugin.

Was this helpful?
+

Where do I manage tables from my teacher profile?

0

Classification: Areas: Frontend · Audience: Teacher · Visibility: Public (draft) · Verified: sj-tables · 2026-09-24

Teacher spaces expose Profile → Table Manager (tab=table-manager) for create/edit/archive.

Evidence: SJ_Tables_Profile_Tab.

Was this helpful?
+

What does the SJ Theme demo switcher do?

0

Classification: Areas: Frontend · Audience: Visitor · Visibility: Public (draft) · Verified: sj-theme-demo · 2026-09-24

Visitors can preview industry templates without saving settings. Registration is blocked while demo mode is active.

Evidence: SJ_Theme_Demo::handle_demo_switch / render_demo_switcher.

Was this helpful?
+

What emails are sent when a booking is created or cancelled?

0

Classification: Areas: Booking, Messages · Audience: Student, Teacher · Visibility: Public (draft) · Verified: sj-booking · 2026-09-24

On create, customers get confirmation and admins get notification. Status changes (confirm/cancel) send update mail.

Evidence: SJBK_Emails.

Was this helpful?
+

When do lesson reminder emails go out?

0

Classification: Areas: Booking, Messages · Audience: Student, Teacher · Visibility: Public (draft) · Verified: sj-booking · 2026-09-24

Built-in reminders (commonly 24-hour and 1-hour) run on cron hook sjbk_process_reminders. Rules are filterable via sjbk_reminder_rules.

Evidence: SJBK_Reminders.

Was this helpful?
+

Why does my teacher booking email include a schedule link?

0

Classification: Areas: Booking, Messages · Audience: Teacher · Visibility: Public (draft) · Verified: sj-booking-learn · 2026-09-24

Teacher/admin booking mail gets a schedule-time footer and a link into the 1:1 Lessons tab.

Evidence: SJBK_Learn_Teacher_Emails::append_teacher_footer.

Was this helpful?
+

How do leftover unused minutes after a shorter booking become available?

0

Classification: Areas: Booking · Audience: Teacher, Student · Visibility: Public (draft) · Verified: sj-booking · 2026-09-24

After a shorter booking inside a longer window, remaining time can be offered again, minus the service buffer (buffer_min).

Evidence: SJBK_Availability::get_slots.

Was this helpful?
+

How do I see who opened a booking link but did not finish?

0

Classification: Areas: Booking, Frontend · Audience: Teacher · Visibility: Public (draft) · Verified: sj-booking-learn · 2026-09-24

Schedule attempt tracking shows funnel stages (link opened → hold → sign-in → submitted) with about 30 days of visible history.

Evidence: SJBK_Learn_Schedule_Attempts.

Was this helpful?
+

How do I see my lesson cancellation stats?

0

Classification: Areas: Booking, Frontend · Audience: Teacher · Visibility: Public (draft) · Verified: sj-booking-learn · 2026-09-24

The teacher request/schedule panel can show student vs teacher cancellations against completed and total bookings.

Evidence: SJBK_Learn_Cancellation_Stats.

Was this helpful?
+

Why can’t students open wp-admin on their site?

0

Classification: Areas: Frontend, Security · Audience: Student, Teacher · Visibility: Public (draft) · Verified: sj-learn-network · 2026-09-24

Student subsites stay frontend-only. Teacher wp-admin access is limited to course/lesson editing needs.

Evidence: SJL_Frontend_Access.

Was this helpful?
+

Why does signup ask me to complete a security check?

0

Classification: Areas: Frontend, Security · Audience: Student, Parent · Visibility: Public (draft) · Verified: sj-learn-network · 2026-09-24

Network-wide Google reCAPTCHA protects first-lesson and other public forms. The secret stays server-side.

Evidence: SJL_Recaptcha::verify.

Was this helpful?
+

Why does an unpublished course show a friendly page instead of a 404?

0

Classification: Areas: Courses, Frontend · Audience: Student, Teacher · Visibility: Public (draft) · Verified: sj-learn-network · 2026-09-24

Draft, pending, or rejected courses render an unavailable message instead of a hard 404.

Evidence: SJL_Course_Unavailable.

Was this helpful?
+

Why does the course editor look different from the lesson editor?

0

Classification: Areas: Courses, Backend · Audience: Teacher · Visibility: Public (draft) · Verified: sj-learn-network · 2026-09-24

Courses and quizzes keep the classic editor so curriculum/pricing metaboxes stay visible. Lessons use a locked-down block allowlist.

Evidence: SJL_Teacher_Course_Editor / SJL_Teacher_Lesson_Editor.

Was this helpful?
+

Where can I see every shortcode I can put on teacher pages?

0

Classification: Areas: Frontend · Audience: Teacher · Visibility: Public (draft) · Verified: sj-learn-network · 2026-09-24

Teachers who avoid wp-admin can open a frontend reference page powered by [sjl_teacher_shortcodes].

Evidence: SJL_Teacher_Shortcodes.

Was this helpful?
+

Why did a your-teacher-started-a-game banner follow me around the site?

0

Classification: Areas: Frontend, Lessons · Audience: Student · Visibility: Public (draft) · Verified: sj-mini-games · 2026-09-24

If a student is not on the lobby page, a site-wide invite banner still shows a live teacher launch so the invite is not missed.

Evidence: SJMGInvite.

Was this helpful?
+

Why does each notes gadget have its own name and ID?

0

Classification: Areas: Lessons, Frontend · Audience: Teacher · Visibility: Public (draft) · Verified: sj-learn-paragraph-notes · 2026-09-24

Each lesson gadget gets a UUID/label so notes stay attached when the block is moved or duplicated.

Evidence: Notes_Widget_Registry.

Was this helpful?
+

Why did this newsletter show as opened?

0

Classification: Areas: Frontend, Messages · Audience: Student, Teacher, Parent · Visibility: Public (draft) · Verified: sj-email-studio · 2026-09-24

Email Studio records opens with a signed 1×1 pixel request (sjes_action=open). A unique open event is stored when the tracker loads.

Evidence: SJES_Tracking::handle_open().

Was this helpful?
+

What happens when I click a link in an Email Studio message?

0

Classification: Areas: Frontend, Messages · Audience: Student, Teacher, Parent · Visibility: Public (draft) · Verified: sj-email-studio · 2026-09-24

Campaign links are rewritten to signed redirects (sjes_action=click). A unique click is recorded, then you are sent to the original HTTPS URL.

Evidence: SJES_Tracking::rewrite_links() / handle_click().

Was this helpful?
+

Why does Google Sign-In appear on WooCommerce My Account or checkout?

0

Classification: Areas: Frontend, Security · Audience: Student, Teacher, Parent · Visibility: Public (draft) · Verified: sj-login · 2026-09-24

When WooCommerce integration is enabled, the Google button is injected on shop login, register, and checkout login forms.

Evidence: SJ_Login_Frontend WooCommerce form hooks.

Was this helpful?
+

Does signing in with Google link to my existing SJ Learn account?

0

Classification: Areas: Frontend, Security · Audience: Student, Teacher, Parent · Visibility: Public (draft) · Verified: sj-login · 2026-09-24

If the Google email matches an existing WordPress user, you are logged into that account and google_id is stored once. A second account is not created.

Evidence: SJ_Login_Google::login_existing_user().

Was this helpful?
+

Why did Google create a WooCommerce Customer instead of a student?

0

Classification: Areas: Frontend, Security · Audience: Student, Parent · Visibility: Public (draft) · Verified: sj-login · 2026-09-24

New Google registrations can receive the WooCommerce Customer role when WooCommerce is active, following store registration settings.

Evidence: SJ_Login::is_registration_allowed() role assignment.

Was this helpful?
+

What is erased when I request deletion of my activity data?

0

Classification: Areas: Frontend, Security · Audience: Student, Teacher · Visibility: Public (draft) · Verified: sj-user-data · 2026-09-24

Erase Personal Data removes this plugin’s activity rows for that email. It does not delete the WordPress user account by itself.

Evidence: SJ_User_Data_Frontend::register_data_eraser().

Was this helpful?
+

What is the difference between slot booking and range booking?

0

Classification: Areas: Booking, Frontend · Audience: Teacher, Student · Visibility: Public (draft) · Verified: sj-booking · 2026-09-24

A service is either fixed slots ([sj_booking_slots]) or a start–end range ([sj_booking_range]). The widget and services API expose that mode.

Evidence: SJBK_Services::MODE_SLOTS / MODE_RANGE.

Was this helpful?
+

Why can’t visitors book one of my services online?

0

Classification: Areas: Booking, Frontend · Audience: Teacher, Student · Visibility: Public (draft) · Verified: sj-booking · 2026-09-24

The front-end widget only lists services marked bookable online, and only while online booking is enabled in settings.

Evidence: SJBK_Services::is_publicly_bookable().

Was this helpful?
+

What is the visitor policy checkbox on the booking form?

0

Classification: Areas: Booking, Frontend · Audience: Teacher, Student · Visibility: Public (draft) · Verified: sj-booking · 2026-09-24

Teachers can require visitors to accept a custom visitor-policy statement before a booking is submitted.

Evidence: SJBK_Admin visitor_policy_text.

Was this helpful?
+

Why did my reservation expire before I finished booking?

0

Classification: Areas: Booking, Frontend · Audience: Student, Parent · Visibility: Public (draft) · Verified: sj-booking-learn · 2026-09-24

Choosing a time creates a short-lived hold. If it expires (sjbk_hold_expired / missing hold), you must pick a time again.

Evidence: SJBK_Learn_Managed_Booking hold errors.

Was this helpful?
+

Why can’t I change the learner after I reserved a time?

0

Classification: Areas: Booking, Frontend · Audience: Parent, Student · Visibility: Public (draft) · Verified: sj-booking-learn · 2026-09-24

A hold is bound to one managed learner. Switching Booking for after the hold requires a new time selection (sjbk_hold_bound).

Evidence: SJBK_Learn_Managed_Booking::bind_hold().

Was this helpful?
+

What title appears on my Google or Outlook lesson event?

0

Classification: Areas: Booking, Integrations · Audience: Teacher, Student · Visibility: Public (draft) · Verified: sj-booking-calendar · 2026-09-24

Calendar events are titled like “{course or service} — {student}”, with a longer description that can include welcome text, phone, notes, and booking ID.

Evidence: SJBK_Calendar_Event_Details::get_title().

Was this helpful?
+

Is Outlook calendar connect different from Google?

0

Classification: Areas: Booking, Integrations · Audience: Teacher · Visibility: Public (draft) · Verified: sj-booking-calendar · 2026-09-24

Outlook uses Microsoft Graph OAuth (tenant common, Calendars.ReadWrite). Google uses its own OAuth client. Both push the same event title/body helpers.

Evidence: SJBK_Calendar_Outlook / SJBK_Calendar_Google.

Was this helpful?
+

When should I use /s-myname/ versus /t-myname/?

0

Classification: Areas: Frontend, Network · Audience: Student, Teacher · Visibility: Public (draft) · Verified: sj-learn-network · 2026-09-24

/s-{login}/ is the Learning Space; /t-{login}/ is the Teaching Space. They are different blogs, not two views of one site.

Evidence: SJL_Frontend_Access::is_student_subsite() / is_teacher_subsite().

Was this helpful?
+

Why was I sent away from Learning on my teacher site?

0

Classification: Areas: Frontend, Network · Audience: Teacher · Visibility: Public (draft) · Verified: sj-learn-network · 2026-09-24

Dual-role users with two blogs cannot open My Courses on /t-*. Learning tabs redirect to the student blog.

Evidence: SJL_Profile_Tabs::maybe_redirect_cross_blog_profile().

Was this helpful?
+

What do pending, approved, and rejected mean on Become a Teacher?

0

Classification: Areas: Frontend, Network · Audience: Teacher, Student · Visibility: Public (draft) · Verified: sj-learn-network · 2026-09-24

The application form shows pending review, approved (Teaching unlocked), or rejected (you may apply again). Only one application per day is accepted.

Evidence: [sjl_teacher_application] / sjl_teacher_status.

Was this helpful?
+

Why was my approved course sent back for review?

0

Classification: Areas: Courses, Network · Audience: Teacher · Visibility: Public (draft) · Verified: sj-learn-network · 2026-09-24

A large content change after approval can reset the course to changes-requested so it is not left live without a new review.

Evidence: SJL_Course_Approval after-edit hash check.

Was this helpful?
+

Why can’t I sign in with an old family login?

0

Classification: Areas: Frontend, Security · Audience: Parent, Student · Visibility: Public (draft) · Verified: sj-learn-network · 2026-09-24

Legacy duplicate logins are blocked (sjl_legacy_duplicate) and tell you to use the current family account email instead.

Evidence: SJL_Account_Phone.

Was this helpful?
+

What can a parent see about a child account versus a teacher?

0

Classification: Areas: Frontend, Security · Audience: Parent, Teacher · Visibility: Public (draft) · Verified: sj-learn-network · 2026-09-24

Booking-for access never grants instructor-private or learner-self tools. Teachers on /t-* use teacher access; the child on their own space uses learner-self access.

Evidence: SJL_Managed_Learner_Access stacks A/B/C.

Was this helpful?
+

Can guests still open a teacher’s public course or book pages?

0

Classification: Areas: Frontend, Network · Audience: Visitor, Teacher · Visibility: Public (draft) · Verified: sj-learn-network · 2026-09-24

Logged-out visitors can still reach teacher storefront and booking URLs. Private student blogs stay gated except login/register.

Evidence: SJL_Frontend_Access public storefront paths.

Was this helpful?
+

Why can I browse a course but not enroll or buy it?

0

Classification: Areas: Courses, Frontend · Audience: Student · Visibility: Public (draft) · Verified: sj-learn-prerequisites-courses · 2026-09-24

Prerequisites can block enroll and purchase separately from viewing the course page, and they add a dedicated enroll-button error code.

Evidence: LP_Prere_Course_Hooks enroll/purchase filters.

Was this helpful?
+

How is Match different from Memory flip?

0

Classification: Areas: Frontend, Lessons · Audience: Teacher, Student · Visibility: Public (draft) · Verified: sj-mini-games · 2026-09-24

Match is a two-column tap-pair game with streak/accuracy scoring. Memory uses flip / resolve-miss on the same room API.

Evidence: SJMGMatch_Engine; REST match-select.

Was this helpful?
+

Where do match scores and live watch come from?

0

Classification: Areas: Frontend, Lessons · Audience: Teacher, Student · Visibility: Public (draft) · Verified: sj-mini-games · 2026-09-24

Scores (correct, wrong, streak, stars) live on the room state. Teachers with watch permission can list live sessions and see running scores.

Evidence: Match_Engine score object; REST /live / /live-sessions.

Was this helpful?
+

When should I use [sayit], [sayit_player], or [sayit_mp3_player]?

0

Classification: Areas: Lessons, Frontend · Audience: Teacher · Visibility: Public (draft) · Verified: sj-speak · 2026-09-24

Three SayIt shortcodes remain for inline word, player, and MP3 player. SJ Speak can dequeue the old SayIt script so playback stays on Speak audio.

Evidence: SJ_Speak_Public shortcodes / enable_sayit_shortcodes.

Was this helpful?
+

Why do some lesson words play only after the page loads?

0

Classification: Areas: Lessons, Frontend · Audience: Teacher, Student · Visibility: Public (draft) · Verified: sj-speak · 2026-09-24

Shortcodes missing data-mp3-file ask the server in bulk (sj_speak_resolve_audio_bulk) to resolve each word’s audio URL before play buttons work.

Evidence: Speak bulk audio resolve AJAX.

Was this helpful?
+

Why do instructor course or student counts look wrong on the directory?

0

Classification: Areas: Frontend, Marketplace · Audience: Teacher · Visibility: Public (draft) · Verified: sj-learn-marketplace · 2026-09-24

LearnPress counts only main-site courses. Marketplace replaces those numbers with network index totals from sjlm_courses.

Evidence: SJLM_Instructor_Stats.

Was this helpful?
+

What happens after I return from Paystack?

0

Classification: Areas: Courses, Billing · Audience: Student · Visibility: Public (draft) · Verified: sj-learn-paystack · 2026-09-24

The return URL carries a reference. The plugin verifies it against Paystack’s API before marking the LearnPress order paid.

Evidence: PaystackGateway::verify_payment().

Was this helpful?
+

How does the wishlist heart work without reloading the page?

0

Classification: Areas: Courses, Frontend · Audience: Student · Visibility: Public (draft) · Verified: sj-learn-wishlist · 2026-09-24

The button reads and toggles saved courses through wishlist REST routes (learnpress/v1/wishlist / toggle) instead of a full page post.

Evidence: LP_Jwt_Wishlist_V1_Controller.

Was this helpful?
+

What does service capacity control?

0

Classification: Areas: Booking, Settings · Audience: Teacher · Visibility: Public (draft) · Verified: sj-booking · 2026-09-24

Capacity is how many concurrent bookings can share one slot (default 1).

Evidence: SJBK_Services capacity field.

Was this helpful?
+

What do appointment statuses mean?

0

Classification: Areas: Booking, Frontend · Audience: Teacher, Student · Visibility: Public (draft) · Verified: sj-booking · 2026-09-24

A booking moves through pending → confirmed → completed, or cancelled / no-show.

Evidence: SJBK_Appointments::STATUSES.

Was this helpful?
+

Why is a new booking pending instead of confirmed?

0

Classification: Areas: Booking, Settings · Audience: Teacher, Student · Visibility: Public (draft) · Verified: sj-booking · 2026-09-24

The site default status (default_status) decides whether new web bookings start pending or confirmed.

Evidence: SJBK_Settings default_status.

Was this helpful?
+

Can I withdraw a lesson request I sent?

0

Classification: Areas: Booking, Frontend · Audience: Student, Parent · Visibility: Public (draft) · Verified: sj-booking-learn · 2026-09-24

Students can withdraw a still-pending request. Confirmed lessons cancel instead of withdraw.

Evidence: SJBK_Learn_Student::ajax_cancel_lesson().

Was this helpful?
+

Why did an outside calendar event block a slot?

0

Classification: Areas: Booking, Integrations · Audience: Teacher, Student · Visibility: Public (draft) · Verified: sj-booking-calendar · 2026-09-24

Busy times from connected calendars become blocked windows, with a pad (commonly 30 minutes) kept free on each side.

Evidence: SJBK_Calendar_Sync::merge_calendar_blocks.

Was this helpful?
+

What happens after too many failed logins?

0

Classification: Areas: Frontend, Security · Audience: Student, Teacher · Visibility: Public (draft) · Verified: sj-user-data · 2026-09-24

Repeated failures can lock the account (max_login_attempts / lockout_duration) and optionally email a new-device alert.

Evidence: User Data lockout settings.

Was this helpful?
+

Why did Google sign-in say the security check failed?

0

Classification: Areas: Frontend, Security · Audience: Student, Teacher, Parent · Visibility: Public (draft) · Verified: sj-login · 2026-09-24

Cached pages can hold a stale nonce. The Google button refreshes it (sj_login_refresh_nonce) before verifying the token.

Evidence: SJ_Login_Google::refresh_nonce().

Was this helpful?
+

What does Student online in Gadgets mean?

0

Classification: Areas: Frontend, Lessons · Audience: Teacher · Visibility: Public (draft) · Verified: sj-learn-network · 2026-09-24

The selected student is Online, Away, or offline from lesson-dock presence pings (cleared on logout).

Evidence: SJL_Student_Presence gadget / ping AJAX.

Was this helpful?
+

When can the host start a Memory game?

0

Classification: Areas: Frontend, Lessons · Audience: Teacher, Student · Visibility: Public (draft) · Verified: sj-mini-games · 2026-09-24

Only the host token can start after the guest has joined.

Evidence: REST POST /sj-memory-games/v1/rooms/{code}/start.

Was this helpful?
+

Who can edit a game deck?

0

Classification: Areas: Frontend, Lessons · Audience: Teacher · Visibility: Public (draft) · Verified: sj-mini-games · 2026-09-24

Decks are owned by the creating teacher; listing and edits follow that owner_id.

Evidence: SJMGDatabase decks / REST /decks.

Was this helpful?
+

How are Sea Battle packs different from Memory decks?

0

Classification: Areas: Frontend, Lessons · Audience: Teacher, Student · Visibility: Public (draft) · Verified: sj-mini-games · 2026-09-24

Sea Battle uses question packs (built-in or Game Deck words→pictures), not Memory pair boards.

Evidence: SJMGSea_Packs.

Was this helpful?
+

How is a lesson-block rating scored and sorted?

0

Classification: Areas: Lessons, Frontend · Audience: Teacher · Visibility: Public (draft) · Verified: sj-learn-paragraph-notes · 2026-09-24

Fluency, Grammar, Vocabulary, and Pronunciation (1–5) average into an overall score that can sort weakest- or strongest-first.

Evidence: Lesson_Ratings / sjl_rating_save.

Was this helpful?
+

Why does a course show Free or a struck-through price?

0

Classification: Areas: Frontend, Marketplace · Audience: Student · Visibility: Public (draft) · Verified: sj-learn-marketplace · 2026-09-24

Sale price undercuts list price. Zero-price courses show Free.

Evidence: Catalog card sale_price vs price.

Was this helpful?
+

What happens when a student or teacher space is created?

0

Classification: Areas: Network, Frontend · Audience: Student, Teacher · Visibility: Public (draft) · Verified: sj-learn-network · 2026-09-24

New spaces get starter pages and SJ Theme, and are kept private/not indexed for search engines.

Evidence: SJL_Provisioner::create_student_site() / create_site().

Was this helpful?
+

Why does my space use the main SJ Learn logo?

0

Classification: Areas: Network, Frontend · Audience: Teacher, Student · Visibility: Public (draft) · Verified: sj-learn-network · 2026-09-24

Student/teacher sites inherit logo and title theme mods from the main site.

Evidence: SJL_Subsite_Theme::apply_branding_from_main_site().

Was this helpful?
+

What quiz question types can I add?

0

Classification: Areas: Courses, Lessons · Audience: Teacher · Visibility: Public (draft) · Verified: sj-learn-core · 2026-09-24

Built-in types include True/False, single choice, multi choice, and fill in blanks.

Evidence: QuestionPostModel::get_types().

Was this helpful?
+

What does the eye icon on a curriculum item do?

0

Classification: Areas: Courses, Frontend · Audience: Teacher, Student · Visibility: Public (draft) · Verified: sj-learn-core · 2026-09-24

Preview lets guests open that lesson without enrolling (_lp_preview).

Evidence: curriculum preview button / has_preview().

Was this helpful?
+

How do quiz passing grade and time limit work?

0

Classification: Areas: Courses, Lessons · Audience: Teacher, Student · Visibility: Public (draft) · Verified: sj-learn-core · 2026-09-24

A quiz can require a passing percent and a duration, or run with unlimited time.

Evidence: LP_Quiz passing_grade / duration.

Was this helpful?
+

Why does the page loader appear when I change lessons?

0

Classification: Areas: Frontend, Lessons · Audience: Student, Teacher · Visibility: Public (draft) · Verified: sj-page-loader · 2026-09-24

In-course AJAX lesson changes can show the same loader as a full page load when LearnPress AJAX loading is enabled.

Evidence: lp_ajax_enabled / LearnPress content-loading events.

Was this helpful?
+

What can I style on a service card?

0

Classification: Areas: Frontend, Backend · Audience: Teacher · Visibility: Public (draft) · Verified: sj-service-cards · 2026-09-24

Each Service Card block has icon, price, and feature lines in the block editor, not only title text.

Evidence: block sj-service-cards/service-card attributes.

Was this helpful?
+

How close to a lesson can I cancel or reschedule?

0

Classification: Areas: Booking, Frontend · Audience: Teacher, Student · Visibility: Public (draft) · Verified: sj-booking · 2026-09-25

Cancel and reschedule are allowed only while still inside the customer edit notice window (hours before the start time).

Evidence: SJBK_Account::within_edit_window / customer_edit_notice_hours.

Was this helpful?
+

How do I refresh a stale booking REST nonce?

0

Classification: Areas: Booking, Frontend · Audience: Teacher, Student · Visibility: Public (draft) · Verified: sj-booking · 2026-09-25

If a cached page holds an expired nonce, the booking UI fetches a new one before the next write.

Evidence: REST GET /sjbk/v1/nonce.

Was this helpful?
+

Why was a first-lesson booking blocked by rate limits or reCAPTCHA?

0

Classification: Areas: Booking, Frontend · Audience: Student, Parent · Visibility: Public (draft) · Verified: sj-booking-learn · 2026-09-25

Public first-lesson forms are rate-limited and scored with reCAPTCHA so bots cannot flood teachers.

Evidence: RECAPTCHA_ACTION sj_first_lesson.

Was this helpful?
+

Are guest schedule pages indexed by search engines?

0

Classification: Areas: Booking, Frontend · Audience: Teacher · Visibility: Public (draft) · Verified: sj-booking-learn · 2026-09-25

Guest schedule URLs send noindex so private booking tokens do not appear in search results.

Evidence: [sjbk_guest_schedule] noindex headers.

Was this helpful?
+

Why do course booking pages use pretty slugs?

0

Classification: Areas: Booking, Courses · Audience: Teacher, Student · Visibility: Public (draft) · Verified: sj-booking-learn · 2026-09-25

Course booking URLs are rewritten to readable slugs instead of raw query IDs.

Evidence: SJBK_Learn_Course_Booking_Slug.

Was this helpful?
+

How does a booking match an existing appointment identity?

0

Classification: Areas: Booking, Frontend · Audience: Teacher, Student · Visibility: Public (draft) · Verified: sj-booking-learn · 2026-09-25

Learn matching uses email, user ID, and learner links so the same person is not stored as two customers.

Evidence: SJBK_Learn_Appointment_Identity.

Was this helpful?
+

How is the instructor resolved when a lesson is booked?

0

Classification: Areas: Booking, Frontend · Audience: Teacher, Student · Visibility: Public (draft) · Verified: sj-booking-learn · 2026-09-25

The booking looks up the teacher from the schedule, course, or assigned instructor map—not from the page author alone.

Evidence: SJBK_Learn_Instructors.

Was this helpful?
+

Why does a confirmed lesson stay confirmed until complete or no-show?

0

Classification: Areas: Booking, Frontend · Audience: Teacher, Student · Visibility: Public (draft) · Verified: sj-booking-learn · 2026-09-25

Past confirmed lessons are not auto-closed. A teacher (or complete/no-show action) must move them out of confirmed.

Evidence: Appointment status stays confirmed until complete or no_show.

Was this helpful?
+

Does rematch reuse the same room?

0

Classification: Areas: Frontend, Lessons · Audience: Teacher, Student · Visibility: Public (draft) · Verified: sj-mini-games · 2026-09-25

Rematch creates a new room code. Players must join the new room; the old code is finished.

Evidence: Rematch creates a new room (not reuse).

Was this helpful?
+

How does the lobby know a launch was joined?

0

Classification: Areas: Frontend, Lessons · Audience: Teacher, Student · Visibility: Public (draft) · Verified: sj-mini-games · 2026-09-25

The lobby polls launch joined status until the student claim succeeds or the launch expires.

Evidence: Poll launch joined status.

Was this helpful?
+

Where does the Sea Battle pack dropdown get its list?

0

Classification: Areas: Frontend, Lessons · Audience: Teacher · Visibility: Public (draft) · Verified: sj-mini-games · 2026-09-25

The dropdown lists playable packs only (built-in plus decks that qualify as Sea packs).

Evidence: list_playable.

Was this helpful?
+

Why are Sea packs missing from the Add Deck editor?

0

Classification: Areas: Frontend, Lessons · Audience: Teacher · Visibility: Public (draft) · Verified: sj-mini-games · 2026-09-25

The Add Deck editor is for Memory pair decks. Sea packs are a separate playable list and are not shown there.

Evidence: Sea packs are excluded from the Add Deck editor.

Was this helpful?
+

How is a live board state pushed to watchers?

0

Classification: Areas: Frontend, Lessons · Audience: Teacher, Student · Visibility: Public (draft) · Verified: sj-mini-games · 2026-09-25

During play the host posts the current board so Watch live can follow flips and Sea shots.

Evidence: REST POST /sj-memory-games/v1/rooms/{code}/live.

Was this helpful?
+

Who can watch live or hard-reset a room?

0

Classification: Areas: Frontend, Lessons · Audience: Teacher · Visibility: Public (draft) · Verified: sj-mini-games · 2026-09-25

Watch live and hard-reset are limited to users who pass the live-watch capability (typically the teacher on that site).

Evidence: can_watch_live.

Was this helpful?
+

What does bulk resolve Speak audio do?

0

Classification: Areas: Frontend, Lessons · Audience: Teacher · Visibility: Public (draft) · Verified: sj-speak · 2026-09-25

Bulk resolve walks terms that are missing or conflicting audio and applies the chosen recorded or fallback source.

Evidence: Speak bulk resolve audio.

Was this helpful?
+

What lesson gadget types can I add?

0

Classification: Areas: Frontend, Lessons · Audience: Teacher · Visibility: Public (draft) · Verified: sj-learn-network · 2026-09-25

Gadgets are toggle, action, or panel. Toggle stays on/off, action fires once, panel opens extra UI in the dock.

Evidence: Lesson gadget types toggle / action / panel.

Was this helpful?
+

How are notes widgets registered?

0

Classification: Areas: Frontend, Lessons · Audience: Teacher · Visibility: Public (draft) · Verified: sj-learn-paragraph-notes · 2026-09-25

Each notes widget has a UUID in the registry so the same dock item can be renamed or moved without losing saved notes.

Evidence: Notes widgets UUID registry.

Was this helpful?
+

Is there a REST API for teacher lesson notes?

0

Classification: Areas: Frontend, Lessons · Audience: Teacher · Visibility: Public (draft) · Verified: sj-learn-paragraph-notes · 2026-09-25

Teachers save and load lesson notes through a dedicated REST route scoped to that lesson and student.

Evidence: Teacher lesson notes REST.

Was this helpful?
+

What happens when I return from Stripe Connect?

0

Classification: Areas: Marketplace, Billing · Audience: Teacher · Visibility: Public (draft) · Verified: sj-learn-marketplace · 2026-09-25

The return URL refreshes Connect account status so payouts show ready or still-needed actions.

Evidence: Stripe Connect return/status refresh.

Was this helpful?
+

Does publishing a course update the marketplace catalog?

0

Classification: Areas: Frontend, Marketplace · Audience: Teacher · Visibility: Public (draft) · Verified: sj-learn-marketplace · 2026-09-25

Publishing or updating a public course writes that row into the marketplace catalog index.

Evidence: Publishing a course updates the catalog index.

Was this helpful?
+

How does marketplace catalog search pagination work?

0

Classification: Areas: Frontend, Marketplace · Audience: Student, Teacher · Visibility: Public (draft) · Verified: sj-learn-marketplace · 2026-09-25

Search and next-page load more catalog cards over AJAX without a full page reload.

Evidence: Catalog search pagination AJAX.

Was this helpful?
+

Why did a course price look wrong after I saved it?

0

Classification: Areas: Courses, Marketplace · Audience: Teacher · Visibility: Public (draft) · Verified: sj-learn-marketplace · 2026-09-25

After an AJAX price save, a repair pass rewrites catalog/list price so sale and Free states stay consistent.

Evidence: Price repair after AJAX price save.

Was this helpful?
+

Does the Woo cart show the certificate title and image?

0

Classification: Areas: Courses, Billing · Audience: Student · Visibility: Public (draft) · Verified: sj-learn-certificates · 2026-09-25

Yes. Paid certificate line items use the certificate title and image, not a generic product placeholder.

Evidence: Certificate title/image in Woo cart.

Was this helpful?
+

Which template does the marketplace page use?

0

Classification: Areas: Frontend, Marketplace · Audience: Teacher · Visibility: Public (draft) · Verified: sj-learn-marketplace · 2026-09-25

The marketplace page renders the catalog template (cards, search, pagination), not a generic page builder layout.

Evidence: Marketplace page uses the catalog template.

Was this helpful?
+

Why can’t a second parent register with the same phone?

0

Classification: Areas: Network, Frontend · Audience: Parent, Student · Visibility: Public (draft) · Verified: sj-learn-network · 2026-09-25

A phone already stored on another account blocks a second parent signup so household contact stays unique.

Evidence: Duplicate phone blocks a second parent.

Was this helpful?
+

Why can’t a legacy_duplicate account log in?

0

Classification: Areas: Network, Security · Audience: Student, Parent · Visibility: Public (draft) · Verified: sj-learn-network · 2026-09-25

Accounts marked legacy_duplicate are blocked from login so the surviving household account is used.

Evidence: legacy_duplicate cannot log in.

Was this helpful?
+

Does SJ Learn remember Learning vs Teaching space?

0

Classification: Areas: Network, Frontend · Audience: Student, Teacher · Visibility: Public (draft) · Verified: sj-learn-network · 2026-09-25

After you switch, the last Learning or Teaching space is remembered for the next visit.

Evidence: Remember last Learning vs Teaching space.

Was this helpful?
+

Why did Gutenberg return 403 for a teacher?

0

Classification: Areas: Courses, Backend · Audience: Teacher · Visibility: Public (draft) · Verified: sj-learn-core · 2026-09-25

Teachers can hit a REST capability gap in the block editor. A caps shim grants the editor routes they need.

Evidence: Teacher Gutenberg 403 REST caps shim.

Was this helpful?
+

When do Assignment and H5P items appear in the curriculum?

0

Classification: Areas: Courses, Lessons · Audience: Teacher · Visibility: Public (draft) · Verified: sj-learn-core · 2026-09-25

Assignment and H5P curriculum items are offered only when those add-ons are active.

Evidence: Assignment/H5P curriculum items if add-ons are active.

Was this helpful?
+

Is the public wishlist REST readable?

0

Classification: Areas: Frontend, Courses · Audience: Student · Visibility: Public (draft) · Verified: sj-learn-wishlist · 2026-09-25

Wishlist list endpoints can be read for public wishlists; writes still require the owning user.

Evidence: Public wishlist REST is readable.

Was this helpful?
+

Why are collection cards cropped?

0

Classification: Areas: Frontend, Courses · Audience: Teacher, Student · Visibility: Public (draft) · Verified: sj-learn-collections · 2026-09-25

Collection cards use a hard crop of 600×400 so the grid stays even regardless of the original image.

Evidence: Collection card hard-cropped 600×400.

Was this helpful?
+

Why was a message flagged for phone or email?

0

Classification: Areas: Frontend, Messages · Audience: Teacher, Student · Visibility: Public (draft) · Verified: sj-learn-network · 2026-09-25

Messages that include a phone number or email can be flagged so contact details stay on-platform until staff review.

Evidence: Messages with phone/email flagged.

Was this helpful?
+

What does the course content scanner check before submit?

0

Classification: Areas: Courses, Backend · Audience: Teacher · Visibility: Public (draft) · Verified: sj-learn-core · 2026-09-25

Before publish/submit, the scanner looks for blocked contact details or policy issues in course content.

Evidence: Course content scanner before submit.

Was this helpful?
+

Why do account menu items differ by role or space?

0

Classification: Areas: Network, Frontend · Audience: Teacher, Student · Visibility: Public (draft) · Verified: sj-learn-network · 2026-09-25

Account menus are built per role and Learning vs Teaching space, so students do not see teacher-only items.

Evidence: Account menu items per role/space.

Was this helpful?
+

What is Site Setup after a space is provisioned?

0

Classification: Areas: Network, Frontend · Audience: Teacher, Student · Visibility: Public (draft) · Verified: sj-learn-network · 2026-09-25

After a student or teacher space is created, Site Setup finishes starter pages, menus, and theme defaults.

Evidence: Site Setup after space provision.

Was this helpful?
+

Why do lesson REST responses omit notes shortcodes?

0

Classification: Areas: Frontend, Lessons · Audience: Teacher, Student · Visibility: Public (draft) · Verified: sj-learn-core · 2026-09-25

Lesson REST content strips notes dock shortcodes so AJAX lesson loads do not render teacher-only widgets in the main HTML.

Evidence: Lesson REST strips notes shortcodes.

Was this helpful?
+

What’s the Items module for?

0

Tracks physical things: equipment, inventory, tools, hardware.

Was this helpful?
+

What’s the Rentals module for?

0

Tracks rental properties and bookings linked to contacts over date ranges.

Was this helpful?
+

What’s the difference between contacts and businesses?

0

Contacts are people. Businesses are companies or organizations. They can have many contacts attached.

Was this helpful?
+

What’s the difference between tags and categories?

0

Categories are structured — a contact belongs to one category at a time. Tags are loose and searchable.

Was this helpful?
+

What is SJ CRM and who is it for?

1
SJ CRM

SJ CRM is a contact and business management tool built for small businesses, freelancers, and solo operators who need to keep track of people, jobs, and money without paying enterprise prices or sitting through training videos.

Was this helpful?
+

Can I import my existing contacts from another system?

0
SJ CRM

Yes. Go to SJ CRM → Export/Import and upload a CSV file. The importer will let you map your CSV columns to SJ CRM fields.

Was this helpful?
+

How much does SJ CRM cost?

0
SJ CRM

Pricing is shown on the Pricing page. Plans are charged monthly or annually, with annual being cheaper per month.

Early Access subscribers keep their original price for life — if pricing ever changes, your rate doesn’t change with it.

Was this helpful?
+

How do I cancel my subscription?

0
SJ CRM

Open your account menu and click Subscription. From there, click Manage Billing to open the secure customer portal where you can cancel any time.

If you cancel, your account stays active until the end of the period you’ve already paid for. You can export all your data before it ends — nothing is held hostage.

Was this helpful?
+

Is there a free trial?

0
SJ CRM

Instead of a free trial, SJ CRM has a 30-day money-back guarantee. Sign up, use it for real, and if it’s not right for you within the first 30 days, email support@sjnotebook.com for a full refund. No paperwork, no questions designed to talk you out of it.

This way you get to use the actual product on real data — not a stripped-down trial version.

Was this helpful?
+

Can I cancel my subscription anytime?

0
SJ CRM

Yes. Open Subscription from your sidebar and click Manage Billing to open the secure customer portal. Cancel any time with one click.

If you cancel, your account stays active until the end of the period you’ve already paid for. You can export all your data before then — nothing is held hostage.

Was this helpful?
+

What payment methods do you accept?

0
SJ CRM

All major credit and debit cards (Visa, MasterCard, American Express, Discover). Payment processing is handled by Stripe — your full card number never touches our servers.

Was this helpful?
+

How do I update my credit card?

0
SJ CRM

Open Subscription from your sidebar, click Manage Billing, and update your payment method in the Stripe customer portal.

If your card is about to expire, Stripe usually sends you a reminder email a few days ahead.

Was this helpful?
+

Why was my payment declined?

0
SJ CRM

The most common reasons:

  • The card has expired or was reissued with a new number.
  • The billing address on file doesn’t match what your bank has.
  • Your bank flagged the charge as suspicious (often happens for first-time international charges).
  • The card hit its limit.

The fastest fix is to call your bank, then update the card under Subscription → Manage Billing. If you’re stuck, email support@sjnotebook.com.

Was this helpful?
+

What’s the difference between contacts and businesses?

0
SJ CRM

Contacts are people. Names, emails, phone numbers, addresses.

Businesses are companies or organizations. They can have many contacts attached.

For example, Jane Smith is a contact. Smith Plumbing LLC is the business. Jane is linked to Smith Plumbing as the owner. If Smith Plumbing also has an office manager, that person is a separate contact also linked to the same business.

Was this helpful?
+

Can a contact be linked to more than one business?

0
SJ CRM

Yes. Link a contact to as many businesses as makes sense.

Was this helpful?
+

What’s the difference between tags and categories?

0
SJ CRM

Categories are structured — a contact belongs to one category at a time (Customer, Lead, Vendor, etc.).

Tags are loose. Stick as many tags on a contact as you want (vip, referral, holiday-card, prefers-text, etc.). Tags are flexible and searchable.

Use categories for the big picture. Use tags for the messy details that don’t fit a clean hierarchy.

Was this helpful?
+

How do I search across everything in my CRM?

0
SJ CRM

Click Advanced Search in the sidebar. It searches across contacts, businesses, projects, items, and notes.

Was this helpful?
+

What format should my CSV file be in?

0
SJ CRM

A standard comma-separated CSV with a header row. UTF-8 recommended.

Was this helpful?
+

Can I export all my data?

0
SJ CRM

Yes, anytime. Go to Export/Import and choose what to export (CSV or JSON).

Was this helpful?
+

Where is my data stored?

0
SJ CRM

On US-based servers (Namecheap, Inc.) with HTTPS encryption in transit, password hashing at rest, and daily backups.

Each customer has their own isolated data — one customer can never see another customer’s contacts, businesses, or anything else.

Was this helpful?
+

Will my data be sold or used to train AI?

0
SJ CRM

No. Your data is never sold, mined, or used to train AI models.

Was this helpful?
+

How often is my data backed up?

0
SJ CRM

Daily automated backups with 30 days of history.

Was this helpful?
+

What happens to my data if I cancel?

0
SJ CRM

Account stays active until paid period ends. Data retained 30 days after cancellation, then deleted.

Was this helpful?
+

Can I have multiple users on one account?

0
SJ CRM

Multi-user support depends on your plan. Solo plans are for one user. Team plans add additional seats. See the Pricing page for current limits.

Was this helpful?
+

How do I change my password?

0
SJ CRM

Click your name in the top-right corner of any screen, then Edit Profile. Scroll to New Password, click Generate Password (or type your own), and click Update Profile.

Use a unique password — not one you reuse on other sites.

Was this helpful?
+

How do I update my email address?

0
SJ CRM

Click your name → Edit Profile → update Email → confirm via email link.

Was this helpful?
+

What if I forgot my password?

0
SJ CRM

On the login page, click Lost your password? and enter your email or username. You’ll get a reset link by email within a few minutes.

If the email doesn’t arrive: check spam, then check that you’re using the email address associated with your CRM account (not a different one).

Was this helpful?
+

Does SJ CRM work on mobile?

0
SJ CRM

Yes in modern mobile browsers. Native apps in development.

Was this helpful?
+

Is there a desktop app?

0
SJ CRM

A native desktop app for Windows, Mac, and Linux is in active development — same idea as the mobile apps: distraction-free, offline-capable, syncs when you’re back online.

For now, the web app works on every desktop browser.

Was this helpful?
+

What browsers are supported?

0
SJ CRM

Modern browsers updated within the last 2 years. Internet Explorer is not supported.

Was this helpful?
+

How do I report a bug?

0
SJ CRM

Email support@sjnotebook.com with steps, expected vs actual, URL, browser/OS, screenshot.

Was this helpful?
+

How do I request a feature?

0
SJ CRM

Email support@sjnotebook.com describing what you want to accomplish.

Was this helpful?
+

How fast is support?

0
SJ CRM

Usually within one business day; urgent issues often same-day.

Was this helpful?
+

What’s the Items module for?

0
SJ CRM

Items tracks physical things: equipment, inventory, tools, hardware. Each item can have a name, serial number, location, condition, purchase date, and notes.

Useful for: tracking equipment loaned to clients, managing tool inventory across job sites, keeping a master list of company assets.

Was this helpful?
+

What are Health Profiles for?

0
SJ CRM

Health Profiles store medical and care information for contacts: medical history, current medications, allergies, emergency contacts, doctor info.

Useful for: caregivers managing aging parents, in-home care providers, schools tracking student health forms, anyone who needs medical context attached to a person.

Privacy note: Health information is sensitive. SJ CRM is not a HIPAA-covered platform. Don’t store regulated PHI for clinical use.

Was this helpful?
+

What’s the Rentals module for?

0
SJ CRM

Rentals tracks rental properties and bookings. Each property has a name, address, amenities, and notes. Bookings link a contact to a property over a date range.

Useful for: short-term rental hosts, equipment rental businesses, vacation home managers, anything where you’re scheduling someone into a thing for a period of time.

Was this helpful?