Have something to say?

Tell us how we could make the product more useful to you. We URGE you to use the Pelcro Discovery GPT to help structure your thoughts and recommend a feature request that will be quickly digested by our team!

In Progress

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 about 13 hours ago

Planned

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 1 day ago

Planned

Make cursor land on First Name (as opposed to email address)

πŸ” Problem Statement When the registration form includes first and last name fields, the cursor automatically focuses on the email field instead of the first name field, which is unexpected and creates a confusing user experience. πŸ’‘ User Story As a user, I want the cursor to land on the first name field when it is present in the registration form, so that I can start filling out the form in a natural and logical order. 🎯 Definition of Done Given the registration form includes first and last name fields, when the form loads, then the cursor should automatically focus on the first name field. If the first/last name fields are not enabled, the cursor should default to the email field. This change impacts the UI (registration form field focus behavior). The focus order should follow a logical top-to-bottom flow of fields.

Rana Haleem 1 day ago

Planned

Introduce CSS overrides to the platform

πŸ” Problem Statement Currently, there is no way for clients to apply custom CSS to the default Pelcro UI. This limits their ability to tailor the look and feel of their site to match their brand, resulting in a rigid visual experience that requires workarounds or direct platform changes to address styling needs. πŸ’‘ User Story As an admin, I want to add custom CSS through the Settings > Design, so that my custom styles are applied to the site and returned via the site endpoint β€” allowing me to fully brand and style the Pelcro UI without requiring developer intervention. 🎯 Definition of Done (DoD) A feature is done when: Upgrade the Design settings page to use preline templates. βœ”οΈ Given a client is in Settings > Design, when they enter CSS in the new "Custom CSS" input field and save, then the CSS is persisted and associated with their site configuration. βœ”οΈ Given the site endpoint is called, when the response is returned, then it includes the custom CSS field with the client's saved styles. βœ”οΈ This change will impact the UI (Settings > Design page) and the API (site endpoint response), specifically the design settings form and the site configuration payload. βœ”οΈ This solution will include the following limitations: CSS is applied as-is with no validation or sanitization beyond basic input handling; conflicting styles may override platform defaults unpredictably; no live preview of CSS changes in the settings panel.

Rana Haleem 1 day ago

In Progress

Include taxes breakdown in exports

πŸ” Problem Statement Currently, tax amounts are aggregated into a single total field "tax total" in the exports, which makes it difficult to distinguish between different tax types (e.g., GST, PST, QST, HST) in the invoices/fulfillments export. This lack of granularity reduces clarity in financial reporting and limits usability for accounting and compliance purposes. πŸ’‘ User Story As a Pelcro client, I want tax amounts to be separated by type (e.g., GST, PST, QST, HST) in the invoices/ fulfillments exports, so that I can clearly understand, report, and reconcile taxes for accounting and compliance needs. 🎯 Definition of Done βœ” Tax amounts are exposed as separate fields by tax type (e.g., GST, PST, QST, HST) instead of a single aggregated value. βœ” All exports containing tax data (CSV, reports, etc.) include separate columns for each tax type All new columns are added to the end of export. Make sure taxes & its breakdowns are available on the invoices/fulfillments exports. βœ” The total tax amount, if still present, is clearly derived as the sum of individual tax fields βœ” Existing workflows that rely on total tax are not broken βœ” Proper handling is defined for cases where certain tax types do not apply (e.g., null or 0 values) βœ” Changes are validated to ensure accuracy of tax calculations across all outputs βœ” Documentation is updated to reflect the new tax structure and export format

Rana Haleem 5 days ago

In Progress

Introduce Zip Code Validations on checkout

Problem Statement Currently, there is no ZIP code validation step within Pelcro prior to a user selecting a print subscription plan. This means users in areas where print fulfillment is not available may proceed through the checkout flow, leading to unfulfillable orders and a poor user experience. User Story As a platform operator, I want to restrict checkout for print plans to users with specific ZIP codes, so that only users in serviceable areas can purchase print subscriptions. Definition of Done Add ZIP code restriction settings at the plan/product level Array of zip codes should be enabled Only users whose address matches an allowed ZIP code should be able to purchase the restricted plan Users with non-matching ZIP codes should see a clear message explaining that print delivery is not available in their area Validations should be applied similar to country validations in the platform/checkout.

Rana Haleem 11 days ago

In Progress

Support PayPal in Pelcro's Portal Payment page

Problem Statement Pelcro’s portal payment page currently supports only credit card payments, which limits flexibility for customers who prefer alternative payment methods such as PayPal. This can lead to lower conversion rates and a suboptimal user experience for customers who rely on PayPal for online transactions. User Story As an admin, I want to offer PayPal as a payment option, So that I can increase payment success rates and provide more flexibility to customers. Definition of Done (DoD) PayPal is available as a payment option on the portal payment page. Customers can select PayPal alongside credit card. Payment flow via PayPal is fully functional (redirect, authorization, confirmation). Successful transactions are correctly recorded in the system. Failed or canceled PayPal transactions are handled gracefully. UI clearly displays PayPal as a payment option. Tested across supported browsers and devices. Documentation updated accordingly.

