Multi-Year Coupon Request
Currently, our coupons only support a one-year discount for annual plans, but we have a couple of use cases where we'd want the discount to span multiple years, and then have the coupon fall off so the subscriber renews into the full price of the subscription. We have the ability to do this with monthly plans using the βrepeatingβ coupon duration but this is not an option for annual plans. Some use cases include: Students renewing at a discounted rate for 4 years, then moving to the full price in year 5 A multi-year rate lock campaign, where a subscriber gets a set price for 2-3 years and then renews into the full price. Please let me know if you need additional information. Tagging @Mike Gilbert for any additional technical concerns. Thank you!

Julie S about 3 hours ago
Multi-Year Coupon Request
Currently, our coupons only support a one-year discount for annual plans, but we have a couple of use cases where we'd want the discount to span multiple years, and then have the coupon fall off so the subscriber renews into the full price of the subscription. We have the ability to do this with monthly plans using the βrepeatingβ coupon duration but this is not an option for annual plans. Some use cases include: Students renewing at a discounted rate for 4 years, then moving to the full price in year 5 A multi-year rate lock campaign, where a subscriber gets a set price for 2-3 years and then renews into the full price. Please let me know if you need additional information. Tagging @Mike Gilbert for any additional technical concerns. Thank you!

Julie S about 3 hours ago
Allow Scheduled Renewal Phase to Start Early
π Problem Statement For shipment-based subscriptions, a subscription can reach 0 shipments remaining while there is still time left in the current subscription period. The renewal is scheduled to begin once the current period ends, but there is currently no way to activate the renewal early. This prevents the subscriber from being included in an upcoming fulfillment when the publisher needs to start the next shipment cycle before the current period ends. π‘ User Story As a publisher managing shipment-based subscriptions, I want to manually activate the next scheduled renewal before the current subscription period ends, so that subscribers who have exhausted their shipments can be included in an upcoming fulfillment without waiting for the current period to expire. π― Definition of Done (DoD) β Authorized users can manually activate the next scheduled renewal before the current subscription period ends. β The subscription moves to the renewal phase and receives the appropriate shipment allocation when activated. β The subscriber becomes eligible for the next fulfillment/shipment list. β Scheduled renewals continue to activate automatically at the end of the current period when no early activation is performed.

Nada Shoukry 8 days ago
Allow Scheduled Renewal Phase to Start Early
π Problem Statement For shipment-based subscriptions, a subscription can reach 0 shipments remaining while there is still time left in the current subscription period. The renewal is scheduled to begin once the current period ends, but there is currently no way to activate the renewal early. This prevents the subscriber from being included in an upcoming fulfillment when the publisher needs to start the next shipment cycle before the current period ends. π‘ User Story As a publisher managing shipment-based subscriptions, I want to manually activate the next scheduled renewal before the current subscription period ends, so that subscribers who have exhausted their shipments can be included in an upcoming fulfillment without waiting for the current period to expire. π― Definition of Done (DoD) β Authorized users can manually activate the next scheduled renewal before the current subscription period ends. β The subscription moves to the renewal phase and receives the appropriate shipment allocation when activated. β The subscriber becomes eligible for the next fulfillment/shipment list. β Scheduled renewals continue to activate automatically at the end of the current period when no early activation is performed.

Nada Shoukry 8 days ago
In Planning
Saving Rules to Projects in AI Agent
π Problem Statement As an AI Agent user running recurring reports, I must re-explain rules and business processes in every new conversation, wasting time and causing inconsistent output. π‘ User Story As an AI Agent user, I want to save reusable rules/processes to a shared project, so that new conversations reuse them automatically without re-explaining. As a teammate, I want access to shared project rules, so that I can run the same reports consistently without rebuilding context. π― Definition of Done (DoD) β Given a saved project with stored rules, when a new conversation starts within that project, then the AI Agent applies those rules without re-entry. β Given a project with multiple members, when a teammate opens the project, then they see and can use the same stored rules.

Ahmed Soliman 9 days ago
In Planning
Saving Rules to Projects in AI Agent
π Problem Statement As an AI Agent user running recurring reports, I must re-explain rules and business processes in every new conversation, wasting time and causing inconsistent output. π‘ User Story As an AI Agent user, I want to save reusable rules/processes to a shared project, so that new conversations reuse them automatically without re-explaining. As a teammate, I want access to shared project rules, so that I can run the same reports consistently without rebuilding context. π― Definition of Done (DoD) β Given a saved project with stored rules, when a new conversation starts within that project, then the AI Agent applies those rules without re-entry. β Given a project with multiple members, when a teammate opens the project, then they see and can use the same stored rules.

