Paywall re-evaluation on AJAX navigation (Swup)
π Problem Statement As a client using AJAX-based navigation (Swup), I experience the paywall not re-evaluating content restrictions on newly loaded articles, which results in unrestricted access to gated content. π‘ User Story As a client integrating Pelcro with AJAX navigation library, I want the paywall to automatically re-evaluate content restrictions after each AJAX navigation, so that gated content stays protected without a full page reload. π― Definition of Done (DoD) β Paywall restrictions are re-evaluated after each Swup/AJAX navigation without requiring a full page reload. β Newly loaded gated content is correctly restricted according to the configured paywall rules. β Existing paywall behavior remains unaffected for standard page loads and navigation.

Nada Shoukry 1 day ago
Paywall re-evaluation on AJAX navigation (Swup)
π Problem Statement As a client using AJAX-based navigation (Swup), I experience the paywall not re-evaluating content restrictions on newly loaded articles, which results in unrestricted access to gated content. π‘ User Story As a client integrating Pelcro with AJAX navigation library, I want the paywall to automatically re-evaluate content restrictions after each AJAX navigation, so that gated content stays protected without a full page reload. π― Definition of Done (DoD) β Paywall restrictions are re-evaluated after each Swup/AJAX navigation without requiring a full page reload. β Newly loaded gated content is correctly restricted according to the configured paywall rules. β Existing paywall behavior remains unaffected for standard page loads and navigation.

Nada Shoukry 1 day ago
Make Phone Number Required During Account Signup
π Problem Statement We have noticed that some new customer accounts are being created without a phone number because the phone number field is currently optional during account registration. We need to ensure that every customer who creates an account through our online registration flow provides a phone number, rather than allowing accounts to be created with only an email address. Making the phone number mandatory will allow us to consistently collect this information during registration and prevent incomplete customer profiles from being created. π‘ User Story We want the phone number field to be required during online account registration so that customers cannot complete the account creation process without providing a phone number. π―Definition of Done β The phone number field is required during online account registration. β Customers cannot complete registration without providing a phone number.

Nada Shoukry 3 days ago
Make Phone Number Required During Account Signup
π Problem Statement We have noticed that some new customer accounts are being created without a phone number because the phone number field is currently optional during account registration. We need to ensure that every customer who creates an account through our online registration flow provides a phone number, rather than allowing accounts to be created with only an email address. Making the phone number mandatory will allow us to consistently collect this information during registration and prevent incomplete customer profiles from being created. π‘ User Story We want the phone number field to be required during online account registration so that customers cannot complete the account creation process without providing a phone number. π―Definition of Done β The phone number field is required during online account registration. β Customers cannot complete registration without providing a phone number.

Nada Shoukry 3 days ago
Enhance mobile login features regarding subscription/shipments remaining
We received a customer complaint about not being able to see the # number of shipments remaining on their active subscription from their mobile device. The end date is included but would be great to also include the # of shipments remaining as with the desktop version here

Michele Peoples 9 days ago
Enhance mobile login features regarding subscription/shipments remaining
We received a customer complaint about not being able to see the # number of shipments remaining on their active subscription from their mobile device. The end date is included but would be great to also include the # of shipments remaining as with the desktop version here

Michele Peoples 9 days ago
Support Filtering by Metadata Key Only in Lists and Segments
π Problem Statement Currently, Lists and Segments require both a metadata key and metadata value when filtering by metadata. This prevents us from using metadata as a reporting and logging tool, as our metadata values are unique for each customer interaction while the metadata keys identify the type of record being logged (e.g., MISSED_ISSUE, PAID_DUTY, RENEWAL). As a result, we are unable to segment or export records based on the existence of a metadata key alone. π‘ User Story As a user, I want to filter Lists and Segments by metadata key only, so that I can identify, segment, automate, and export all records associated with a specific metadata key regardless of the metadata value. π― Definition of Done β Users can filter Lists and Segments by metadata key without specifying a metadata value. β The filter returns all records that contain the specified metadata key, regardless of its value. β Existing metadata key + value filtering continues to function as it does today. β The new filtering option is available for both Lists and Segments.

Nada Shoukry 11 days ago
Support Filtering by Metadata Key Only in Lists and Segments
π Problem Statement Currently, Lists and Segments require both a metadata key and metadata value when filtering by metadata. This prevents us from using metadata as a reporting and logging tool, as our metadata values are unique for each customer interaction while the metadata keys identify the type of record being logged (e.g., MISSED_ISSUE, PAID_DUTY, RENEWAL). As a result, we are unable to segment or export records based on the existence of a metadata key alone. π‘ User Story As a user, I want to filter Lists and Segments by metadata key only, so that I can identify, segment, automate, and export all records associated with a specific metadata key regardless of the metadata value. π― Definition of Done β Users can filter Lists and Segments by metadata key without specifying a metadata value. β The filter returns all records that contain the specified metadata key, regardless of its value. β Existing metadata key + value filtering continues to function as it does today. β The new filtering option is available for both Lists and Segments.