Rana Haleem 14 days ago

Feature request: Clarify Handling of PayPal Revoked Authorization

πŸ” Problem Statement When a PayPal user revokes Pelcro's billing agreement authorisation, it is unclear how Pelcro handles the subscription β€” whether it is cancelled, suspended, or left active with failing renewals. This ambiguity creates confusion for admins and subscribers. πŸ’‘ User Story As a Pelcro admin, I want clear, documented handling of revoked PayPal authorisations, so that when a subscriber revokes their PayPal billing agreement, the subscription status is updated predictably and the admin is notified. 🎯 Definition of Done (DoD) A feature is done when: βœ”οΈ Given a subscriber who revokes their PayPal billing agreement, when the revocation event is received, then the subscription status is updated appropriately (e.g. suspended or cancelled), the admin is notified, and the behaviour is documented.

Daniele 16 days ago

In Planning

Default Automated Email System (Webhook-Based)

Problem Statement Pelcro currently supports only a limited set of default transactional emails. Clients must rely on external webhook + Postmark setups, creating fragmented workflows and inconsistent branding. User Story As a Pelcro client, I want a centralized page to manage automated emails tied to Pelcro events, So that I can enable and preview system emails without external setup. Proposed Solution Introduce an Email Center in the dashboard: Predefined, hardcoded email templates mapped to webhook events Toggle per email (enable / disable) Preview (read-only) Automatic branding (logo + colors from platform config) Emails triggered directly from Pelcro events Definition of Done (DoD) UI Email Center page listing all system emails Each email includes: Name Enable/disable toggle Preview API GET /email-templates PATCH /email-templates/{id} Event-driven email trigger layer Email Templates (Default List) System must include, at minimum, emails for: Billing & Payments Invoice Created Invoice Paid Invoice Payment Failed Refund Issued Subscriptions Subscription Created Subscription Renewed Subscription Updated Subscription Canceled Dunning / Recovery Payment Failed (retry notification) Card Expiring Soon Customer / Account Account Created Password Reset Optional (if present in webhook scope) Donation Created Order/One-time Purchase Confirmation Behavior Email is sent when: Corresponding event is triggered Email is enabled Branding Apply platform color configuration Apply client logo dynamically

Michael Ghattas 19 days ago

In Progress

Enhance Invoice PDF Address Formatting

Problem Statement The current invoice PDF displays billing and shipping addresses in a compressed and inconsistent format (e.g., city/state/ZIP combined in a single line with formatting issues). This reduces readability and does not align with standard postal formatting, which can lead to confusion and a less professional presentation. User Story As an admin, I want invoice PDF addresses (billing and shipping) to follow a clean, standardized postal format, So that invoices are more readable, professional, and aligned with mailing standards. Current Format Name Street + City combined in one line ZIP code formatting is incorrect or duplicated Poor spacing and structure Expected Format Addresses should follow this structure: Full Name Street Address City, State ZIP+4

Rana Haleem 19 days ago

2

Include Magic links in sendgrid templates

πŸ” Problem Statement Magic links (passwordless login URLs) cannot be included in custom SendGrid email templates. Clients who use SendGrid for transactional emails have no way to embed a magic link dynamically, forcing them to use Pelcro's default email templates. πŸ’‘ User Story As a Pelcro admin using SendGrid, I want to include magic link URLs as variables in custom SendGrid templates, so that passwordless login emails match our brand and design. 🎯 Definition of Done (DoD) A feature is done when: βœ”οΈ Given a SendGrid email template, when the admin includes the magic link variable, then the email is sent with a valid, functional magic link URL embedded β€” and the link works identically to Pelcro's default magic link emails.

Rana Haleem 20 days ago

Done

Display customer currency on customer profile

πŸ” Problem Statement The Customer Profile page currently does not display the user’s currency. This lack of visibility can cause confusion when viewing financial data, payment methods, or transactions. πŸ’‘ User Story As an admin, I want to see the currency on the Customer Profile page so that I can clearly understand the monetary values associated with the account. 🎯 Definition of Done (DoD) A feature is done when: The user’s currency is displayed on the Customer Profile page. Currency is shown in a clear and visible location. Currency format follows standard conventions (e.g., USD $, EUR €, etc.). The displayed currency matches the user’s configured/default currency. If no currency is set, a fallback state is shown (e.g., β€œNot set”). The UI aligns with the updated design system.

Rana Haleem 22 days ago

Done

Update payment method creation page on platform