Ahmed Soliman 9 days ago
In Progress
Expose payment_method_status, institutional_member & seat_status in webhook payloads
Problem Statement As a Pelcro integration developer, I experience three required fields being unavailable from the Pelcro webhook payloads when building ESP and CRM syncs, which results in either dropping the field from the integration or making an extra authenticated API call per event β added latency, rate-limit pressure, and a per-integration workaround instead of one platform fix. User Story As a Pelcro integration developer, I want payment_method_status, institutional_member and seat_status to arrive on the existing customer and subscription webhook payloads, so that any downstream integration can map them directly with no supplementary API calls. Definition of Done A feature is done when: Given a subscription with a payment method, when a subscription.* webhook fires, then the payload's payment method / source object includes status (chargeable / pending / failed / ...) matching that payment method's actual state in Pelcro. Given a customer holding an institutional or membership seat, when a customer.* or subscription.* webhook fires, then the payload includes institutional_member and seat_status, resolvable without a supplementary API call. [TO BE DETERMINED] β exact semantics pending client clarification, see Open Questions. This change will impact the API (webhook payload serialization in pelcro-core β app/WebHooks/Resources/, including SourceResource). No SDK, UI, or Integration changes in this task. This solution will include the following limitations: additive fields only, no existing field renamed, removed or retyped; no backfill or replay of historical webhook events; seat_status semantics for individual (non-membership) subscriptions remain undefined until the client confirms.

Rana Haleem 9 days ago
In Progress
Expose payment_method_status, institutional_member & seat_status in webhook payloads
Problem Statement As a Pelcro integration developer, I experience three required fields being unavailable from the Pelcro webhook payloads when building ESP and CRM syncs, which results in either dropping the field from the integration or making an extra authenticated API call per event β added latency, rate-limit pressure, and a per-integration workaround instead of one platform fix. User Story As a Pelcro integration developer, I want payment_method_status, institutional_member and seat_status to arrive on the existing customer and subscription webhook payloads, so that any downstream integration can map them directly with no supplementary API calls. Definition of Done A feature is done when: Given a subscription with a payment method, when a subscription.* webhook fires, then the payload's payment method / source object includes status (chargeable / pending / failed / ...) matching that payment method's actual state in Pelcro. Given a customer holding an institutional or membership seat, when a customer.* or subscription.* webhook fires, then the payload includes institutional_member and seat_status, resolvable without a supplementary API call. [TO BE DETERMINED] β exact semantics pending client clarification, see Open Questions. This change will impact the API (webhook payload serialization in pelcro-core β app/WebHooks/Resources/, including SourceResource). No SDK, UI, or Integration changes in this task. This solution will include the following limitations: additive fields only, no existing field renamed, removed or retyped; no backfill or replay of historical webhook events; seat_status semantics for individual (non-membership) subscriptions remain undefined until the client confirms.

Rana Haleem 9 days ago
In Progress
Pelcro Tickets vs Zendesk
π Problem Statement As a support engineer, I lack ticket triage, internal collaboration, and SLA visibility in Pelcro, which results in reliance on Zendesk for core support workflows. π‘ User Story As a support engineer, I want inbound emails to support@ to auto-create a ticket assigned to an agent, so that no request is missed or manually re-entered. As a support engineer, I want to add internal notes on a ticket, so that I can coordinate with teammates without exposing context to the client. As a support engineer, I want to set a Priority on each ticket, so that I can triage the queue by urgency. As a support engineer, I want Open/Pending/On-hold/Solved statuses with auto-reopen on client reply, so that ticket state always reflects reality. As a support manager, I want tickets to track first-reply and resolution time, so that I can report on SLA compliance. π― Definition of Done (DoD) β Given a Settings page for Support, when an admin selects a collaborator as the default ticket assignee, then that setting is saved and used for all future auto-created tickets. β Given an email sent to the support inbox, when it's received, then a ticket is auto-created with Source=Email, Status=New, and assigned to the collaborator configured in Settings. β Given an open ticket, when an agent adds a note marked "Internal," then it appears in the ticket timeline but is never sent to or visible by the client. β Given the Create or Edit Ticket drawer, when an agent sets Priority (Low/Medium/High/Urgent), then it saves and displays on the ticket and in the global list. β Given a Solved ticket, when the client replies via email, then the ticket status automatically changes to Open. β Given a ticket, when the first agent email is sent, then first-reply time is recorded from ticket creation to that timestamp; resolution time is recorded from creation to Solved.

