π Bug Report β GST Reports Include Void/Cancelled Orders
GST Reports Incorrectly Include Void or Cancelled Orders in Tax Due Calculations Environment Environment: Production Module: GST Reporting / Tax Reporting Affected Components: UI Reporting Backend Tax Calculation Logic Exported GST Reports Potential API reporting endpoints [clarify endpoint] Problem Statement GST reports currently include orders with a status of Void or Cancelled when calculating GST tax totals. These orders should not contribute to tax liability because they were never completed transactions. This results in inflated GST totals and inaccurate tax reporting. Preconditions GST taxation is enabled. Orders exist with statuses: Void Cancelled GST reports are generated for a date range containing these orders. Steps to Reproduce Create or locate an order with GST applied. Change the order status to Void or Cancelled. Generate a GST report covering the transaction date. Review the GST totals and included transactions. Expected Result Void and cancelled orders should be excluded from: GST tax due calculations GST report totals GST export files Only completed/valid billable transactions should appear in GST reporting. Actual Result Void and cancelled orders are included in GST reports. GST totals include taxes from non-billable transactions. Business Impact Produces inaccurate GST filings and financial reports. Creates reconciliation discrepancies between accounting systems and Pelcro reports. Increases manual accounting adjustments for finance teams. Potential compliance and audit risk for clients using GST reporting for tax submissions. Severity / Priority Severity: High Priority: High Reason: This affects financial accuracy and tax compliance reporting. Suspected Root Cause The GST reporting query or aggregation logic may not exclude invalid order statuses before calculating tax totals. Possible missing filters: status != void status != cancelled Recommended Fix Update GST reporting logic to: Exclude voided orders Exclude cancelled orders Ensure tax aggregation only includes finalized/collectible transactions Review affected areas: Reporting API endpoints Export generation services Dashboard summaries Tax aggregation jobs Definition of Done (DoD) Void orders no longer appear in GST reports. Cancelled orders no longer appear in GST reports. GST totals match finalized transactions only. API responses reflect corrected totals. Existing exports generate accurate tax values. Regression testing completed for: Refunded orders Partial refunds Failed payments Completed orders Automated test coverage added for excluded statuses. Additional Notes Verify whether this issue affects: Historical reports Scheduled exports Third-party accounting integrations Other tax report types beyond GST (VAT/HST/etc.)

tlgunnison about 12 hours ago
π Bug Report β GST Reports Include Void/Cancelled Orders
GST Reports Incorrectly Include Void or Cancelled Orders in Tax Due Calculations Environment Environment: Production Module: GST Reporting / Tax Reporting Affected Components: UI Reporting Backend Tax Calculation Logic Exported GST Reports Potential API reporting endpoints [clarify endpoint] Problem Statement GST reports currently include orders with a status of Void or Cancelled when calculating GST tax totals. These orders should not contribute to tax liability because they were never completed transactions. This results in inflated GST totals and inaccurate tax reporting. Preconditions GST taxation is enabled. Orders exist with statuses: Void Cancelled GST reports are generated for a date range containing these orders. Steps to Reproduce Create or locate an order with GST applied. Change the order status to Void or Cancelled. Generate a GST report covering the transaction date. Review the GST totals and included transactions. Expected Result Void and cancelled orders should be excluded from: GST tax due calculations GST report totals GST export files Only completed/valid billable transactions should appear in GST reporting. Actual Result Void and cancelled orders are included in GST reports. GST totals include taxes from non-billable transactions. Business Impact Produces inaccurate GST filings and financial reports. Creates reconciliation discrepancies between accounting systems and Pelcro reports. Increases manual accounting adjustments for finance teams. Potential compliance and audit risk for clients using GST reporting for tax submissions. Severity / Priority Severity: High Priority: High Reason: This affects financial accuracy and tax compliance reporting. Suspected Root Cause The GST reporting query or aggregation logic may not exclude invalid order statuses before calculating tax totals. Possible missing filters: status != void status != cancelled Recommended Fix Update GST reporting logic to: Exclude voided orders Exclude cancelled orders Ensure tax aggregation only includes finalized/collectible transactions Review affected areas: Reporting API endpoints Export generation services Dashboard summaries Tax aggregation jobs Definition of Done (DoD) Void orders no longer appear in GST reports. Cancelled orders no longer appear in GST reports. GST totals match finalized transactions only. API responses reflect corrected totals. Existing exports generate accurate tax values. Regression testing completed for: Refunded orders Partial refunds Failed payments Completed orders Automated test coverage added for excluded statuses. Additional Notes Verify whether this issue affects: Historical reports Scheduled exports Third-party accounting integrations Other tax report types beyond GST (VAT/HST/etc.)

tlgunnison about 12 hours ago
Planned
Mark Collaborators as Inactive
π Problem Statement Currently, as an admin I cannot mark a collaborator as inactive and the only option to remove access is to delete the account entirely, which revokes any associated API keys and breaks integrations. π‘ User Stories As an Account Owner or Admin, I want to mark a collaborator account as inactive (suspended) without deleting it, so that I can revoke access for employees on extended leave or disability while preserving their account data and any associated API keys. π― Definition of Done (DoD) Inactive Account State β Given an active collaborator account, when an Account Owner or Admin marks it as inactive, then the collaborator can no longer log in, but their account record and all associated API keys are preserved. β Given a reactivation action, when an Account Owner or Admin restores the collaborator, then login and API key access are fully restored. β This change will impact API + UI, specifically GET/PATCH /collaborators/{id} (new status field) and the Collaborators list/detail UI. β Limitations: inactive collaborators cannot be used for SSO; API keys belonging to inactive collaborators remain valid at the key level but the collaborator session is blocked.

Rana Haleem about 13 hours ago
Planned
Mark Collaborators as Inactive
π Problem Statement Currently, as an admin I cannot mark a collaborator as inactive and the only option to remove access is to delete the account entirely, which revokes any associated API keys and breaks integrations. π‘ User Stories As an Account Owner or Admin, I want to mark a collaborator account as inactive (suspended) without deleting it, so that I can revoke access for employees on extended leave or disability while preserving their account data and any associated API keys. π― Definition of Done (DoD) Inactive Account State β Given an active collaborator account, when an Account Owner or Admin marks it as inactive, then the collaborator can no longer log in, but their account record and all associated API keys are preserved. β Given a reactivation action, when an Account Owner or Admin restores the collaborator, then login and API key access are fully restored. β This change will impact API + UI, specifically GET/PATCH /collaborators/{id} (new status field) and the Collaborators list/detail UI. β Limitations: inactive collaborators cannot be used for SSO; API keys belonging to inactive collaborators remain valid at the key level but the collaborator session is blocked.