πŸ” Problem Statement The Payment Method Creation page uses an old UI/UX that no longer meets current design standards. It should be updated using new Preline templates to improve usability, consistency, and overall user experience. πŸ’‘ User Story As an admin, I want a modern and intuitive payment method creation experience so that I can add payment details easily and confidently. 🎯 Definition of Done (DoD) A feature is done when: Updated Payment Method Creation UI is implemented using Preline templates. Validation should fail on UI first and then from backend. UI is reviewed and approved by design/product stakeholders. Responsive behavior is verified across supported screen sizes. Form validation and error handling are implemented and tested. Accessibility basics are covered, including labels, keyboard navigation, and readable contrast. Existing payment method creation functionality continues to work as expected.

Rana Haleem 22 days ago

Done

Include full country names in lists/orders exports

πŸ” Problem Statement Currently, lists and order exports display country values as abbreviations or codes instead of full country names. This can create confusion for users reviewing exports, especially for reporting, operational workflows πŸ’‘ User Story As a user exporting lists or order data, I want countries to appear as full country names instead of abbreviations, so that the exported data is easier to read, understand, and share. 🎯 Definition of Done (DoD) A feature is done when: Full country names are displayed in lists/fulfillment/order exports instead of country codes or abbreviations. Exported country values match the correct country associated with each record. The output is validated for common countries and edge cases.

Rana Haleem 26 days ago

Extend Cart Functionality to Subscription Products

πŸ” Problem Statement Pelcro's cart functionality only supports one-time product purchases. Subscription products cannot be added to a cart, which means customers cannot bundle subscriptions with other items in a single checkout β€” limiting cross-sell and upsell opportunities. πŸ’‘ User Story As a subscriber, I want to add subscription products to my cart alongside one-time purchases, so that I can complete a single checkout for everything I want to buy. 🎯 Definition of Done (DoD) A feature is done when: βœ”οΈ Given a cart with both subscription and one-time products, when the customer completes checkout, then all items are processed correctly β€” one-time charges are invoiced immediately and subscriptions are created with their respective billing cycles.

Rana Haleem 26 days ago

Done

Enable Plan Changes When Restarting an Expired Membership

πŸ” Problem Statement As a Pelcro admin, I experience the restart-expired-membership flow restricting plan selection to the original plan only, which forces customers to cancel-and-resubscribe if they want a different plan and causes unnecessary churn. πŸ’‘ User Story As an admin, I want to select any active plan when restarting an expired membership, so that customers can upgrade, downgrade, or switch without losing their history. 🎯 Definition of Done - Given an expired membership, when an admin initiates the restart flow, then a plan selector is shown allowing any active plan. - This change impacts the UI (restart membership modal) and API (subscription restart endpoint). - Limitations: same proration rules apply as mid-cycle plan changes. Problem Statement Currently, when restarting an expired membership, admins are restricted to the original plan and cannot select a different one. This limits flexibility and creates friction, especially for customers who want to upgrade, downgrade, or switch plans based on their current needs. As a result, users may abandon the restart flow or require manual intervention. User Story As an admin restarting an expired membership, I want to be able to select a different plan during the restart process, so that I can choose a plan that better fits my current needs without extra steps or support involvement.

Rana Haleem 26 days ago

In Progress

Include Billing Information in Refunds Export

πŸ” Problem Statement As a finance admin, I experience the refunds export lacking billing information, which prevents direct reconciliation with original transactions and requires manual cross-referencing. πŸ’‘ User Story As a finance admin, I want billing details (name, address, last 4 of payment method) included in the refunds export, so that I can reconcile refunds without pulling a second report. 🎯 Definition of Done - Given the refunds export, when downloaded, then it includes billing name, billing address, and payment method (last 4 / type). - This change impacts the API (refunds export endpoint). - Limitations: fields are appended to the existing format; no existing columns are removed. Problem Statement Currently, the refunds export does not include billing information, which makes it difficult to reconcile refunds with original transactions and customer records. This creates gaps in financial tracking and increases manual effort for teams trying to match refunds with their corresponding billing details. User Story As a finance or operations user, I want billing information to appear in the refunds export, so that I can accurately reconcile refunds with the original transactions and maintain consistent financial records without manual lookup.

Rana Haleem 26 days ago

In Planning

Billing Email Inclusion on Past Due Invoice Reporting

πŸ” Problem Statement As a collections admin, I experience past-due invoice exports missing the billing email address, which forces time-consuming manual cross-referencing with other reports to identify who to contact. πŸ’‘ User Story As an admin, I want the billing email included in the past-due invoice export, so that I can reach the right contact immediately without a secondary data pull. 🎯 Definition of Done - Given the past-due invoices export, when downloaded, then a billingEmail column is included for each row. - This change impacts the API (invoice export endpoint). - Limitations: billing email may differ from the account email; both can be included if applicable. Presently, when we run an export of the past-due invoices, we cannot get the billing email on the same report, which is who we need to contact regarding the past-due invoices. While we can cross-reference other exports and ID numbers, this is extremely time consuming and does not need to be, when the addition of the Billing Email could be added to the invoice exports.

hallesarner 26 days ago

1