Nada Shoukry 11 days ago
Add "Transfer" as a Refund Reason
π Problem Statement Currently, Pelcro provides a predefined list of refund reasons, but it does not include "Transfer". As a result, when funds are refunded as part of an internal transfer (e.g., moving funds between accounts), users must select an inaccurate reason such as "Requested by Customer." This creates discrepancies in accounting records, reporting, and audit trails by misrepresenting the actual purpose of the refund. π‘ User Story As a finance or customer support administrator, I want to select "Transfer" as the refund reason when issuing refunds related to internal fund transfers, So that refund records accurately reflect the purpose of the transaction and accounting records remain consistent. π― Definition of Done (DoD) β Add "Transfer" as a selectable refund reason when issuing refunds. β Refunds marked as "Transfer" are saved and displayed consistently across the dashboard, reports and exports.

Nada Shoukry 15 days ago
Add "Transfer" as a Refund Reason
π Problem Statement Currently, Pelcro provides a predefined list of refund reasons, but it does not include "Transfer". As a result, when funds are refunded as part of an internal transfer (e.g., moving funds between accounts), users must select an inaccurate reason such as "Requested by Customer." This creates discrepancies in accounting records, reporting, and audit trails by misrepresenting the actual purpose of the refund. π‘ User Story As a finance or customer support administrator, I want to select "Transfer" as the refund reason when issuing refunds related to internal fund transfers, So that refund records accurately reflect the purpose of the transaction and accounting records remain consistent. π― Definition of Done (DoD) β Add "Transfer" as a selectable refund reason when issuing refunds. β Refunds marked as "Transfer" are saved and displayed consistently across the dashboard, reports and exports.

Nada Shoukry 15 days ago
Please fix the state name for the District of Columbia
when we do an export, the state is being exported as βDistrict of Colombiaβ which is not the correct spelling. If this could be fixed ASAP that would be appreciated.

MarkB 17 days ago
Please fix the state name for the District of Columbia
when we do an export, the state is being exported as βDistrict of Colombiaβ which is not the correct spelling. If this could be fixed ASAP that would be appreciated.

MarkB 17 days ago
Add the 2 digit state abbreviation for United States to the invoice export
Hello, we periodically need to print and mail invoices. We willl be using a 3rd part software app to create the invoices. It would be very helpful if the invoice export file would include the 2 character abbreviation for the State field, rather than the spelled out field. For example: if a field could be added where the state βWisconsinβ had a corresponding state abbreviation field βWIβ that would be beneficial. Thanks!

MarkB 17 days ago
Add the 2 digit state abbreviation for United States to the invoice export
Hello, we periodically need to print and mail invoices. We willl be using a 3rd part software app to create the invoices. It would be very helpful if the invoice export file would include the 2 character abbreviation for the State field, rather than the spelled out field. For example: if a field could be added where the state βWisconsinβ had a corresponding state abbreviation field βWIβ that would be beneficial. Thanks!

MarkB 17 days ago
for customer invoices and receipts, allow fields to be done via a mail merge in Microsoft Word
We have a lot of customers that contact us by phone to make payments by credit card for their orders. They require a receipt, which they want via email. We would like to be able to customize receipts to include fields that are not currently on the receipts, and wew would like the ability to customize the receipts to only include information we want to share with the customer, and add customer or content specific information we wish to add to the receipts.

MarkB 18 days ago
for customer invoices and receipts, allow fields to be done via a mail merge in Microsoft Word
We have a lot of customers that contact us by phone to make payments by credit card for their orders. They require a receipt, which they want via email. We would like to be able to customize receipts to include fields that are not currently on the receipts, and wew would like the ability to customize the receipts to only include information we want to share with the customer, and add customer or content specific information we wish to add to the receipts.

MarkB 18 days ago
In Progress
Email Center: Custom Button Background Color, Header, Footer & Legal Info
π Problem Statement As a publisher, I can't customize email button colors or add footer content on automated emails, limiting brand and legal compliance control. π‘ User Story As a publisher, I want automated email buttons to use my account's configured brand color, so my emails stay on-brand. As a publisher, I want to add a custom header and footer to all automated emails, so I can include consistent supplementary content. As a publisher, I want my company's legal name and address shown below the custom footer, so my emails meet legal disclosure requirements. π― Definition of Done (DoD) β Given an account has a brand color configured in site settings, when an automated email is sent, then all buttons in that email use the configured color as their background. β Given a publisher has configured a custom header or footer, when any automated email is sent, then that footer renders below the email body. β Given a publisher's legal name and address are configured, when any automated email is sent, then that info renders below the custom footer. β This change will impact UI and API, specifically the Email Center settings and template rendering engine. β This solution will include the following limitations: [clarify β is footer content limited to plain text/links, or does it support images; is legal name/address a new settings field or pulled from an existing one].