Rana Haleem 9 days ago
In Progress
Pelcro Tickets vs Zendesk
π Problem Statement As a support engineer, I lack ticket triage, internal collaboration, and SLA visibility in Pelcro, which results in reliance on Zendesk for core support workflows. π‘ User Story As a support engineer, I want inbound emails to support@ to auto-create a ticket assigned to an agent, so that no request is missed or manually re-entered. As a support engineer, I want to add internal notes on a ticket, so that I can coordinate with teammates without exposing context to the client. As a support engineer, I want to set a Priority on each ticket, so that I can triage the queue by urgency. As a support engineer, I want Open/Pending/On-hold/Solved statuses with auto-reopen on client reply, so that ticket state always reflects reality. As a support manager, I want tickets to track first-reply and resolution time, so that I can report on SLA compliance. π― Definition of Done (DoD) β Given a Settings page for Support, when an admin selects a collaborator as the default ticket assignee, then that setting is saved and used for all future auto-created tickets. β Given an email sent to the support inbox, when it's received, then a ticket is auto-created with Source=Email, Status=New, and assigned to the collaborator configured in Settings. β Given an open ticket, when an agent adds a note marked "Internal," then it appears in the ticket timeline but is never sent to or visible by the client. β Given the Create or Edit Ticket drawer, when an agent sets Priority (Low/Medium/High/Urgent), then it saves and displays on the ticket and in the global list. β Given a Solved ticket, when the client replies via email, then the ticket status automatically changes to Open. β Given a ticket, when the first agent email is sent, then first-reply time is recorded from ticket creation to that timestamp; resolution time is recorded from creation to Solved.

Rana Haleem 9 days ago
In Progress
Multi-subscription merge tags for Mailchimp integration
π Problem Statement As an email marketer at Les DΓ©brouillardes, I can't segment or personalize campaigns per subscription when a customer holds multiple subscriptions, since merge tags only hold the most recent one. π‘ User Story As an email marketer, I want per-subscription merge tags for customers with multiple active subscriptions, so that I can build campaigns targeting specific products (DEB, EXP, CURIUM). π― Definition of Done (DoD) β Given a customer with 2+ active subscriptions, when Mailchimp sync runs, then each subscription's data populates its own indexed merge tag set (e.g. PRODNAME_1, PLANNAME_1, SUBSTATUS_1, PRODNAME_2, PLANNAME_2, SUBSTATUS_2). β This change will impact Integration Orchestrator and API, specifically the Mailchimp sync connector and merge tag mapping logic. β This solution will include the following limitations: indexed tags support up to [TBD - clarify max subscriptions to support, e.g. 5] subscriptions per customer; existing single-subscription merge tags remain unchanged for backward compatibility.

Rana Haleem 9 days ago
In Progress
Multi-subscription merge tags for Mailchimp integration
π Problem Statement As an email marketer at Les DΓ©brouillardes, I can't segment or personalize campaigns per subscription when a customer holds multiple subscriptions, since merge tags only hold the most recent one. π‘ User Story As an email marketer, I want per-subscription merge tags for customers with multiple active subscriptions, so that I can build campaigns targeting specific products (DEB, EXP, CURIUM). π― Definition of Done (DoD) β Given a customer with 2+ active subscriptions, when Mailchimp sync runs, then each subscription's data populates its own indexed merge tag set (e.g. PRODNAME_1, PLANNAME_1, SUBSTATUS_1, PRODNAME_2, PLANNAME_2, SUBSTATUS_2). β This change will impact Integration Orchestrator and API, specifically the Mailchimp sync connector and merge tag mapping logic. β This solution will include the following limitations: indexed tags support up to [TBD - clarify max subscriptions to support, e.g. 5] subscriptions per customer; existing single-subscription merge tags remain unchanged for backward compatibility.

