Summary
Submitting a Neve Pro Personal key in Otter Pro produces “invalid license provided.” Expected behavior is an activation result that distinguishes an otherwise valid Neve license from a key whose plan does not include Otter Pro. The generic invalid-key result obscures the plan restriction and prevents users from understanding why activation was rejected.
Customer context
- Product / area: Otter Pro license activation response
- Version: Customer version not provided; inspected Otter Pro source is 3.2.3
- Environment: WordPress with Neve Pro Personal and Otter Pro installed
- Integration / third party: ThemeIsle license validation
- Reported error / symptom: “Error: invalid license provided” after submitting a Neve Pro Personal key
- Impact: Users cannot distinguish plan ineligibility from an invalid or mistyped key
Reproduction notes
- Install and activate Otter Pro with Neve Pro Personal present.
- Enter a valid Neve Pro Personal license key in the Otter Pro activation field.
- Select
Activate.
- The customer reports “Error: invalid license provided”; support confirmed that Personal is ineligible and that the message does not explain the restriction. This exact response was not reproduced locally because no test license or licensing service fixture was available.
Diagnosis
Conclusion
The reported messaging defect is confirmed by the runtime report and the staff determination that the error does not explain the Agency-only restriction. Repository inspection shows that Otter forwards licensing errors to the dashboard without adding product-plan context. The exact “invalid license provided” text is not defined in the available checkout, so its upstream SDK or service origin remains an inference.
Where this likely occurs
- User-visible surface: snackbar response after submitting a key in the Otter Pro license panel.
src/dashboard/components/LicenseField.js — LicenseField::onSaveLicense() lines 46–68 displays res.message directly for unsuccessful activation responses.
plugins/otter-pro/inc/server/class-dashboard-server.php — Dashboard_Server::toggle_license() lines 124–151 invokes themeisle_sdk_license_process_otter and returns a WP_Error message directly to the client.
plugins/otter-pro/inc/server/class-dashboard-server.php — Dashboard_Server::toggle_license() lines 154–163 supplies only generic success handling after the licensing filter completes.
Engineering notes
The exact error string was absent from the Otter repository, and the ThemeIsle SDK dependency source was not present in the workspace. The inspected Otter path nevertheless passes the upstream message unchanged through REST and then through the dashboard notice. This supports the observed generic response but does not establish whether the SDK, licensing service, or Otter integration first classifies the eligible product and plan.
Test coverage status
No relevant unit, integration, or e2e coverage for toggle_license, Neve plan-ineligible keys, or activation error presentation was found during inspection. Existing e2e bootstrap references the real licensing filter chain but no matching assertion was located.
What to verify or explore next
- May be worth reproducing activation with valid Neve Personal, Business, and Agency keys against the same licensing environment.
- May be worth capturing the raw result from
themeisle_sdk_license_process_otter for a plan-ineligible but otherwise valid Neve key.
- If the SDK source is available in the release artifact, checking the handler registered for
themeisle_sdk_license_process_otter may identify where the generic classification originates.
- May be worth comparing malformed, expired, product-mismatched, and plan-ineligible key responses to confirm their current distinctions.
Unknowns / follow-up
- The exact SDK or service component producing “invalid license provided” was not available in the workspace.
- The customer’s exact Otter Pro, Neve Pro, and licensing SDK versions are unknown.
Confidence
Confidence: 90/100
The current Otter 3.2.3 source contains the reported unrestricted Neve Pro eligibility claim, and its activation endpoint passes SDK errors directly to the UI; the staff response independently confirms that only Agency is eligible and that the displayed error does not explain this restriction. No matching GitHub issue was found.
Source: HelpScout #3425841827
Generated by bug-report-triage (ID: bug-report-triage_6a88059c825450.33711998)
Summary
Submitting a Neve Pro Personal key in Otter Pro produces “invalid license provided.” Expected behavior is an activation result that distinguishes an otherwise valid Neve license from a key whose plan does not include Otter Pro. The generic invalid-key result obscures the plan restriction and prevents users from understanding why activation was rejected.
Customer context
Reproduction notes
Activate.Diagnosis
Conclusion
The reported messaging defect is confirmed by the runtime report and the staff determination that the error does not explain the Agency-only restriction. Repository inspection shows that Otter forwards licensing errors to the dashboard without adding product-plan context. The exact “invalid license provided” text is not defined in the available checkout, so its upstream SDK or service origin remains an inference.
Where this likely occurs
src/dashboard/components/LicenseField.js—LicenseField::onSaveLicense()lines 46–68 displaysres.messagedirectly for unsuccessful activation responses.plugins/otter-pro/inc/server/class-dashboard-server.php—Dashboard_Server::toggle_license()lines 124–151 invokesthemeisle_sdk_license_process_otterand returns aWP_Errormessage directly to the client.plugins/otter-pro/inc/server/class-dashboard-server.php—Dashboard_Server::toggle_license()lines 154–163 supplies only generic success handling after the licensing filter completes.Engineering notes
The exact error string was absent from the Otter repository, and the ThemeIsle SDK dependency source was not present in the workspace. The inspected Otter path nevertheless passes the upstream message unchanged through REST and then through the dashboard notice. This supports the observed generic response but does not establish whether the SDK, licensing service, or Otter integration first classifies the eligible product and plan.
Test coverage status
No relevant unit, integration, or e2e coverage for
toggle_license, Neve plan-ineligible keys, or activation error presentation was found during inspection. Existing e2e bootstrap references the real licensing filter chain but no matching assertion was located.What to verify or explore next
themeisle_sdk_license_process_otterfor a plan-ineligible but otherwise valid Neve key.themeisle_sdk_license_process_ottermay identify where the generic classification originates.Unknowns / follow-up
Confidence
Confidence: 90/100
The current Otter 3.2.3 source contains the reported unrestricted Neve Pro eligibility claim, and its activation endpoint passes SDK errors directly to the UI; the staff response independently confirms that only Agency is eligible and that the displayed error does not explain this restriction. No matching GitHub issue was found.
Source: HelpScout #3425841827
Generated by bug-report-triage (ID: bug-report-triage_6a88059c825450.33711998)