Rana Haleem about 13 hours ago
Planned
Reorganize Menu Items in the Side Nav Bar
Problem Statement The current sidebar navigation structure is inconsistent and does not follow a logical grouping or workflow hierarchy. Some menu items are placed as standalone top-level sections when they conceptually belong under existing modules. User Story As a platform user, I want the sidebar menu items to be logically grouped and consistently organized, So that I can navigate the platform more intuitively and find related functionality more efficiently. Definition of Done (DoD) Sidebar menu is updated to match the approved hierarchy and order. Organizations is removed as a standalone top-level item and nested under Customers. Tickets is nested under Customers. Coupons is nested under Products. All menu items appear in the new defined top-to-bottom order. AI Customers Organizations Tickets Products Coupons E-Commerce Billing Payable Accounting Newsletter Collections Automations Analytics Import Tool Integrations Settings

Rana Haleem about 13 hours ago
Planned
Reorganize Menu Items in the Side Nav Bar
Problem Statement The current sidebar navigation structure is inconsistent and does not follow a logical grouping or workflow hierarchy. Some menu items are placed as standalone top-level sections when they conceptually belong under existing modules. User Story As a platform user, I want the sidebar menu items to be logically grouped and consistently organized, So that I can navigate the platform more intuitively and find related functionality more efficiently. Definition of Done (DoD) Sidebar menu is updated to match the approved hierarchy and order. Organizations is removed as a standalone top-level item and nested under Customers. Tickets is nested under Customers. Coupons is nested under Products. All menu items appear in the new defined top-to-bottom order. AI Customers Organizations Tickets Products Coupons E-Commerce Billing Payable Accounting Newsletter Collections Automations Analytics Import Tool Integrations Settings

Rana Haleem about 13 hours ago
Planned
Trigger Pelcro Automation Worrkflows from Event-Based Segments
π Problem Statement As a marketer running Pelcro automations, I cannot trigger workflows from event-based segments, which prevents behavior-driven outreach like dunning reminders or app-download nudges. π‘ User Story As a marketer, I want to attach an automation workflow to an event-based segment, so that users matching behavioral criteria automatically receive an email, SMS, or in-app/on-site notification. π― Definition of Done (DoD) β Given an event-based segment exists, when a marketer creates a workflow in Pelcro, then that segment is selectable as the workflow's audience source. β Given a user enters an event-based segment, when the workflow's trigger condition is met, then the configured action (email, SMS, or in-app/on-site notification) is dispatched to that user. β This change will impact UI, API, and Integration, specifically the Pelcro workflow builder, the automation execution engine, and the email/SMS/in-app notification dispatch layers. β This solution will include the following limitations: depends on FR β Event-Based Segmentation; SMS dispatch requires an SMS gateway/provider integration [clarify: vendor and account ownership]; push notifications out of scope for v1.

Rana Haleem about 13 hours ago
Planned
Trigger Pelcro Automation Worrkflows from Event-Based Segments
π Problem Statement As a marketer running Pelcro automations, I cannot trigger workflows from event-based segments, which prevents behavior-driven outreach like dunning reminders or app-download nudges. π‘ User Story As a marketer, I want to attach an automation workflow to an event-based segment, so that users matching behavioral criteria automatically receive an email, SMS, or in-app/on-site notification. π― Definition of Done (DoD) β Given an event-based segment exists, when a marketer creates a workflow in Pelcro, then that segment is selectable as the workflow's audience source. β Given a user enters an event-based segment, when the workflow's trigger condition is met, then the configured action (email, SMS, or in-app/on-site notification) is dispatched to that user. β This change will impact UI, API, and Integration, specifically the Pelcro workflow builder, the automation execution engine, and the email/SMS/in-app notification dispatch layers. β This solution will include the following limitations: depends on FR β Event-Based Segmentation; SMS dispatch requires an SMS gateway/provider integration [clarify: vendor and account ownership]; push notifications out of scope for v1.

Rana Haleem about 13 hours ago
Planned
Event-Based Segmentation in Pelcro Automation
π Problem Statement As a marketer building segments in Pelcro, I can only segment on customer, subscription, and invoice data, which prevents targeting based on user behavior. π‘ User Story As a marketer, I want to build segments using event data (e.g., page visits, downloads, logins), so that I can target users by behavior in addition to account attributes. π― Definition of Done (DoD) β Given a marketer is building a segment in Pelcro, when they add a filter, then event-based conditions (event name, count, time window) are selectable alongside existing customer/subscription/invoice filters. β Given a segment includes event-based filters, when it is evaluated, then the resulting user list reflects users matching the event criteria within the specified window. β This change will impact UI, API, and Data, specifically the Pelcro segment builder and the segmentation API responsible for evaluating event-based predicates. β This solution will include the following limitations: event sources limited to [clarify: Pelcro-tracked events only vs. third-party]; historical event lookback capped at [clarify window]; real-time evaluation not in scope for v1.

Rana Haleem about 13 hours ago
Planned
Event-Based Segmentation in Pelcro Automation
π Problem Statement As a marketer building segments in Pelcro, I can only segment on customer, subscription, and invoice data, which prevents targeting based on user behavior. π‘ User Story As a marketer, I want to build segments using event data (e.g., page visits, downloads, logins), so that I can target users by behavior in addition to account attributes. π― Definition of Done (DoD) β Given a marketer is building a segment in Pelcro, when they add a filter, then event-based conditions (event name, count, time window) are selectable alongside existing customer/subscription/invoice filters. β Given a segment includes event-based filters, when it is evaluated, then the resulting user list reflects users matching the event criteria within the specified window. β This change will impact UI, API, and Data, specifically the Pelcro segment builder and the segmentation API responsible for evaluating event-based predicates. β This solution will include the following limitations: event sources limited to [clarify: Pelcro-tracked events only vs. third-party]; historical event lookback capped at [clarify window]; real-time evaluation not in scope for v1.

