In Progress
Support User-Level Auth Token Expiration
π Problem Statement As a platform administrator, I experience a fixed, non-configurable authentication token TTL enforced at the JS-SDK level, which results in an inability to align session lifetimes with site-specific security and user experience policies β forcing either premature re-authentication or longer-than-desired session windows that cannot be tuned per environment or audience. π‘ User Story As a platform administrator, I want to configure the authentication token TTL from the platform settings, so that the JS-SDK consumes that configuration and enforces the desired session lifetime without requiring code changes or redeployments. π― Definition of Done (DoD) β Given an account owner configures a custom session duration in the platform settings, when a user signs in, then their session remains active for exactly the configured duration. β Given the account owner updates the session duration setting, when users sign in afterward, then the new duration is automatically applied without requiring frontend code changes or deployments. β Given the session duration setting UI is displayed, when configuring the value, then: The admin can enter a numeric value. The admin can select a duration unit (e.g., days or months). The minimum accepted value must be a positive number. Upper-bound limitations are validated based on platform-defined security constraints. β This change will impact: Admin Platform β a new setting allowing configuration of authentication/session duration. Authentication System β token/session issuance based on configured TTL. Frontend JS-SDK β consumption and enforcement of the configured token lifetime. Website User Experience β sessions automatically respect the configured duration. Documentation β updated implementation and configuration guidance.

Rana Haleem about 6 hours ago
In Progress
Support User-Level Auth Token Expiration
π Problem Statement As a platform administrator, I experience a fixed, non-configurable authentication token TTL enforced at the JS-SDK level, which results in an inability to align session lifetimes with site-specific security and user experience policies β forcing either premature re-authentication or longer-than-desired session windows that cannot be tuned per environment or audience. π‘ User Story As a platform administrator, I want to configure the authentication token TTL from the platform settings, so that the JS-SDK consumes that configuration and enforces the desired session lifetime without requiring code changes or redeployments. π― Definition of Done (DoD) β Given an account owner configures a custom session duration in the platform settings, when a user signs in, then their session remains active for exactly the configured duration. β Given the account owner updates the session duration setting, when users sign in afterward, then the new duration is automatically applied without requiring frontend code changes or deployments. β Given the session duration setting UI is displayed, when configuring the value, then: The admin can enter a numeric value. The admin can select a duration unit (e.g., days or months). The minimum accepted value must be a positive number. Upper-bound limitations are validated based on platform-defined security constraints. β This change will impact: Admin Platform β a new setting allowing configuration of authentication/session duration. Authentication System β token/session issuance based on configured TTL. Frontend JS-SDK β consumption and enforcement of the configured token lifetime. Website User Experience β sessions automatically respect the configured duration. Documentation β updated implementation and configuration guidance.

Rana Haleem about 6 hours ago
In Planning
Export Collaborator API Keys with Usage & Expiry Metadata
π Problem Statement As an account owner, I currently do not have a centralized way to export collaborator API key information, which makes it difficult to audit access, monitor usage, track expirations, and maintain security compliance across the account. π‘ User Story As an account owner, I want to export all collaborator API keys along with metadata such as last usage date and expiry date, so that I can review access activity, manage integrations, and perform security audits efficiently. π― Definition of Done (DoD) A feature is done when: βοΈ Given an account owner accesses the collaborators or API keys management area, when they trigger an export action, then a downloadable export file is generated containing all collaborator API key details. βοΈ Given collaborator API keys exist, when the export is generated, then the export includes: Collaborator/User name Email address API key status (active/revoked/expired) Created date Expiry date Last usage timestamp Associated permissions/scopes/roles βοΈ Given an API key has never been used, when exported, then the βlast usageβ field displays as empty/null or βNever Usedβ.

Rana Haleem about 6 hours ago
In Planning
Export Collaborator API Keys with Usage & Expiry Metadata
π Problem Statement As an account owner, I currently do not have a centralized way to export collaborator API key information, which makes it difficult to audit access, monitor usage, track expirations, and maintain security compliance across the account. π‘ User Story As an account owner, I want to export all collaborator API keys along with metadata such as last usage date and expiry date, so that I can review access activity, manage integrations, and perform security audits efficiently. π― Definition of Done (DoD) A feature is done when: βοΈ Given an account owner accesses the collaborators or API keys management area, when they trigger an export action, then a downloadable export file is generated containing all collaborator API key details. βοΈ Given collaborator API keys exist, when the export is generated, then the export includes: Collaborator/User name Email address API key status (active/revoked/expired) Created date Expiry date Last usage timestamp Associated permissions/scopes/roles βοΈ Given an API key has never been used, when exported, then the βlast usageβ field displays as empty/null or βNever Usedβ.