Rana Haleem 9 days ago
Done
Preline Upgrade - Ecommerce
Problem Statement As a publisher admin, I experience an inconsistent dashboard experience because the Ecommerce Orders, Products, and Product SKU pages still run on the legacy Bootstrap-era UI while most of the rest of the dashboard has already moved to Preline, which results in jarring context-switches and duplicated maintenance effort across two design systems. User Story As a publisher admin, I want the Ecommerce Orders, Products, and Product SKU pages rebuilt on Preline, so that I get the same modern, consistent experience I already have on Customers, Subscriptions, and Invoices. Definition of Done A feature is done when: Given a publisher views the Orders, Products, or Product SKU index/create/edit/show pages, when the page loads, then it renders on the Preline layout with full feature parity to the current legacy pages. This change will impact the UI only (Ecommerce\OrderController, Ecommerce\ProductController, Ecommerce\ProductSkuController and their Blade views); no API, SDK, or Integration changes expected. This solution will include the following limitations: legacy views may need to stay reachable via a ?legacy=1 fallback during rollout (same pattern already used for Addresses/Fulfillments); full filter/search parity may require a follow-up pass.

Rana Haleem 9 days ago
Done
Preline Upgrade - Ecommerce
Problem Statement As a publisher admin, I experience an inconsistent dashboard experience because the Ecommerce Orders, Products, and Product SKU pages still run on the legacy Bootstrap-era UI while most of the rest of the dashboard has already moved to Preline, which results in jarring context-switches and duplicated maintenance effort across two design systems. User Story As a publisher admin, I want the Ecommerce Orders, Products, and Product SKU pages rebuilt on Preline, so that I get the same modern, consistent experience I already have on Customers, Subscriptions, and Invoices. Definition of Done A feature is done when: Given a publisher views the Orders, Products, or Product SKU index/create/edit/show pages, when the page loads, then it renders on the Preline layout with full feature parity to the current legacy pages. This change will impact the UI only (Ecommerce\OrderController, Ecommerce\ProductController, Ecommerce\ProductSkuController and their Blade views); no API, SDK, or Integration changes expected. This solution will include the following limitations: legacy views may need to stay reachable via a ?legacy=1 fallback during rollout (same pattern already used for Addresses/Fulfillments); full filter/search parity may require a follow-up pass.

Rana Haleem 9 days ago
In Planning
Make Shipping Address Optional on new checkout UI
π Problem Statement The Shipping Address section on the new checkout UI displays by default and cannot be hidden, even for plans that don't require shipping information. π‘ User Story As a business owner, I want the Shipping Address field to show or hide dynamically based on the shipping requirement configured on the selected plan, so that customers aren't shown irrelevant fields at checkout. π― Definition of Done (DoD) β Given a plan configured without a shipping address requirement, when a subscriber reaches checkout, then the Shipping Address section is not displayed. β Given a plan configured with a shipping address requirement, when a subscriber reaches checkout, then the Shipping Address section is displayed and required. β This change will impact UI, specifically the checkout Shipping Address section.

Nada Shoukry 17 days ago
In Planning
Make Shipping Address Optional on new checkout UI
π Problem Statement The Shipping Address section on the new checkout UI displays by default and cannot be hidden, even for plans that don't require shipping information. π‘ User Story As a business owner, I want the Shipping Address field to show or hide dynamically based on the shipping requirement configured on the selected plan, so that customers aren't shown irrelevant fields at checkout. π― Definition of Done (DoD) β Given a plan configured without a shipping address requirement, when a subscriber reaches checkout, then the Shipping Address section is not displayed. β Given a plan configured with a shipping address requirement, when a subscriber reaches checkout, then the Shipping Address section is displayed and required. β This change will impact UI, specifically the checkout Shipping Address section.

Nada Shoukry 17 days ago
In Progress
AI-Driven Code Customization & Deployment for UI
π Problem Statement As a Pelcro client, I need engineering involvement for every UI customization (paywall, dashboard, member pages), which slows onboarding and blocks self-serve iteration. π‘ User Story As a Pelcro client, I want to describe my site in natural language and get a working, deployable UI, so that I launch and iterate without Pelcro engineers. π― Definition of Done (DoD) β Given a client prompt or uploaded template, when submitted, then the agent produces a working site in the workspace using JS-SDK for all billing actions and Elements where applicable. β Given a workspace build, when the client views it, then a live preview reflects changes without a deploy step. β Given client approval, when Publish is clicked, then the site is served on the client's domain with SSL, and any prior version is restorable in one click. β This change will impact UI, SDK, and API, specifically an agent service, workspace/preview infrastructure, and publish/rollback endpoints. β This solution will include the following limitations: UI only β no integrations or backend logic; billing flows only via JS-SDK; templates must pass validation before use; one production domain per client.