Rana Haleem 19 days ago
In Progress
Email Center: Custom Button Background Color, Header, Footer & Legal Info
π Problem Statement As a publisher, I can't customize email button colors or add footer content on automated emails, limiting brand and legal compliance control. π‘ User Story As a publisher, I want automated email buttons to use my account's configured brand color, so my emails stay on-brand. As a publisher, I want to add a custom header and footer to all automated emails, so I can include consistent supplementary content. As a publisher, I want my company's legal name and address shown below the custom footer, so my emails meet legal disclosure requirements. π― Definition of Done (DoD) β Given an account has a brand color configured in site settings, when an automated email is sent, then all buttons in that email use the configured color as their background. β Given a publisher has configured a custom header or footer, when any automated email is sent, then that footer renders below the email body. β Given a publisher's legal name and address are configured, when any automated email is sent, then that info renders below the custom footer. β This change will impact UI and API, specifically the Email Center settings and template rendering engine. β This solution will include the following limitations: [clarify β is footer content limited to plain text/links, or does it support images; is legal name/address a new settings field or pulled from an existing one].

Rana Haleem 19 days ago
In Progress
Support XML invoices formats
Problem Statement Pelcro currently generates invoices as standard PDF documents only. Customers operating in Germany need to issue invoices that comply with local electronic invoicing standards, which require invoices to be delivered in structured, machine-readable formats. Specifically, customers require support for: XRechnung: a standalone XML electronic invoice format used primarily for German public sector invoicing. ZUGFeRD: a hybrid format that combines a standard PDF invoice with embedded XML invoice data. Without support for these standards, customers must manually recreate invoices using third-party tools before submitting them, preventing Pelcro from serving as their complete invoicing solution. User Story As a Pelcro customer issuing invoices in Germany, I want Pelcro to generate invoices in both XRechnung and ZUGFeRD formats, so that I can comply with my customers' electronic invoicing requirements without using external systems. Definition of Done Support generation of invoices in both supported e-invoicing formats: XRechnung (XML) ZUGFeRD (PDF with embedded XML) Generate XML compliant with the supported EN16931/XRechnung specification. Populate all mandatory fields from Pelcro invoice data, including: Invoice number Invoice date Supplier information Buyer information Invoice line items Quantity Unit prices Taxes Discounts (where applicable) Currency Payment terms Invoice totals Support inclusion of the Leitweg-ID (Routing ID) for XRechnung invoices when required. Validate generated XML against the supported specification before delivery. Invoice Generation XRechnung Generate a standalone XML invoice. Allow users to download the XML file. ZUGFeRD Generate the standard PDF invoice. Embed the generated XML into the PDF. The PDF appearance remains unchanged while containing the embedded XML attachment. Platform Allow users to generate/download invoices in the supported format(s). Existing PDF invoice generation continues to work unchanged for customers not using e-invoicing. If applicable, allow accounts to configure their preferred invoice format. Validation XML validates against the supported XRechnung/EN16931 specification. ZUGFeRD PDFs contain valid embedded XML. Invoice values in the XML match those displayed in the PDF. Leitweg-ID is included in XRechnung invoices when configured.

Rana Haleem 19 days ago
In Progress
Support XML invoices formats
Problem Statement Pelcro currently generates invoices as standard PDF documents only. Customers operating in Germany need to issue invoices that comply with local electronic invoicing standards, which require invoices to be delivered in structured, machine-readable formats. Specifically, customers require support for: XRechnung: a standalone XML electronic invoice format used primarily for German public sector invoicing. ZUGFeRD: a hybrid format that combines a standard PDF invoice with embedded XML invoice data. Without support for these standards, customers must manually recreate invoices using third-party tools before submitting them, preventing Pelcro from serving as their complete invoicing solution. User Story As a Pelcro customer issuing invoices in Germany, I want Pelcro to generate invoices in both XRechnung and ZUGFeRD formats, so that I can comply with my customers' electronic invoicing requirements without using external systems. Definition of Done Support generation of invoices in both supported e-invoicing formats: XRechnung (XML) ZUGFeRD (PDF with embedded XML) Generate XML compliant with the supported EN16931/XRechnung specification. Populate all mandatory fields from Pelcro invoice data, including: Invoice number Invoice date Supplier information Buyer information Invoice line items Quantity Unit prices Taxes Discounts (where applicable) Currency Payment terms Invoice totals Support inclusion of the Leitweg-ID (Routing ID) for XRechnung invoices when required. Validate generated XML against the supported specification before delivery. Invoice Generation XRechnung Generate a standalone XML invoice. Allow users to download the XML file. ZUGFeRD Generate the standard PDF invoice. Embed the generated XML into the PDF. The PDF appearance remains unchanged while containing the embedded XML attachment. Platform Allow users to generate/download invoices in the supported format(s). Existing PDF invoice generation continues to work unchanged for customers not using e-invoicing. If applicable, allow accounts to configure their preferred invoice format. Validation XML validates against the supported XRechnung/EN16931 specification. ZUGFeRD PDFs contain valid embedded XML. Invoice values in the XML match those displayed in the PDF. Leitweg-ID is included in XRechnung invoices when configured.