Rana Haleem about 6 hours ago
In Planning
Subscription Export Should Respect Selected Table Columns
Problem Statement Currently, subscription exports include all available columns regardless of the columns selected or displayed in the subscriptions table view. This creates unnecessary noise in exported files and makes it harder for users to export only the data relevant to their workflow. User Story As a platform user, I want subscription exports to include only the columns I selected in the subscriptions table, So that I can export cleaner, more relevant datasets without unnecessary fields. Definition of Done (DoD) Subscription exports only include columns currently selected/displayed in the table view. Hidden/unselected columns are excluded from the export. Column ordering in the export matches the table ordering where applicable. Existing filters and search criteria continue to apply correctly to exports. Export functionality remains supported for CSV and other existing export formats.

Rana Haleem 5 days ago
In Planning
Subscription Export Should Respect Selected Table Columns
Problem Statement Currently, subscription exports include all available columns regardless of the columns selected or displayed in the subscriptions table view. This creates unnecessary noise in exported files and makes it harder for users to export only the data relevant to their workflow. User Story As a platform user, I want subscription exports to include only the columns I selected in the subscriptions table, So that I can export cleaner, more relevant datasets without unnecessary fields. Definition of Done (DoD) Subscription exports only include columns currently selected/displayed in the table view. Hidden/unselected columns are excluded from the export. Column ordering in the export matches the table ordering where applicable. Existing filters and search criteria continue to apply correctly to exports. Export functionality remains supported for CSV and other existing export formats.

Rana Haleem 5 days ago
In Planning
Per-Issue Fulfillment Price Support in Exports
Problem Statement Pelcro currently does not support exporting per-issue fulfillment price for subscription shipments. This creates potential compliance risks for customers shipping physical products into the EU, where customs authorities may require the declared value of each fulfilled item during audits. For example, if a customer purchases a 12-issue subscription for Β£60, each fulfilled issue should reflect an individual shipment value of Β£5. User Story As a publisher shipping subscriptions into the EU, I want each fulfilled issue to include an allocated per-item value, So that shipment and customs documentation remain compliant with EU customs requirements and audits. Definition of Done (DoD) Pelcro supports calculating per-issue fulfillment values based on total subscription price and issue count. Fulfillment exports and shipment data include the allocated per-item value. Calculations support different subscription durations and pricing structures. Per-item values are available for EU shipment workflows and customs-related reporting. Existing fulfillment and subscription logic remain unaffected. QA validates: Accurate per-issue value calculations Export/report visibility EU fulfillment compatibility Regression testing on fulfillment workflows

Rana Haleem 6 days ago
In Planning
Per-Issue Fulfillment Price Support in Exports
Problem Statement Pelcro currently does not support exporting per-issue fulfillment price for subscription shipments. This creates potential compliance risks for customers shipping physical products into the EU, where customs authorities may require the declared value of each fulfilled item during audits. For example, if a customer purchases a 12-issue subscription for Β£60, each fulfilled issue should reflect an individual shipment value of Β£5. User Story As a publisher shipping subscriptions into the EU, I want each fulfilled issue to include an allocated per-item value, So that shipment and customs documentation remain compliant with EU customs requirements and audits. Definition of Done (DoD) Pelcro supports calculating per-issue fulfillment values based on total subscription price and issue count. Fulfillment exports and shipment data include the allocated per-item value. Calculations support different subscription durations and pricing structures. Per-item values are available for EU shipment workflows and customs-related reporting. Existing fulfillment and subscription logic remain unaffected. QA validates: Accurate per-issue value calculations Export/report visibility EU fulfillment compatibility Regression testing on fulfillment workflows