Rana Haleem about 13 hours ago
Planned
Upgrade product/plan pages to Preline
π Problem Statement The current Plans View/create/edit pagees do not follow the platformβs standardized Preline UI templates, resulting in an inconsistent user experience and visual misalignment with the rest of the platform. π‘ User Story As a platform user, I want the Plans View/create/edit pages to follow the same UI standards and layouts used across the platform, So that I have a consistent and intuitive user experience. π― Definition of Done (DoD) A feature is done when: β οΈ Plans View page is updated to align with approved Preline UI templates. Layout, spacing, typography, buttons, tables/cards, and form components match platform design standards. Responsive behavior is consistent with other platform pages. Existing functionality remains unaffected after UI updates. No visual inconsistencies remain compared to other platform modules.

Rana Haleem about 13 hours ago
Planned
Upgrade product/plan pages to Preline
π Problem Statement The current Plans View/create/edit pagees do not follow the platformβs standardized Preline UI templates, resulting in an inconsistent user experience and visual misalignment with the rest of the platform. π‘ User Story As a platform user, I want the Plans View/create/edit pages to follow the same UI standards and layouts used across the platform, So that I have a consistent and intuitive user experience. π― Definition of Done (DoD) A feature is done when: β οΈ Plans View page is updated to align with approved Preline UI templates. Layout, spacing, typography, buttons, tables/cards, and form components match platform design standards. Responsive behavior is consistent with other platform pages. Existing functionality remains unaffected after UI updates. No visual inconsistencies remain compared to other platform modules.

Rana Haleem about 13 hours ago
Done
Donor & Recipient Info in Lists, Segments & Campaign Exports
π Problem Statement Currently, key customer and transactional dataβsuch as billing information, shipping details, customer name, donor, and recipient informationβare not fully available in lists, segments, campaign reports, or exports. This limits the ability of teams to perform targeted campaigns, reporting, and operational workflows (e.g., fulfillment, donor recognition), and often requires manual workarounds or data stitching. π‘ User Story As a marketing or operations user, I want to access complete customer, billing, shipping, donor, and recipient information directly within lists, segments, campaign reports, and exports, so that I can run targeted campaigns, generate accurate reports, and manage fulfillment without needing external data manipulation. π― Definition of Done (DoD) The following fields to be added if doesnt exist: Customer: First Name, Last Name Billing Information: Address Line, City, State, ZIP Shipping Information: Address Line, City, State, ZIP Donor Information: First Name, Last Name, Email Address Line, City, State, ZIP Recipient Information: First Name, Last Name, Email Address Line, City, State, ZIP Exports (Lists, Segments, Campaign Reports) All the above fields are included in: List exports Segment exports Campaign report exports

Rana Haleem 1 day ago
Done
Donor & Recipient Info in Lists, Segments & Campaign Exports
π Problem Statement Currently, key customer and transactional dataβsuch as billing information, shipping details, customer name, donor, and recipient informationβare not fully available in lists, segments, campaign reports, or exports. This limits the ability of teams to perform targeted campaigns, reporting, and operational workflows (e.g., fulfillment, donor recognition), and often requires manual workarounds or data stitching. π‘ User Story As a marketing or operations user, I want to access complete customer, billing, shipping, donor, and recipient information directly within lists, segments, campaign reports, and exports, so that I can run targeted campaigns, generate accurate reports, and manage fulfillment without needing external data manipulation. π― Definition of Done (DoD) The following fields to be added if doesnt exist: Customer: First Name, Last Name Billing Information: Address Line, City, State, ZIP Shipping Information: Address Line, City, State, ZIP Donor Information: First Name, Last Name, Email Address Line, City, State, ZIP Recipient Information: First Name, Last Name, Email Address Line, City, State, ZIP Exports (Lists, Segments, Campaign Reports) All the above fields are included in: List exports Segment exports Campaign report exports

Rana Haleem 1 day ago
Done
Support Bulk Import in AI Agent
Problem Statement As an AI Agent user performing bulk operations, I experience connection drops and timeouts because the entire operation runs synchronously inside a single SSE stream. The full proxy chain (browser, Cloudflare, ALB, nginx, PHP-FPM) must stay alive for the duration of the operation. This results in partial completions, lost progress, and a poor user experience. User Story As an AI Agent user, I want bulk operations to execute in the background via Laravel job batches, so that the SSE chat stream stays lightweight and never disconnects regardless of operation duration. Definition of Done (DoD) A feature is done when: Given a bulk operation request, when the tool is invoked, then a Laravel Bus::batch() is dispatched and the SSE stream returns immediately with a status event. Given an active batch, when progress is made, the frontend can read batch progress via the existing SSE heartbeat or on next user message. Given a completed or failed batch, the result is available in conversation history even if the user closed the chat. This change will impact BulkOperationTool, BulkImportTool, AIAgentController, and the frontend progress handling. A dedicated queue connection (e.g. redis-ai-agent) is used, isolated from the main application queue. Limitations: the batch runs regardless of whether the user keeps the chat open. Real-time progress is best-effort via SSE heartbeat; the user can always see the final result on next visit.

Rana Haleem 1 day ago
Done
Support Bulk Import in AI Agent
Problem Statement As an AI Agent user performing bulk operations, I experience connection drops and timeouts because the entire operation runs synchronously inside a single SSE stream. The full proxy chain (browser, Cloudflare, ALB, nginx, PHP-FPM) must stay alive for the duration of the operation. This results in partial completions, lost progress, and a poor user experience. User Story As an AI Agent user, I want bulk operations to execute in the background via Laravel job batches, so that the SSE chat stream stays lightweight and never disconnects regardless of operation duration. Definition of Done (DoD) A feature is done when: Given a bulk operation request, when the tool is invoked, then a Laravel Bus::batch() is dispatched and the SSE stream returns immediately with a status event. Given an active batch, when progress is made, the frontend can read batch progress via the existing SSE heartbeat or on next user message. Given a completed or failed batch, the result is available in conversation history even if the user closed the chat. This change will impact BulkOperationTool, BulkImportTool, AIAgentController, and the frontend progress handling. A dedicated queue connection (e.g. redis-ai-agent) is used, isolated from the main application queue. Limitations: the batch runs regardless of whether the user keeps the chat open. Real-time progress is best-effort via SSE heartbeat; the user can always see the final result on next visit.