Rana Haleem 19 days ago
In Progress
Support fallback to live agents in Voice Agent + customize greeting message
Problem Statement The AI Voice Agent currently does not support escalation or transfer to a live support agent. When the AI cannot resolve a customerβs request, the caller has no clear way to continue receiving assistance. Clients need a configurable option within the AI Customer Support settings to define the phone number or routing destination used for live-agent transfers. User Story As a client using the AI Voice Agent, I want to configure a live-agent routing number, So that callers can be transferred to my support team when the AI cannot resolve their request or when they ask to speak with a person. Definition of Done Configure greeting message in the AI settings example "Hello..." Add a Live Agent Fallback section under the AI Customer Support settings. Allow clients to enable or disable live-agent transfer. Allow clients to enter and save a valid phone number or routing destination. Define when the transfer should be triggered, including: The caller explicitly asks to speak with a live agent. The AI cannot understand or resolve the request after a defined number of attempts. The requested action is not supported by the AI Voice Agent. Before transferring, the AI informs the caller that they are being connected to a live agent. If the transfer fails or the number is unavailable, the AI provides a clear fallback message. Validate the entered phone number before saving. Display the configured routing number in the settings and allow clients to update or remove it. Record transfer attempts and outcomes in the call logs.

Rana Haleem 19 days ago
In Progress
Support fallback to live agents in Voice Agent + customize greeting message
Problem Statement The AI Voice Agent currently does not support escalation or transfer to a live support agent. When the AI cannot resolve a customerβs request, the caller has no clear way to continue receiving assistance. Clients need a configurable option within the AI Customer Support settings to define the phone number or routing destination used for live-agent transfers. User Story As a client using the AI Voice Agent, I want to configure a live-agent routing number, So that callers can be transferred to my support team when the AI cannot resolve their request or when they ask to speak with a person. Definition of Done Configure greeting message in the AI settings example "Hello..." Add a Live Agent Fallback section under the AI Customer Support settings. Allow clients to enable or disable live-agent transfer. Allow clients to enter and save a valid phone number or routing destination. Define when the transfer should be triggered, including: The caller explicitly asks to speak with a live agent. The AI cannot understand or resolve the request after a defined number of attempts. The requested action is not supported by the AI Voice Agent. Before transferring, the AI informs the caller that they are being connected to a live agent. If the transfer fails or the number is unavailable, the AI provides a clear fallback message. Validate the entered phone number before saving. Display the configured routing number in the settings and allow clients to update or remove it. Record transfer attempts and outcomes in the call logs.

Rana Haleem 19 days ago
In Progress
Vendor Assignment Change History
Problem Statement Pelcro does not currently provide a clear way to track the history of address assignments between vendors. When addresses are temporarily reassigned from one vendor to another, users cannot easily identify which addresses originally belonged to the unavailable vendor or restore the previous assignments when that vendor returns. This creates operational risk and requires users to rely on manual records. User Story As an Operations Manager, I want to view vendor assignment changes, so that I can restore the correct addresses to their previous vendor without manually identifying them. Definition of Done Vendor profile pages include an Assignment History section. Every individual and bulk vendor reassignment creates an assignment-history record. The record includes: Previous vendor New vendor Affected address IDs Number of addresses Date and time User or AI Agent that performed the action Optional reason Unique operation ID Users can view the list of addresses affected by each operation and export it

Rana Haleem 19 days ago
In Progress
Vendor Assignment Change History
Problem Statement Pelcro does not currently provide a clear way to track the history of address assignments between vendors. When addresses are temporarily reassigned from one vendor to another, users cannot easily identify which addresses originally belonged to the unavailable vendor or restore the previous assignments when that vendor returns. This creates operational risk and requires users to rely on manual records. User Story As an Operations Manager, I want to view vendor assignment changes, so that I can restore the correct addresses to their previous vendor without manually identifying them. Definition of Done Vendor profile pages include an Assignment History section. Every individual and bulk vendor reassignment creates an assignment-history record. The record includes: Previous vendor New vendor Affected address IDs Number of addresses Date and time User or AI Agent that performed the action Optional reason Unique operation ID Users can view the list of addresses affected by each operation and export it