Rana Haleem 18 days ago
In Progress
AI-Driven Code Customization & Deployment for UI
π Problem Statement As a Pelcro client, I need engineering involvement for every UI customization (paywall, dashboard, member pages), which slows onboarding and blocks self-serve iteration. π‘ User Story As a Pelcro client, I want to describe my site in natural language and get a working, deployable UI, so that I launch and iterate without Pelcro engineers. π― Definition of Done (DoD) β Given a client prompt or uploaded template, when submitted, then the agent produces a working site in the workspace using JS-SDK for all billing actions and Elements where applicable. β Given a workspace build, when the client views it, then a live preview reflects changes without a deploy step. β Given client approval, when Publish is clicked, then the site is served on the client's domain with SSL, and any prior version is restorable in one click. β This change will impact UI, SDK, and API, specifically an agent service, workspace/preview infrastructure, and publish/rollback endpoints. β This solution will include the following limitations: UI only β no integrations or backend logic; billing flows only via JS-SDK; templates must pass validation before use; one production domain per client.

Rana Haleem 18 days ago
In Progress
Enhance the AI Billing Agent to support bundled plans with different line items and tax rates
π Problem Statement As a publisher, I cannot create a subscription that invoices as separate line items taxed under different rules, breaking legally required per-item tax display. π‘ User Story As a publisher, I want to describe a bundled plan's components and their tax rates in the AI Plan Assistant, so that each component bills as its own line item. As a publisher, I want to be able to define rules that exclude taxes if a VAT number for the buyer is provided or apply defined rates for certain countries even when VAT number is provided. As a subscriber, I want checkout to show each component's price and tax before I pay, so that the quoted total matches the invoiced total. π― Definition of Done (DoD) A feature is done when: β Given a publisher describes components (print + digital + data center etc) in the AI Plan Assistant, when the plan is saved, then the components persist as a JSON object on the plan. β Tax rules should be defined for each AI-created plan, allowing admins to configure different tax rules for each line item within bundled products in the prompt. Example: βCreate an annual bundle at β¬120 EUR β β¬72 for Loan Libraries Digital and β¬48 for Loan Libraries Print. Apply a 23% VAT rate to Loan Libraries Digital and a 5% VAT rate to Loan Libraries Print.β β Admins can also define invoice note rules in the AI prompt. For example, if a VAT ID is provided and the subscriberβs address is in Germany, apply 7% VAT to print products and add the following invoice note: βTax-exempt intra-Community supply pursuant to Β§ 4 No. 1 lit. b in conjunction with Β§ 6a German VAT Act. No German VAT is charged.β β The AI engine should interpret these rules and apply the appropriate VAT rate to each line item based on the subscriberβs address and the product type. β Given a described component set, when the assistant validates it, then it blocks save unless amounts sum to the plan total, share one currency, and each carries a description and other validations already exist on the AI Plan Assistant. β Given validation passes, when the assistant asks for confirmation, then no plan is written until the publisher explicitly confirms. β Given a component plan, when Open API returns checkout data, then each component's description, amount and resolved tax are included before purchase. Conditions like: when a client's VAT number is provided, either exclude taxes or apply certain rates per country should be covered too. β Given a subscription on a component plan, when it is created or renewed, then the subscription engine invokes the AI Billing Agent and the invoice carries one line item per component. β Given a component line item, when tax is resolved, then the rate derives from the component's tax category and the buyer's shipping address, not from a rate preconfigured on the plan. βNo changes to the existing refund and accounting logic will be introduced as part of this iteration.