Rana Haleem 1 day ago
Done
Add last login and exports in collaborators
π Problem Statement As an Admin, I experience a lack of capabilities in the collaborators view Specifically: No last login visibility β admins cannot identify inactive or dormant collaborator accounts, making periodic security reviews manual and error-prone. No collaborator export β the collaborator list cannot be exported, sorted, or filtered, making bulk compliance reviews impractical. π‘ User Stories As an Account Owner or Admin, I want to see the last login timestamp for each collaborator, so that I can identify dormant or inactive accounts during periodic security and compliance reviews. As an Account Owner or Admin, I want to export the full collaborator list (including role, status, last login, and email), so that I can perform bulk access reviews, identify accounts to deactivate, and meet auditor requirements without manually paginating through the UI. π― Definition of Done (DoD) Current release: Upgrade the collaborators view Add last login at column to collaborators table + sortable. Add export button for collaborators then a CSV/XLSX file is generated containing: name, email, role, status (active/inactive), last login, and account creation date.

Rana Haleem 5 days ago
Done
Add last login and exports in collaborators
π Problem Statement As an Admin, I experience a lack of capabilities in the collaborators view Specifically: No last login visibility β admins cannot identify inactive or dormant collaborator accounts, making periodic security reviews manual and error-prone. No collaborator export β the collaborator list cannot be exported, sorted, or filtered, making bulk compliance reviews impractical. π‘ User Stories As an Account Owner or Admin, I want to see the last login timestamp for each collaborator, so that I can identify dormant or inactive accounts during periodic security and compliance reviews. As an Account Owner or Admin, I want to export the full collaborator list (including role, status, last login, and email), so that I can perform bulk access reviews, identify accounts to deactivate, and meet auditor requirements without manually paginating through the UI. π― Definition of Done (DoD) Current release: Upgrade the collaborators view Add last login at column to collaborators table + sortable. Add export button for collaborators then a CSV/XLSX file is generated containing: name, email, role, status (active/inactive), last login, and account creation date.

Rana Haleem 5 days ago
Planned
Support Locale-Based Date and Currency Formatting
Problem Statement Currently, Pelcro uses a single default format for displaying dates and numeric values across all sites. This creates usability and localization challenges for international audiences whose regional standards differ from the default formatting conventions. Examples: Current date format: 05/07/2026 Expected localized format (Germany example): 07.05.2026 Current currency/amount format: 32,824.00 β¬ Expected localized format (Germany example): 32.824,00 β¬ User Story As a platform administrator, I want Pelcro to support locale-based formatting for dates and numeric values, So that collaborators across different regions can view information in a familiar and regionally appropriate format. Definition of Done (DoD) The platform supports locale-based formatting configurations at the site level Date formats can be displayed according to regional standards (e.g. DD/MM/YYYY or DD.MM.YYYY) Numeric and currency values support locale-specific separators and formatting conventions for example 32.824,00 β¬ vs 32,824.00$ Locale formatting impacts UI presentation only and does not alter stored data Formatting is applied consistently across supported UI components

Rana Haleem 6 days ago
Planned
Support Locale-Based Date and Currency Formatting
Problem Statement Currently, Pelcro uses a single default format for displaying dates and numeric values across all sites. This creates usability and localization challenges for international audiences whose regional standards differ from the default formatting conventions. Examples: Current date format: 05/07/2026 Expected localized format (Germany example): 07.05.2026 Current currency/amount format: 32,824.00 β¬ Expected localized format (Germany example): 32.824,00 β¬ User Story As a platform administrator, I want Pelcro to support locale-based formatting for dates and numeric values, So that collaborators across different regions can view information in a familiar and regionally appropriate format. Definition of Done (DoD) The platform supports locale-based formatting configurations at the site level Date formats can be displayed according to regional standards (e.g. DD/MM/YYYY or DD.MM.YYYY) Numeric and currency values support locale-specific separators and formatting conventions for example 32.824,00 β¬ vs 32,824.00$ Locale formatting impacts UI presentation only and does not alter stored data Formatting is applied consistently across supported UI components

Rana Haleem 6 days ago
In Planning
Change quantity of a subscription / archive subscriptions
Problem Statement As a Pelcro user managing recurring subscriptions with varying quantities, there is currently no way to modify the quantity of an existing subscription. The only available workflow is to cancel the subscription and create a new one, which results in unnecessary cancelled subscriptions cluttering the customer subscription page and making subscription management confusing and inefficient. Additionally, there is currently no way to remove or archive obsolete subscriptions from the customer view, making it difficult to clearly identify active and relevant subscriptions. π‘ User Stories As a Pelcro user, I want to update the quantity of an existing subscription without cancelling it, so I can manage recurring orders more efficiently. As a Pelcro user, I want subscription renewals to reflect updated quantities automatically. As a Pelcro user, I want to remove or archive old/cancelled subscriptions from the customer subscription page, so the subscription list remains clean and easy to manage. As a wholesaler account manager, I want to adjust yearly order quantities for recurring subscriptions without creating duplicate or cancelled records. π― Definition of Done (DoD) Users can edit the quantity of an active subscription directly from the subscription management page. Quantity updates apply to future renewals without requiring subscription cancellation or recreation. Subscription history and billing records remain intact after quantity updates. Cancelled or obsolete subscriptions can be archived, hidden, or removed from the customer subscription view. Archived/hidden subscriptions remain accessible internally for reporting and audit purposes. The customer subscription page clearly distinguishes active subscriptions from cancelled/archived ones. Existing renewal and billing workflows continue functioning correctly after quantity changes. Feedback: We would like to be able to change the quantity of a subscription. Currently, the only way to do this is to cancel the sub, then create a new one. This leads to a lot of unnecessary βcancelledβ subs that clogs up the subscription page. It can make things very confusing when trying to discern what is the correct subscription. Furthermore, to be able to delete or remove specific subs from the customers subscription page would be very helpful. Example: We have wholesalers purchasing large quantities of books, subscriptions that auto renew every year. They routinely change the quantities of the order for the following year, leading us to cancel the subscription and create a new one. To be able to simply alter the quantity would be VERY helpful. And at the same time be able to remove old subscriptions from the list.