Rana Haleem 19 days ago
Planned
Support Bulk Changes for Vendors assignment through AI agent
Problem Statement Managing vendor assignments at scale is currently a manual and time-consuming process. When delivery areas change or operational adjustments are needed, users must reassign addresses individually from one vendor to another. This becomes inefficient for large numbers of addresses and increases the risk of errors. Providing bulk vendor reassignment through the AI Agent will enable users to update vendor assignments quickly using natural language commands, improving operational efficiency and reducing manual effort. User Story As an Operations Manager, I want to bulk reassign addresses from one vendor to another using the AI Agent, so that I can efficiently update vendor assignments without manually editing each address. Definition of Done AI Agent The AI Agent understands bulk vendor reassignment requests using natural language (e.g., "Move all addresses assigned to Vendor A to Vendor B."). The AI Agent identifies: Source vendor. Destination vendor. Scope of addresses to be reassigned (all or based on provided criteria). Before executing the change, the AI Agent presents a summary including: Source vendor. Destination vendor. Number of affected addresses. The AI Agent requires user confirmation before applying the changes. Vendor Assignment Upon confirmation, all matching addresses are reassigned from the source vendor to the destination vendor. Only the vendor assignment is updated; all other address data remains unchanged. Existing validation and permission checks continue to apply. If the destination vendor does not exist, the AI Agent informs the user and no changes are made. If no matching addresses are found, the AI Agent informs the user and no changes are made.

Rana Haleem 19 days ago
Planned
Support Bulk Changes for Vendors assignment through AI agent
Problem Statement Managing vendor assignments at scale is currently a manual and time-consuming process. When delivery areas change or operational adjustments are needed, users must reassign addresses individually from one vendor to another. This becomes inefficient for large numbers of addresses and increases the risk of errors. Providing bulk vendor reassignment through the AI Agent will enable users to update vendor assignments quickly using natural language commands, improving operational efficiency and reducing manual effort. User Story As an Operations Manager, I want to bulk reassign addresses from one vendor to another using the AI Agent, so that I can efficiently update vendor assignments without manually editing each address. Definition of Done AI Agent The AI Agent understands bulk vendor reassignment requests using natural language (e.g., "Move all addresses assigned to Vendor A to Vendor B."). The AI Agent identifies: Source vendor. Destination vendor. Scope of addresses to be reassigned (all or based on provided criteria). Before executing the change, the AI Agent presents a summary including: Source vendor. Destination vendor. Number of affected addresses. The AI Agent requires user confirmation before applying the changes. Vendor Assignment Upon confirmation, all matching addresses are reassigned from the source vendor to the destination vendor. Only the vendor assignment is updated; all other address data remains unchanged. Existing validation and permission checks continue to apply. If the destination vendor does not exist, the AI Agent informs the user and no changes are made. If no matching addresses are found, the AI Agent informs the user and no changes are made.

Rana Haleem 19 days ago
Planned
Introduce redelivery management
Problem Statement The platform currently does not support a clear notion of redelivery for missed, failed, or damaged shipments. When a shipment needs to be sent again, there is no standardized way to: Mark the original fulfillment as requiring redelivery. Identify all subscriptions that need a replacement shipment. Generate a fulfillment list specifically for redeliveries. Track whether the redelivery was completed. Distinguish the replacement shipment from the original fulfillment. As a result, redeliveries must be managed manually outside the normal fulfillment workflow, increasing the risk of missed requests, duplicate shipments, and inaccurate reporting. User Story As an operations administrator, I want to mark a shipment as requiring redelivery on the subscription details and generate a fulfillment list containing all pending redeliveries, so that replacement shipments can be processed, tracked, and completed through the standard fulfillment workflow. Definition of Done Redelivery Status A fulfillment or shipment associated with a subscription can be marked as requiring redelivery. The redelivery indicator includes a clear status, such as: Redelivery Required Redelivered Redelivery Cancelled SIMILAR TO SHIPMENTS & RETURNS FLOW > SIMILAR TO RETURNS Redelivery reason. Notes. Quantity to redeliver. Original fulfillment reference. Fulfillment List Filtering Lists can be filtered to show subscriptions/ shipments with a pending redelivery. Administrators can generate a dedicated fulfillment list for all eligible redeliveries. The original fulfillment record remains unchanged for historical accuracy. Approving the replacement fulfillment updates the redelivery request to Redelivered. Should be logged under the sub details the redelivery changes. Duplicate Prevention Administrators receive a warning or validation message when a replacement fulfillment already exists.