Rana Haleem 18 days ago
In Progress
Enhance the AI Billing Agent to support bundled plans with different line items and tax rates
π Problem Statement As a publisher, I cannot create a subscription that invoices as separate line items taxed under different rules, breaking legally required per-item tax display. π‘ User Story As a publisher, I want to describe a bundled plan's components and their tax rates in the AI Plan Assistant, so that each component bills as its own line item. As a publisher, I want to be able to define rules that exclude taxes if a VAT number for the buyer is provided or apply defined rates for certain countries even when VAT number is provided. As a subscriber, I want checkout to show each component's price and tax before I pay, so that the quoted total matches the invoiced total. π― Definition of Done (DoD) A feature is done when: β Given a publisher describes components (print + digital + data center etc) in the AI Plan Assistant, when the plan is saved, then the components persist as a JSON object on the plan. β Tax rules should be defined for each AI-created plan, allowing admins to configure different tax rules for each line item within bundled products in the prompt. Example: βCreate an annual bundle at β¬120 EUR β β¬72 for Loan Libraries Digital and β¬48 for Loan Libraries Print. Apply a 23% VAT rate to Loan Libraries Digital and a 5% VAT rate to Loan Libraries Print.β β Admins can also define invoice note rules in the AI prompt. For example, if a VAT ID is provided and the subscriberβs address is in Germany, apply 7% VAT to print products and add the following invoice note: βTax-exempt intra-Community supply pursuant to Β§ 4 No. 1 lit. b in conjunction with Β§ 6a German VAT Act. No German VAT is charged.β β The AI engine should interpret these rules and apply the appropriate VAT rate to each line item based on the subscriberβs address and the product type. β Given a described component set, when the assistant validates it, then it blocks save unless amounts sum to the plan total, share one currency, and each carries a description and other validations already exist on the AI Plan Assistant. β Given validation passes, when the assistant asks for confirmation, then no plan is written until the publisher explicitly confirms. β Given a component plan, when Open API returns checkout data, then each component's description, amount and resolved tax are included before purchase. Conditions like: when a client's VAT number is provided, either exclude taxes or apply certain rates per country should be covered too. β Given a subscription on a component plan, when it is created or renewed, then the subscription engine invokes the AI Billing Agent and the invoice carries one line item per component. β Given a component line item, when tax is resolved, then the rate derives from the component's tax category and the buyer's shipping address, not from a rate preconfigured on the plan. βNo changes to the existing refund and accounting logic will be introduced as part of this iteration.

Rana Haleem 18 days ago
Done
Hide Archived Plans from Product View & Plan Dropdowns (Lists, Segments, Automations)
π Problem Statement As a Pelcro admin, I experience archived plans cluttering the product view and plan dropdowns, which results in slower plan selection. π‘ User Story As a Pelcro admin, I want to hide archived plans from the product view, so that the product page isn't swamped with inactive plans. As a Pelcro admin, I want a flag to hide archived plans from the plan dropdown in Lists, Segments, and Automations, so that I only see selectable, active plans. π― Definition of Done (DoD) Add setting to enable/disable Hide archived plans in all flows in user settings > Apply only on platform UI and no APis. default is false β Given a product's plan list, when an admin applies the "hide archived plans" filter, then archived plans are excluded from view. β Given the Create List screen (Collections > Lists), when the plan name dropdown is opened, then archived plans are hidden if the flag is enabled. β Given the Create Segment screen (Workflow > Segments), when the plan name dropdown is opened, then archived plans are hidden if the flag is enabled. β Given the Create Automation screen (Workflow > Automations), when the Plan dropdown is opened, then archived plans are hidden or removed by default. β This change will impact UI, specifically the Products page, and the plan dropdowns in List, Segment, and Automation creation. β This solution will include the following limitations: existing Lists, Segments, and Automations already referencing an archived plan are unaffected; default state of the flag is [clarify - opt-in vs. hidden by default].

Rana Haleem 18 days ago
Done
Hide Archived Plans from Product View & Plan Dropdowns (Lists, Segments, Automations)
π Problem Statement As a Pelcro admin, I experience archived plans cluttering the product view and plan dropdowns, which results in slower plan selection. π‘ User Story As a Pelcro admin, I want to hide archived plans from the product view, so that the product page isn't swamped with inactive plans. As a Pelcro admin, I want a flag to hide archived plans from the plan dropdown in Lists, Segments, and Automations, so that I only see selectable, active plans. π― Definition of Done (DoD) Add setting to enable/disable Hide archived plans in all flows in user settings > Apply only on platform UI and no APis. default is false β Given a product's plan list, when an admin applies the "hide archived plans" filter, then archived plans are excluded from view. β Given the Create List screen (Collections > Lists), when the plan name dropdown is opened, then archived plans are hidden if the flag is enabled. β Given the Create Segment screen (Workflow > Segments), when the plan name dropdown is opened, then archived plans are hidden if the flag is enabled. β Given the Create Automation screen (Workflow > Automations), when the Plan dropdown is opened, then archived plans are hidden or removed by default. β This change will impact UI, specifically the Products page, and the plan dropdowns in List, Segment, and Automation creation. β This solution will include the following limitations: existing Lists, Segments, and Automations already referencing an archived plan are unaffected; default state of the flag is [clarify - opt-in vs. hidden by default].