Rana Haleem 6 days ago
In Planning
Removal of Gift Records from Deferred Accounting Reports
Problem Statement Gift purchases and fulfilled gift subscriptions currently continue to appear indefinitely in deferred accounting reports, even after their balances have been fully recognized or reduced to zero. This causes the deferred report to accumulate completed gift transactions over time. User Story As a finance or accounting user, I want fulfilled gift subscriptions with a zero deferred balance to automatically be removed from deferred accounting reports after the following month, So that the report only contains active deferred balances and remains clean, accurate, and easy to reconcile. Definition of Done (DoD) Gift purchases and gift subscriptions with a deferred balance of zero are identified correctly. Zero-balance gift entries remain visible for the remainder of the current reporting month. Fully recognized/fulfilled gift entries automatically drop from the deferred accounting report in the following month. Deferred reports only display active deferred balances after cleanup logic is applied. Historical accounting data remains preserved and accessible outside the deferred report. Existing deferred revenue calculations remain unaffected.

Rana Haleem 6 days ago
In Planning
Removal of Gift Records from Deferred Accounting Reports
Problem Statement Gift purchases and fulfilled gift subscriptions currently continue to appear indefinitely in deferred accounting reports, even after their balances have been fully recognized or reduced to zero. This causes the deferred report to accumulate completed gift transactions over time. User Story As a finance or accounting user, I want fulfilled gift subscriptions with a zero deferred balance to automatically be removed from deferred accounting reports after the following month, So that the report only contains active deferred balances and remains clean, accurate, and easy to reconcile. Definition of Done (DoD) Gift purchases and gift subscriptions with a deferred balance of zero are identified correctly. Zero-balance gift entries remain visible for the remainder of the current reporting month. Fully recognized/fulfilled gift entries automatically drop from the deferred accounting report in the following month. Deferred reports only display active deferred balances after cleanup logic is applied. Historical accounting data remains preserved and accessible outside the deferred report. Existing deferred revenue calculations remain unaffected.

Rana Haleem 6 days ago
In Planning
Add JWT endpoint for customer JWT verification
π Problem Statement As a developer integrating Pelcro authentication, I experience the inability to verify JWT tokens locally because Pelcro uses symmetric signing (HS256) and cannot share the secret key for security reasons. This results in mandatory API calls to Pelcro for every token verification, adding 100-500ms latency per authentication check, increased server load, and inability to verify tokens offline or at the edge. π‘ User Story As a developer integrating Pelcro authentication, I want to retrieve Pelcro's public keys via a standard JWKS endpoint, so that I can verify customer JWT tokens locally without making API calls, reducing latency to <1ms and enabling offline/edge verification. π― Definition of Done (DoD) Acceptance Criteria Given a valid JWKS endpoint URL, when a client requests GET /.well-known/jwks.json, then the response returns a valid JWKS containing the RS256 public key(s) in standard format. Given a JWT issued after this feature deployment, when verified using the public key from the JWKS endpoint, then the signature validates successfully without calling any other Pelcro API. Given a JWT issued before this feature deployment (HS256), when presented to authenticated endpoints, then the token is still accepted during the migration period (until existing tokens expire). Given a new user login or token refresh, when a JWT is issued, then the token uses RS256 algorithm.

Rana Haleem 6 days ago
In Planning
Add JWT endpoint for customer JWT verification
π Problem Statement As a developer integrating Pelcro authentication, I experience the inability to verify JWT tokens locally because Pelcro uses symmetric signing (HS256) and cannot share the secret key for security reasons. This results in mandatory API calls to Pelcro for every token verification, adding 100-500ms latency per authentication check, increased server load, and inability to verify tokens offline or at the edge. π‘ User Story As a developer integrating Pelcro authentication, I want to retrieve Pelcro's public keys via a standard JWKS endpoint, so that I can verify customer JWT tokens locally without making API calls, reducing latency to <1ms and enabling offline/edge verification. π― Definition of Done (DoD) Acceptance Criteria Given a valid JWKS endpoint URL, when a client requests GET /.well-known/jwks.json, then the response returns a valid JWKS containing the RS256 public key(s) in standard format. Given a JWT issued after this feature deployment, when verified using the public key from the JWKS endpoint, then the signature validates successfully without calling any other Pelcro API. Given a JWT issued before this feature deployment (HS256), when presented to authenticated endpoints, then the token is still accepted during the migration period (until existing tokens expire). Given a new user login or token refresh, when a JWT is issued, then the token uses RS256 algorithm.

Rana Haleem 6 days 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 6 days 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 6 days 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 6 days 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 6 days 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 6 days 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 6 days 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 6 days 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 6 days 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 6 days 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 6 days 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 6 days 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 6 days 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 7 days 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 7 days 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 7 days 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 7 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 11 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 11 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 11 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 11 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 11 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 11 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 13 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 13 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 13 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 13 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 13 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 13 days ago