Rana Haleem 19 days ago
Planned
Introduce redelivery management
Problem Statement The platform currently does not support a clear notion of redelivery for missed, failed, or damaged shipments. When a shipment needs to be sent again, there is no standardized way to: Mark the original fulfillment as requiring redelivery. Identify all subscriptions that need a replacement shipment. Generate a fulfillment list specifically for redeliveries. Track whether the redelivery was completed. Distinguish the replacement shipment from the original fulfillment. As a result, redeliveries must be managed manually outside the normal fulfillment workflow, increasing the risk of missed requests, duplicate shipments, and inaccurate reporting. User Story As an operations administrator, I want to mark a shipment as requiring redelivery on the subscription details and generate a fulfillment list containing all pending redeliveries, so that replacement shipments can be processed, tracked, and completed through the standard fulfillment workflow. Definition of Done Redelivery Status A fulfillment or shipment associated with a subscription can be marked as requiring redelivery. The redelivery indicator includes a clear status, such as: Redelivery Required Redelivered Redelivery Cancelled SIMILAR TO SHIPMENTS & RETURNS FLOW > SIMILAR TO RETURNS Redelivery reason. Notes. Quantity to redeliver. Original fulfillment reference. Fulfillment List Filtering Lists can be filtered to show subscriptions/ shipments with a pending redelivery. Administrators can generate a dedicated fulfillment list for all eligible redeliveries. The original fulfillment record remains unchanged for historical accuracy. Approving the replacement fulfillment updates the redelivery request to Redelivered. Should be logged under the sub details the redelivery changes. Duplicate Prevention Administrators receive a warning or validation message when a replacement fulfillment already exists.

Rana Haleem 19 days ago
Planned
Enhance bundle tops report
Problem statement Carriers deliver bundles of papers along a route, in a specific walk (delivery) sequence. Today Pelcro's "Bundle Top" is a generic label sheet β customer name, address, product, date, quantity β with no route grouping, no delivery-sequence ordering, and no carrier context. User story As a circulation/fulfillment operator, I want to export a Bundle Top per fulfillment that is grouped by carrier route and ordered by delivery sequence, with each subscriber's delivery details and per-route totals, so that each carrier receives an accurate, walk-ordered manifest of exactly what to deliver and how many bundles to prepare. Supporting: As a carrier, I want my route's stops listed in the order I drive them, with copy counts and delivery instructions, so I can deliver without re-sorting. DOD: Part 1 β Available now (just add to the report) Pelcro already captures this information β the first version of the report simply organizes and presents it. No new setup or development beyond the report itself. What the PDF shows Carrier name & phone Total draws Carrier route Delivery sequence (the order the carrier drives the route) Delivery instructions Delivery date Subscriber name Subscriber delivery address Subscriber phone Product / publication Number of copies How the report behaves One file per fulfillment, covering all routes. Each route shows a subtotal (total copies); the file ends with an overall total. The report only includes the carriers already selected for that fulfillment. Each subscriber should appear in one separate page pdf (see example attached)

Rana Haleem 19 days ago
Planned
Enhance bundle tops report
Problem statement Carriers deliver bundles of papers along a route, in a specific walk (delivery) sequence. Today Pelcro's "Bundle Top" is a generic label sheet β customer name, address, product, date, quantity β with no route grouping, no delivery-sequence ordering, and no carrier context. User story As a circulation/fulfillment operator, I want to export a Bundle Top per fulfillment that is grouped by carrier route and ordered by delivery sequence, with each subscriber's delivery details and per-route totals, so that each carrier receives an accurate, walk-ordered manifest of exactly what to deliver and how many bundles to prepare. Supporting: As a carrier, I want my route's stops listed in the order I drive them, with copy counts and delivery instructions, so I can deliver without re-sorting. DOD: Part 1 β Available now (just add to the report) Pelcro already captures this information β the first version of the report simply organizes and presents it. No new setup or development beyond the report itself. What the PDF shows Carrier name & phone Total draws Carrier route Delivery sequence (the order the carrier drives the route) Delivery instructions Delivery date Subscriber name Subscriber delivery address Subscriber phone Product / publication Number of copies How the report behaves One file per fulfillment, covering all routes. Each route shows a subtotal (total copies); the file ends with an overall total. The report only includes the carriers already selected for that fulfillment. Each subscriber should appear in one separate page pdf (see example attached)