Rana Haleem 18 days ago
Done
Add Phone Number field to Subscriptions, lists, fulfillments, segments, and automation exports
π Problem Statement Currently, phone numbers are not included in subscriptions, lists, fulfillments, segments, and automation exports. Customers relying on SMS notifications, mailing lists, and external marketing automation workflows need the phone number field in exported data. Without it, they must manually retrieve phone numbers or cannot complete their workflows efficiently. π‘ User Story As a Pelcro administrator, I want the Phone Number field to be included in subscription, lists, fulfillments, segments, and automation exports, So that I can use exported data for SMS notifications, mailing lists, and marketing automation without additional manual work. π‘ DoD: Add Phone Number field to Subscriptions, lists, fulfillments, segments, and automation exports

Rana Haleem 18 days ago
Done
Add Phone Number field to Subscriptions, lists, fulfillments, segments, and automation exports
π Problem Statement Currently, phone numbers are not included in subscriptions, lists, fulfillments, segments, and automation exports. Customers relying on SMS notifications, mailing lists, and external marketing automation workflows need the phone number field in exported data. Without it, they must manually retrieve phone numbers or cannot complete their workflows efficiently. π‘ User Story As a Pelcro administrator, I want the Phone Number field to be included in subscription, lists, fulfillments, segments, and automation exports, So that I can use exported data for SMS notifications, mailing lists, and marketing automation without additional manual work. π‘ DoD: Add Phone Number field to Subscriptions, lists, fulfillments, segments, and automation exports

Rana Haleem 18 days ago
Done
Upgrade UI of the Accounting page (Monthly accounting report)
π Problem Statement As a finance user, I experience a legacy Bootstrap Monthly accounting report page, which results in a jarring transition from the surrounding Preline dashboard. π‘ User Story As a finance user, I want the Monthly accounting report page upgraded to Preline, so that month-end reconciliation happens in the same interface as the rest of the dashboard. As a finance user, I want the ledger table to stay readable across horizontal scroll, so that I can trace a transaction row across all seven ledger accounts. π― Definition of Done A feature is done when: Given a finance user opens Accounting, when they select a month and currency, then the ledger table renders on Preline with all rows and both column groups intact. Balance Sheet: Cash - Offline payments, Cash - Online payments, Customer balance, Account receivable, Deferred revenue, Taxes Profit & Loss: Recognized revenue Summary rows: Opening Balance, Total, Closing Balance, Net Agency Given the ledger table is scrolled horizontally, when the user traces a row, then the row-label column stays sticky and both group headers stay aligned to their columns. Given the export controls, when triggered, then per-row download icons, the AR and DR totals-column exports, the total export, and both ALPHA header exports return the same files as today. This change will impact the UI only (the Accounting page Blade view and the Preline AccountingController JS controller); no API, SDK, or Integration changes expected.

Rana Haleem 18 days ago
Done
Upgrade UI of the Accounting page (Monthly accounting report)
π Problem Statement As a finance user, I experience a legacy Bootstrap Monthly accounting report page, which results in a jarring transition from the surrounding Preline dashboard. π‘ User Story As a finance user, I want the Monthly accounting report page upgraded to Preline, so that month-end reconciliation happens in the same interface as the rest of the dashboard. As a finance user, I want the ledger table to stay readable across horizontal scroll, so that I can trace a transaction row across all seven ledger accounts. π― Definition of Done A feature is done when: Given a finance user opens Accounting, when they select a month and currency, then the ledger table renders on Preline with all rows and both column groups intact. Balance Sheet: Cash - Offline payments, Cash - Online payments, Customer balance, Account receivable, Deferred revenue, Taxes Profit & Loss: Recognized revenue Summary rows: Opening Balance, Total, Closing Balance, Net Agency Given the ledger table is scrolled horizontally, when the user traces a row, then the row-label column stays sticky and both group headers stay aligned to their columns. Given the export controls, when triggered, then per-row download icons, the AR and DR totals-column exports, the total export, and both ALPHA header exports return the same files as today. This change will impact the UI only (the Accounting page Blade view and the Preline AccountingController JS controller); no API, SDK, or Integration changes expected.