Andrew Cifuentes 6 days ago
In Planning
Change quantity of a subscription / archive subscriptions
Problem Statement As a Pelcro user managing recurring subscriptions with varying quantities, there is currently no way to modify the quantity of an existing subscription. The only available workflow is to cancel the subscription and create a new one, which results in unnecessary cancelled subscriptions cluttering the customer subscription page and making subscription management confusing and inefficient. Additionally, there is currently no way to remove or archive obsolete subscriptions from the customer view, making it difficult to clearly identify active and relevant subscriptions. π‘ User Stories As a Pelcro user, I want to update the quantity of an existing subscription without cancelling it, so I can manage recurring orders more efficiently. As a Pelcro user, I want subscription renewals to reflect updated quantities automatically. As a Pelcro user, I want to remove or archive old/cancelled subscriptions from the customer subscription page, so the subscription list remains clean and easy to manage. As a wholesaler account manager, I want to adjust yearly order quantities for recurring subscriptions without creating duplicate or cancelled records. π― Definition of Done (DoD) Users can edit the quantity of an active subscription directly from the subscription management page. Quantity updates apply to future renewals without requiring subscription cancellation or recreation. Subscription history and billing records remain intact after quantity updates. Cancelled or obsolete subscriptions can be archived, hidden, or removed from the customer subscription view. Archived/hidden subscriptions remain accessible internally for reporting and audit purposes. The customer subscription page clearly distinguishes active subscriptions from cancelled/archived ones. Existing renewal and billing workflows continue functioning correctly after quantity changes. Feedback: We would like to be able to change the quantity of a subscription. Currently, the only way to do this is to cancel the sub, then create a new one. This leads to a lot of unnecessary βcancelledβ subs that clogs up the subscription page. It can make things very confusing when trying to discern what is the correct subscription. Furthermore, to be able to delete or remove specific subs from the customers subscription page would be very helpful. Example: We have wholesalers purchasing large quantities of books, subscriptions that auto renew every year. They routinely change the quantities of the order for the following year, leading us to cancel the subscription and create a new one. To be able to simply alter the quantity would be VERY helpful. And at the same time be able to remove old subscriptions from the list.

Andrew Cifuentes 6 days ago
In Progress
Improve Default User Interface Experience
Problem Statement The current dashboard experience contains multiple inconsistencies in UI behavior, spacing, and success state handling, which creates a fragmented and less polished user experience. Several components currently behave differently despite serving similar purposes. Examples include: Different success message styles and behaviors across modules Inconsistent modal interactions Excessive spacing and oversized form fields Redundant UI elements Loading states conflicting with success notifications General performance/slowness perception across dashboard interactions These inconsistencies reduce usability, create confusion for users, and impact the perceived quality and responsiveness of the platform. User Story As a subscriber using the dashboard, I want a consistent, responsive, and space-efficient interface across all account management actions, So that interactions feel predictable, modern, and easy to use without unnecessary visual clutter or inconsistent behaviors. Definition of Done (DoD) UI/UX Standardization All success messages use the same: Color palette Typography Animation Positioning Close behavior Timing Remove weird onfocus/pressed outlines appear in the close button Remove weird vertically scroll happens once I press the pencil icon (edit) to update my email address. Unified modal behavior implemented across dashboard Unified loading and completion interaction patterns Form & Layout Improvements Reduce unnecessary whitespace in forms Optimize large text fields in forms like delivery instructions Unify the gift receipient address modal to be "Add shipping address" similar to other modals

Rana Haleem 7 days ago
In Progress
Improve Default User Interface Experience
Problem Statement The current dashboard experience contains multiple inconsistencies in UI behavior, spacing, and success state handling, which creates a fragmented and less polished user experience. Several components currently behave differently despite serving similar purposes. Examples include: Different success message styles and behaviors across modules Inconsistent modal interactions Excessive spacing and oversized form fields Redundant UI elements Loading states conflicting with success notifications General performance/slowness perception across dashboard interactions These inconsistencies reduce usability, create confusion for users, and impact the perceived quality and responsiveness of the platform. User Story As a subscriber using the dashboard, I want a consistent, responsive, and space-efficient interface across all account management actions, So that interactions feel predictable, modern, and easy to use without unnecessary visual clutter or inconsistent behaviors. Definition of Done (DoD) UI/UX Standardization All success messages use the same: Color palette Typography Animation Positioning Close behavior Timing Remove weird onfocus/pressed outlines appear in the close button Remove weird vertically scroll happens once I press the pencil icon (edit) to update my email address. Unified modal behavior implemented across dashboard Unified loading and completion interaction patterns Form & Layout Improvements Reduce unnecessary whitespace in forms Optimize large text fields in forms like delivery instructions Unify the gift receipient address modal to be "Add shipping address" similar to other modals