Rana Haleem 19 days ago
In Planning
Open API coupon validation
Pelcro today returns a generic invalid result for coupon validation across many distinct business rules (expired, wrong plan, segment, redemption limits, etc.), with inconsistent HTTP statuses and free-text messages whose location varies by case. To support our checkout flow, we need a stable, enumerated failure_reason_code on every coupon validation failure β order preview, subscription commit, and campaign-attached coupons (coupon.valid: false) β returned with one documented HTTP status at a fixed body location, identifying the coupon as the failing input, plus structured failure_reason_detail for support and ops. We will map codes to subscriber-facing copy and will manage any abuse/enumeration messaging on its side β please do not collapse distinct failure reasons in the API. Please provide a published reason-code dictionary, sample error payloads for each code, and confirmation that sticky re-validation on plan change returns plan-eligibility failures distinctly from expired/unknown codes. Attached is a more complete requirements document. Please review.

Mike Gilbert 19 days ago
In Planning
Open API coupon validation
Pelcro today returns a generic invalid result for coupon validation across many distinct business rules (expired, wrong plan, segment, redemption limits, etc.), with inconsistent HTTP statuses and free-text messages whose location varies by case. To support our checkout flow, we need a stable, enumerated failure_reason_code on every coupon validation failure β order preview, subscription commit, and campaign-attached coupons (coupon.valid: false) β returned with one documented HTTP status at a fixed body location, identifying the coupon as the failing input, plus structured failure_reason_detail for support and ops. We will map codes to subscriber-facing copy and will manage any abuse/enumeration messaging on its side β please do not collapse distinct failure reasons in the API. Please provide a published reason-code dictionary, sample error payloads for each code, and confirmation that sticky re-validation on plan change returns plan-eligibility failures distinctly from expired/unknown codes. Attached is a more complete requirements document. Please review.

Mike Gilbert 19 days ago
2FA via Email Verification Code at Login
Problem Statement Client sites currently authenticate end users with a single factor (password only), leaving accounts vulnerable to takeover if credentials are compromised. There is no email-based verification step at login to confirm the person signing in is the legitimate account owner. User Story As an end user logging into a client's site, after I enter my correct credentials I want to receive a one-time verification code at the email address on my account, and I should not be able to access or interact with the site until I've entered that code, so that my account stays protected even if my password is compromised. Definition of Done On successful password validation, a one-time verification code is generated and sent to the email address on record for the account (not a user-entered address). The user is shown a verification screen and cannot access any part of the client site until the code is confirmed β enforced via a limited "pending verification" cookie/session state that grants no access to protected routes, APIs, or content. The full authenticated session cookie is only issued after the code is confirmed. Codes are single-use, numeric, cryptographically random, and expire after a short window (e.g. 10 minutes). Requesting a new code invalidates any previously issued code. Code requests/resends are rate-limited, and verification attempts per code are capped (e.g. 5 tries) with escalating lockout/backoff to prevent brute-forcing. Verification attempts (success/failure, timestamp, IP) are logged for audit and abuse detection, without storing the code itself in plaintext logs. Users have a clear resend option and guidance if the email doesn't arrive, plus a support fallback path. The unverified/pending state cannot be bypassed via direct URL access, deep links, or stored client-side state. SMS, authenticator apps (TOTP), and changes to the core password authentication flow are explicitly out of scope.

Galal Abdo 25 days ago
2FA via Email Verification Code at Login
Problem Statement Client sites currently authenticate end users with a single factor (password only), leaving accounts vulnerable to takeover if credentials are compromised. There is no email-based verification step at login to confirm the person signing in is the legitimate account owner. User Story As an end user logging into a client's site, after I enter my correct credentials I want to receive a one-time verification code at the email address on my account, and I should not be able to access or interact with the site until I've entered that code, so that my account stays protected even if my password is compromised. Definition of Done On successful password validation, a one-time verification code is generated and sent to the email address on record for the account (not a user-entered address). The user is shown a verification screen and cannot access any part of the client site until the code is confirmed β enforced via a limited "pending verification" cookie/session state that grants no access to protected routes, APIs, or content. The full authenticated session cookie is only issued after the code is confirmed. Codes are single-use, numeric, cryptographically random, and expire after a short window (e.g. 10 minutes). Requesting a new code invalidates any previously issued code. Code requests/resends are rate-limited, and verification attempts per code are capped (e.g. 5 tries) with escalating lockout/backoff to prevent brute-forcing. Verification attempts (success/failure, timestamp, IP) are logged for audit and abuse detection, without storing the code itself in plaintext logs. Users have a clear resend option and guidance if the email doesn't arrive, plus a support fallback path. The unverified/pending state cannot be bypassed via direct URL access, deep links, or stored client-side state. SMS, authenticator apps (TOTP), and changes to the core password authentication flow are explicitly out of scope.