Rana Haleem 18 days ago
In Progress
Recurring Bills for Vendors/ Carriers
π Problem Statement As an operations administrator, I calculate every carrier's pay outside Pelcro, which makes billing slow, unauditable, and disconnected from actual delivery data. Carriers (vendors) can already be assigned deliveries through delivery zones and fulfillments, and bills can be created manually. What is missing is a standardized way to calculate the amount owed to each carrier based on actual delivery performance: A configurable billing rate per successful delivery. A configurable deduction per missed issue/delivery. A reliable way to calculate delivered and missed quantities from fulfillment data. Protection against route ownership changes (e.g., when a route changes carriers during a billing period). A centralized process to generate bills for all carriers in a billing cycle. π‘ User Story As an operations administrator, I want to select a billing cycle and generate bills for all participating carriers in one run, so that payouts are accurate and repeatable. As an operations administrator, I want to state carrier rates in plain language, so that rates need no new configuration screens. π― Definition of Done (DoD) β Given an admin selects a cycle start and end date, when the bill job runs, then it fetches fulfillments approved inside that window, derives the participating vendors, and generates one bill per vendor. β Given delivered and missed quantities for a cycle, when the bill is calculated, then Net Amount = (Delivered Quantity Γ Delivery Rate) β (Missed Issues Γ Missed Issue Rate). β Given a carrier rate written as an AI Plan pricing rule, when the job runs, then the AI Billing Agent resolves the rate and returns required attributes. β Given rates vary by route, when rules are written, then each rate is its own plan and the admin is responsible for assigning the correct plan to each vendor. β Given a bill is generated, when an admin opens it, then it shows cycle window, carrier, rates applied, delivered quantity, missed quantity, total deductions, and net payable. β Given a bill is generated, when it is audited later, then the fulfillments included in that bill are recorded and retrievable. β Given a bill already exists for a carrier and cycle, when the job reruns, then duplicate bills are prevented. β Given a route changed carrier mid-cycle, when bills are generated, then each fulfillment is attributed to the carrier assigned at the time that fulfillment occurred. β This solution will include the following limitations: Payable path only; approved fulfillments only, consistent with the agent's approved-shipments-only rule; operator-triggered runs with no platform schedule; no tax or multi-currency on carrier bills; missed-delivery capture scoped in a separate task.

Rana Haleem 18 days ago
In Progress
Recurring Bills for Vendors/ Carriers
π Problem Statement As an operations administrator, I calculate every carrier's pay outside Pelcro, which makes billing slow, unauditable, and disconnected from actual delivery data. Carriers (vendors) can already be assigned deliveries through delivery zones and fulfillments, and bills can be created manually. What is missing is a standardized way to calculate the amount owed to each carrier based on actual delivery performance: A configurable billing rate per successful delivery. A configurable deduction per missed issue/delivery. A reliable way to calculate delivered and missed quantities from fulfillment data. Protection against route ownership changes (e.g., when a route changes carriers during a billing period). A centralized process to generate bills for all carriers in a billing cycle. π‘ User Story As an operations administrator, I want to select a billing cycle and generate bills for all participating carriers in one run, so that payouts are accurate and repeatable. As an operations administrator, I want to state carrier rates in plain language, so that rates need no new configuration screens. π― Definition of Done (DoD) β Given an admin selects a cycle start and end date, when the bill job runs, then it fetches fulfillments approved inside that window, derives the participating vendors, and generates one bill per vendor. β Given delivered and missed quantities for a cycle, when the bill is calculated, then Net Amount = (Delivered Quantity Γ Delivery Rate) β (Missed Issues Γ Missed Issue Rate). β Given a carrier rate written as an AI Plan pricing rule, when the job runs, then the AI Billing Agent resolves the rate and returns required attributes. β Given rates vary by route, when rules are written, then each rate is its own plan and the admin is responsible for assigning the correct plan to each vendor. β Given a bill is generated, when an admin opens it, then it shows cycle window, carrier, rates applied, delivered quantity, missed quantity, total deductions, and net payable. β Given a bill is generated, when it is audited later, then the fulfillments included in that bill are recorded and retrievable. β Given a bill already exists for a carrier and cycle, when the job reruns, then duplicate bills are prevented. β Given a route changed carrier mid-cycle, when bills are generated, then each fulfillment is attributed to the carrier assigned at the time that fulfillment occurred. β This solution will include the following limitations: Payable path only; approved fulfillments only, consistent with the agent's approved-shipments-only rule; operator-triggered runs with no platform schedule; no tax or multi-currency on carrier bills; missed-delivery capture scoped in a separate task.

Rana Haleem 18 days 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 22 days 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 22 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 23 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 23 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 29 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 29 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 about 1 month 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 about 1 month ago
In Planning
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 about 1 month ago
In Planning
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 about 1 month 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 about 1 month 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 about 1 month ago