Rana Haleem 7 days ago
Planned
Introduce view subscriptions URL trigger
π Problem Statement Customers receiving subscription renewal emails cannot be directed to a specific βMy Subscriptionsβ view after logging in. This creates friction in the renewal process, as users must manually navigate the platform to find their subscriptions, increasing the risk of drop-off and reducing conversion rates. π‘ User Story As a subscriber, I want to be directed straight to my subscriptions page when I click a renewal link, so that I can quickly review and renew my subscription without having to navigate manually. π― Definition of Done (DoD) Users clicking a renewal/any link (e.g., with #view=subscriptions) are: Redirected to login if not authenticated Automatically taken to the Subscriptions view after login The system supports deep linking to specific account sections (e.g., subscriptions) The transition is seamless across devices (desktop/mobile) No additional navigation is required from the user to access their subscriptions The feature is tested for: Logged-in users Logged-out users (with redirect after login) The renewal flow is validated end-to-end (email β login β subscriptions page)

Rana Haleem 7 days ago
Planned
Introduce view subscriptions URL trigger
π Problem Statement Customers receiving subscription renewal emails cannot be directed to a specific βMy Subscriptionsβ view after logging in. This creates friction in the renewal process, as users must manually navigate the platform to find their subscriptions, increasing the risk of drop-off and reducing conversion rates. π‘ User Story As a subscriber, I want to be directed straight to my subscriptions page when I click a renewal link, so that I can quickly review and renew my subscription without having to navigate manually. π― Definition of Done (DoD) Users clicking a renewal/any link (e.g., with #view=subscriptions) are: Redirected to login if not authenticated Automatically taken to the Subscriptions view after login The system supports deep linking to specific account sections (e.g., subscriptions) The transition is seamless across devices (desktop/mobile) No additional navigation is required from the user to access their subscriptions The feature is tested for: Logged-in users Logged-out users (with redirect after login) The renewal flow is validated end-to-end (email β login β subscriptions page)

Rana Haleem 7 days ago
Make Collaborator accounts "inactive"
π Problem Statement There is no way to mark a collaborator account as inactive in Pelcro. When a team member leaves or changes roles, the only option is to delete the account entirely β losing audit history β or leave it active, creating a security risk. π‘ User Story As an Account Owner, I want to set a collaborator account to inactive, so that their access is revoked without deleting the account or losing audit trail history. π― Definition of Done (DoD) A feature is done when: βοΈ Given a collaborator account, when the Account Owner sets it to inactive, then the collaborator can no longer log in or take actions β but their historical activity and audit records are preserved.

Rana Haleem 8 days ago
Make Collaborator accounts "inactive"
π Problem Statement There is no way to mark a collaborator account as inactive in Pelcro. When a team member leaves or changes roles, the only option is to delete the account entirely β losing audit history β or leave it active, creating a security risk. π‘ User Story As an Account Owner, I want to set a collaborator account to inactive, so that their access is revoked without deleting the account or losing audit trail history. π― Definition of Done (DoD) A feature is done when: βοΈ Given a collaborator account, when the Account Owner sets it to inactive, then the collaborator can no longer log in or take actions β but their historical activity and audit records are preserved.

Rana Haleem 8 days ago
Pause Subscription with 90-Day Limit (Once Per Year, Self-Service + Admin Override)
Problem Statement Pelcro currently lacks a native βpause subscriptionβ capability, forcing subscribers to cancel when they want a temporary break. This creates unnecessary churn, disrupts subscription lifecycle continuity, and negatively impacts retention metrics. Clients need a flexible, controlled way to allow subscribers to temporarily stop billing and access without terminating their subscription. Additionally, the absence of structured pause rules (e.g., duration limits, frequency caps) prevents consistent business logic across clients. User Story As a subscriber, I want to pause my subscription for up to 90 days once per year, So that I can temporarily stop billing and access without canceling my subscription, while retaining the ability to resume at any time. As an admin, I want the ability to override pause/resume states, So that I can assist users and resolve edge cases or support issues. Proposed Solution Introduce a Pause Subscription feature with controlled rules: Subscribers can pause their subscription once per calendar year Maximum pause duration: 90 days Billing is fully stopped during the pause Subscription automatically resumes at the end of the selected period Users can resume early at any time During pause, user access downgrades to free-tier entitlements Admins can override pause/resume states This feature must follow Pelcroβs API-first architecture, with full support across UI, API, SDK, and webhook layers. Scope & Components Affected UI (React Elements) Add βPause Subscriptionβ option in account settings Duration selector (up to 90 days) Display: Pause status Remaining pause time Resume button (early resume) Messaging for: βOnce per yearβ restriction Access downgrade during pause API (Laravel Backend) New endpoints: POST /subscriptions/{id}/pause POST /subscriptions/{id}/resume Extend subscription resource: pause_start_at pause_end_at pause_used_this_year (boolean or counter) Logic for: Enforcing one pause per year Validating max 90-day duration Blocking billing during pause Automatic resume job (cron/queue) SDK (JS-SDK) Methods: pauseSubscription(subscriptionId, duration) resumeSubscription(subscriptionId) Expose pause metadata in subscription object Admin / Dashboard Admin controls to: Force pause Force resume Override annual limit (if needed) Visibility into pause history Webhooks / Integrations Events: subscription.paused subscription.resumed Include metadata: Pause duration Resume trigger (auto vs manual vs admin) Key Functional Requirements Users can pause: Only once per year For a maximum of 90 days Billing: Fully stopped during pause Resumes normally after pause Access: Downgraded to free account level Resume: Manual (anytime) Automatic (end of pause period) Applies to: Monthly subscriptions Annual subscriptions Bundles / all subscription types Admin override: Required for support and edge cases Impact & Business Context Client Impact: High β enables modern retention strategy used by leading subscription platforms Revenue Impact: Short-term: deferred revenue Long-term: reduced churn, improved LTV User Experience: Significantly improved flexibility and control Operational Impact: Requires support tooling (admin overrides) Adoption: Likely high across all Pelcro clients Risks & Considerations Billing Complexity: Handling mid-cycle pauses (especially annual plans) Entitlement Sync: Ensuring real-time downgrade to free tier Abuse Prevention: Annual limit enforcement critical Analytics Impact: Need clear distinction between paused vs churned users

Gabrielle Sellitti 8 days ago
Pause Subscription with 90-Day Limit (Once Per Year, Self-Service + Admin Override)
Problem Statement Pelcro currently lacks a native βpause subscriptionβ capability, forcing subscribers to cancel when they want a temporary break. This creates unnecessary churn, disrupts subscription lifecycle continuity, and negatively impacts retention metrics. Clients need a flexible, controlled way to allow subscribers to temporarily stop billing and access without terminating their subscription. Additionally, the absence of structured pause rules (e.g., duration limits, frequency caps) prevents consistent business logic across clients. User Story As a subscriber, I want to pause my subscription for up to 90 days once per year, So that I can temporarily stop billing and access without canceling my subscription, while retaining the ability to resume at any time. As an admin, I want the ability to override pause/resume states, So that I can assist users and resolve edge cases or support issues. Proposed Solution Introduce a Pause Subscription feature with controlled rules: Subscribers can pause their subscription once per calendar year Maximum pause duration: 90 days Billing is fully stopped during the pause Subscription automatically resumes at the end of the selected period Users can resume early at any time During pause, user access downgrades to free-tier entitlements Admins can override pause/resume states This feature must follow Pelcroβs API-first architecture, with full support across UI, API, SDK, and webhook layers. Scope & Components Affected UI (React Elements) Add βPause Subscriptionβ option in account settings Duration selector (up to 90 days) Display: Pause status Remaining pause time Resume button (early resume) Messaging for: βOnce per yearβ restriction Access downgrade during pause API (Laravel Backend) New endpoints: POST /subscriptions/{id}/pause POST /subscriptions/{id}/resume Extend subscription resource: pause_start_at pause_end_at pause_used_this_year (boolean or counter) Logic for: Enforcing one pause per year Validating max 90-day duration Blocking billing during pause Automatic resume job (cron/queue) SDK (JS-SDK) Methods: pauseSubscription(subscriptionId, duration) resumeSubscription(subscriptionId) Expose pause metadata in subscription object Admin / Dashboard Admin controls to: Force pause Force resume Override annual limit (if needed) Visibility into pause history Webhooks / Integrations Events: subscription.paused subscription.resumed Include metadata: Pause duration Resume trigger (auto vs manual vs admin) Key Functional Requirements Users can pause: Only once per year For a maximum of 90 days Billing: Fully stopped during pause Resumes normally after pause Access: Downgraded to free account level Resume: Manual (anytime) Automatic (end of pause period) Applies to: Monthly subscriptions Annual subscriptions Bundles / all subscription types Admin override: Required for support and edge cases Impact & Business Context Client Impact: High β enables modern retention strategy used by leading subscription platforms Revenue Impact: Short-term: deferred revenue Long-term: reduced churn, improved LTV User Experience: Significantly improved flexibility and control Operational Impact: Requires support tooling (admin overrides) Adoption: Likely high across all Pelcro clients Risks & Considerations Billing Complexity: Handling mid-cycle pauses (especially annual plans) Entitlement Sync: Ensuring real-time downgrade to free tier Abuse Prevention: Annual limit enforcement critical Analytics Impact: Need clear distinction between paused vs churned users

Gabrielle Sellitti 8 days ago
In Planning
Customize Gift Flow Modal Titles & Subtitles
Problem Statement Pelcroβs gift flow modals currently have fixed titles and subtitles, limiting clientsβ ability to customize messaging to match their branding, tone, or campaign needs. This reduces flexibility and may impact user engagement and conversion rates. User Story As a client, I want to customize the title and subtitle of gift flow modals, So that I can align the messaging with my brand and optimize the user experience. Definition of Done (DoD) Clients can configure custom titles and subtitles for gift flow modals Changes are reflected correctly on the frontend Default values remain if no customization is provided No impact on existing gift flow functionality QA verifies customization works across devices and scenarios

Rana Haleem 9 days ago
In Planning
Customize Gift Flow Modal Titles & Subtitles
Problem Statement Pelcroβs gift flow modals currently have fixed titles and subtitles, limiting clientsβ ability to customize messaging to match their branding, tone, or campaign needs. This reduces flexibility and may impact user engagement and conversion rates. User Story As a client, I want to customize the title and subtitle of gift flow modals, So that I can align the messaging with my brand and optimize the user experience. Definition of Done (DoD) Clients can configure custom titles and subtitles for gift flow modals Changes are reflected correctly on the frontend Default values remain if no customization is provided No impact on existing gift flow functionality QA verifies customization works across devices and scenarios

Rana Haleem 9 days ago
Add Auth Token Validation Endpoint
Problem Statement Clients currently authenticate customers using the PelcroOpen Login API, which returns anauth.tokenupon successful authentication. However, there isno dedicated API endpoint to validate whether an existingauth.tokenis still valid or active. Clients such asEnergy Intelneed a way toprogrammatically verify token validitywhen managing sessions or protecting resources across their systems. Without this capability, clients must rely on indirect methods (e.g., attempting authenticated requests) to determine whether a token is valid, which introduces unnecessary complexity and inefficiency. A dedicated endpoint would provide aclear, standardized, and API-first methodto confirm whether anauth.tokenis valid, expired, or invalid. User Story As aPelcro API client (Energy Intel), I want toverify whether anauth.tokenis valid via a dedicated API endpoint, so that I cansecurely validate user sessions and control access to protected resources without making additional authenticated API calls. Proposed Solution Introduce anew API endpointthat validates anauth.tokenissued via the Open Login authentication flow. The endpoint should: Accept an auth.token Verify whether the token: Exists Is valid Has not expired Has not been revoked Return a clear validation response. Definition of Done (DoD) API Endpoint Implemented A new endpoint [clarify endpoint path] exists to validate auth.token. Token Validation Logic Endpoint verifies: Token existence Token expiration Revocation status Associated customer. Response Standardization Returns structured JSON indicating: Token validity (true/false) Reason if invalid Optional attributes (customer ID, expiration timestamp). Security Requirements Endpoint respects Pelcro authentication and rate-limiting policies. Tokens are validated without exposing sensitive data. Documentation Endpoint documented in Pelcro API Docs. Example requests and responses included. Testing Unit tests for validation logic. API tests covering: Valid token Expired token Revoked token Invalid token format.

Rana Haleem 9 days ago
Add Auth Token Validation Endpoint
Problem Statement Clients currently authenticate customers using the PelcroOpen Login API, which returns anauth.tokenupon successful authentication. However, there isno dedicated API endpoint to validate whether an existingauth.tokenis still valid or active. Clients such asEnergy Intelneed a way toprogrammatically verify token validitywhen managing sessions or protecting resources across their systems. Without this capability, clients must rely on indirect methods (e.g., attempting authenticated requests) to determine whether a token is valid, which introduces unnecessary complexity and inefficiency. A dedicated endpoint would provide aclear, standardized, and API-first methodto confirm whether anauth.tokenis valid, expired, or invalid. User Story As aPelcro API client (Energy Intel), I want toverify whether anauth.tokenis valid via a dedicated API endpoint, so that I cansecurely validate user sessions and control access to protected resources without making additional authenticated API calls. Proposed Solution Introduce anew API endpointthat validates anauth.tokenissued via the Open Login authentication flow. The endpoint should: Accept an auth.token Verify whether the token: Exists Is valid Has not expired Has not been revoked Return a clear validation response. Definition of Done (DoD) API Endpoint Implemented A new endpoint [clarify endpoint path] exists to validate auth.token. Token Validation Logic Endpoint verifies: Token existence Token expiration Revocation status Associated customer. Response Standardization Returns structured JSON indicating: Token validity (true/false) Reason if invalid Optional attributes (customer ID, expiration timestamp). Security Requirements Endpoint respects Pelcro authentication and rate-limiting policies. Tokens are validated without exposing sensitive data. Documentation Endpoint documented in Pelcro API Docs. Example requests and responses included. Testing Unit tests for validation logic. API tests covering: Valid token Expired token Revoked token Invalid token format.

Rana Haleem 9 days ago
In Progress
Introduce newsletters page on the platform
π Problem Statement Currently, there is no centralized way for platform admins to create and manage newsletters directly from the platform and expose them through APIs for website consumption. π‘ User Story As a platform admin, I want a centralized section to configure newsletters (title, description, status, etc.) so that they can be displayed to users on the website. π― Definition of Done (DoD) 1- Newsletter Configuration (Platform/Core API) Navigation Under Newsletter on the platform, the sub pages are adjusted to: Newsletter β’ Newsletters β’ Subscribers (The current Newsletter page becomes Subscribers.) Admins can: Create newsletters Edit newsletters Delete newsletters Enable / Disable newsletters Admin can set a newsletter Active / Inactive. Inactive newsletters must not appear in the end-user UI. Newsletter configuration changes are persisted and reflected immediately. Admins should be able to configure the below fields for a newsletter on create/ edit: Title (required) Subtitle Description Photo / Icon upload Status (Active / Inactive) addToRegistration onlySubscribers (boolean) 2. Open API Return in the site config endpoint the newsletters configured similar to products/plans title (required) description subtitle status addToRegistration onlySubscribers 3. Default UI The configured newsletters should be reflected In the newsletters section on the default ui dashboard.

Rana Haleem 12 days ago
In Progress
Introduce newsletters page on the platform
π Problem Statement Currently, there is no centralized way for platform admins to create and manage newsletters directly from the platform and expose them through APIs for website consumption. π‘ User Story As a platform admin, I want a centralized section to configure newsletters (title, description, status, etc.) so that they can be displayed to users on the website. π― Definition of Done (DoD) 1- Newsletter Configuration (Platform/Core API) Navigation Under Newsletter on the platform, the sub pages are adjusted to: Newsletter β’ Newsletters β’ Subscribers (The current Newsletter page becomes Subscribers.) Admins can: Create newsletters Edit newsletters Delete newsletters Enable / Disable newsletters Admin can set a newsletter Active / Inactive. Inactive newsletters must not appear in the end-user UI. Newsletter configuration changes are persisted and reflected immediately. Admins should be able to configure the below fields for a newsletter on create/ edit: Title (required) Subtitle Description Photo / Icon upload Status (Active / Inactive) addToRegistration onlySubscribers (boolean) 2. Open API Return in the site config endpoint the newsletters configured similar to products/plans title (required) description subtitle status addToRegistration onlySubscribers 3. Default UI The configured newsletters should be reflected In the newsletters section on the default ui dashboard.

Rana Haleem 12 days ago
Done
Enable Change End Date for $0 Plans as before
PROBLEM STATEMENT Currently admins have no way to change the end date of a subscription with 0$ plan. This limitation prevents accurate record-keeping for accounts that were active in the past, makes it difficult to retroactively correct subscription timelines, and creates inconsistencies in billing history and reporting for free-tier accounts. USER STORY As an admin, I want to set a change end date for the subscription if a plan is 0$, So that I can accurately reflect the true subscription timeline and maintain clean historical records. DEFINITION OF DONE - Admins can change the end date for $0 plans on unabstracted accounts. - Changing end date (shortening) is available via the admin dashboard on the subscription edit view. - Billing exports and reports accurately reflect the new end date. - Tested across relevant browsers and devices. - Documentation updated accordingly.

Rana Haleem 15 days ago
Done
Enable Change End Date for $0 Plans as before
PROBLEM STATEMENT Currently admins have no way to change the end date of a subscription with 0$ plan. This limitation prevents accurate record-keeping for accounts that were active in the past, makes it difficult to retroactively correct subscription timelines, and creates inconsistencies in billing history and reporting for free-tier accounts. USER STORY As an admin, I want to set a change end date for the subscription if a plan is 0$, So that I can accurately reflect the true subscription timeline and maintain clean historical records. DEFINITION OF DONE - Admins can change the end date for $0 plans on unabstracted accounts. - Changing end date (shortening) is available via the admin dashboard on the subscription edit view. - Billing exports and reports accurately reflect the new end date. - Tested across relevant browsers and devices. - Documentation updated accordingly.

Rana Haleem 15 days ago
In Progress
Consistent modal IDs across React Elements
π Problem Statement As a developer, Pelcro React Elements modals lack consistent IDs, making customization and DOM targeting unreliable. π‘ User Story As a developer, I want every modal to have a predictable, consistently-named DOM ID so I can reliably target, style, and instrument it. π― Definition of Done (DoD) β Given any Pelcro React Elements modal, when it mounts, then its root element has a stable id following the agreed naming convention (e.g. pelcro-modal-{name}). β This change will impact UI, specifically the ReactJS Elements library. β Limitations: modal root IDs only; nested elements are out of scope. Naming convention must be published in the Elements docs.

Rana Haleem 15 days ago
In Progress
Consistent modal IDs across React Elements
π Problem Statement As a developer, Pelcro React Elements modals lack consistent IDs, making customization and DOM targeting unreliable. π‘ User Story As a developer, I want every modal to have a predictable, consistently-named DOM ID so I can reliably target, style, and instrument it. π― Definition of Done (DoD) β Given any Pelcro React Elements modal, when it mounts, then its root element has a stable id following the agreed naming convention (e.g. pelcro-modal-{name}). β This change will impact UI, specifically the ReactJS Elements library. β Limitations: modal root IDs only; nested elements are out of scope. Naming convention must be published in the Elements docs.

Rana Haleem 15 days ago