Galal Abdo 25 days ago
Expose User Registration Date in Pelcro.user.read() SDK method Response
πProblem Statement We are implementing analytics improvements that rely on the data returned by Pelcro.user.read(). While subscription-related dates are available, the user's registration date is not returned, preventing us from including it in our data layer for analytics and tracking purposes. π‘User Story We want the user's registration date to be returned by Pelcro.user.read() SDK method so that we can include it in our analytics and tracking implementation alongside the existing subscription dates. π―Definition of Done β Pelcro.user.read()SDK method returns the user's registration date. βThe registration date is returned in a consistent YYYY-MM-DD format.

Nada Shoukry 25 days ago
Expose User Registration Date in Pelcro.user.read() SDK method Response
πProblem Statement We are implementing analytics improvements that rely on the data returned by Pelcro.user.read(). While subscription-related dates are available, the user's registration date is not returned, preventing us from including it in our data layer for analytics and tracking purposes. π‘User Story We want the user's registration date to be returned by Pelcro.user.read() SDK method so that we can include it in our analytics and tracking implementation alongside the existing subscription dates. π―Definition of Done β Pelcro.user.read()SDK method returns the user's registration date. βThe registration date is returned in a consistent YYYY-MM-DD format.

Nada Shoukry 25 days ago
Available
[Merged] Add "Set as Default Payment Method" Option to the Default UI
[Merged into We want an existing card to be automatically marked as the default during a new subscription purchase] πProblem Statement Currently, when a customer adds a new payment method through the Default UI, it is not automatically set as the default payment method. As a result, customers must navigate to their saved payment methods and manually change the default before they can remove the old card. This creates unnecessary friction and can lead to failed renewals if the old default payment method remains in place. π‘User Story As a customer updating my payment method, I want the option to set my newly added payment method as the default during the add payment method flow, so that I don't have to update it separately afterward. π―Definition of Done β Add a "Set as default payment method" checkbox to the Default UI payment method modal. βWhen selected, the newly added payment method is immediately set as the customer's default payment method after it is successfully added.

Nada Shoukry 30 days ago
Available
[Merged] Add "Set as Default Payment Method" Option to the Default UI
[Merged into We want an existing card to be automatically marked as the default during a new subscription purchase] πProblem Statement Currently, when a customer adds a new payment method through the Default UI, it is not automatically set as the default payment method. As a result, customers must navigate to their saved payment methods and manually change the default before they can remove the old card. This creates unnecessary friction and can lead to failed renewals if the old default payment method remains in place. π‘User Story As a customer updating my payment method, I want the option to set my newly added payment method as the default during the add payment method flow, so that I don't have to update it separately afterward. π―Definition of Done β Add a "Set as default payment method" checkbox to the Default UI payment method modal. βWhen selected, the newly added payment method is immediately set as the customer's default payment method after it is successfully added.

Nada Shoukry 30 days ago
Allow Payment Method Deletion When Currently Blocked (manual-renewal & only-method-on-file)
π Problem Statement Customers and admins cannot delete a saved payment method in situations where keeping it provides no functional benefit and blocks legitimate requests: (a) when the method is tied only to manual-renewal subscriptions β which do not process recurring payments, so requiring a replacement is pointless β and (b) when it is the only payment method on file (including ACH), which blocks admins from honouring customer data-removal requests. π‘ User Story As a customer or Pelcro admin, I want to remove a saved payment method in these currently-blocked scenarios without being forced to add a replacement, so that I can clean up unused methods and fulfil data-removal requests. π― Definition of Done (DoD) β Allow deletion of a payment method tied only to manual-renewal subscription(s) without requiring a replacement. β Allow admin removal of the only saved payment method on an account (including ACH); any linked subscriptions transition to manual/invoice billing. β This change will impact UI / API β the payment-method management UI and the payment-method resource (Core API).

Nada Shoukry 30 days ago
Allow Payment Method Deletion When Currently Blocked (manual-renewal & only-method-on-file)
π Problem Statement Customers and admins cannot delete a saved payment method in situations where keeping it provides no functional benefit and blocks legitimate requests: (a) when the method is tied only to manual-renewal subscriptions β which do not process recurring payments, so requiring a replacement is pointless β and (b) when it is the only payment method on file (including ACH), which blocks admins from honouring customer data-removal requests. π‘ User Story As a customer or Pelcro admin, I want to remove a saved payment method in these currently-blocked scenarios without being forced to add a replacement, so that I can clean up unused methods and fulfil data-removal requests. π― Definition of Done (DoD) β Allow deletion of a payment method tied only to manual-renewal subscription(s) without requiring a replacement. β Allow admin removal of the only saved payment method on an account (including ACH); any linked subscriptions transition to manual/invoice billing. β This change will impact UI / API β the payment-method management UI and the payment-method resource (Core API).

Nada Shoukry 30 days ago