Skip to content

Ignition Crowdfunding v0.13.0

This release rebuilds how pledges, payments, and refunds are modelled. A pledge now carries a simple Pending / Succeeded / Canceled lifecycle, while payments and refunds are tracked as their own records behind it — so a refund is finally a first-class thing the plugin understands, shown as a neutral Partial Refund / Full Refund chip beside the status rather than a confusing extra state. Campaign money is split into a public Pledged figure and an internal Collected figure, and administrators now Declare a campaign’s outcome and Announce a reached goal as deliberate actions. The wp-admin Pledges list and pledge detail screens were rebuilt around the new model, with refund issuing, offline-payment recording, and a Net column.

  • Refunds — Administrators can issue full or partial refunds against a paid pledge from the wp-admin pledge detail screen. A refund never changes the pledge’s status — the lifecycle badge stays Succeeded and a neutral Partial Refund / Full Refund chip appears beside it, with the net contribution shown alongside. Refunds flow through to the backer’s dashboard, the creator’s pledge list, and the CSV exports consistently. See Refunds.
  • Pledged vs Collected — Every campaign now tracks two figures. Pledged is the public-facing number on the progress bar (what backers have committed, less any refunds); Collected is the money actually received, and it’s the figure that decides whether a goal is met. For offline-payment campaigns the public bar moves when a backer pledges, while the goal decision waits until payment is recorded. See Campaign Page — Progress bar.
  • Declare result and announce goal — When a campaign ends, an administrator Declares its outcome (Successful, Failed, or Funded) as an explicit action that sends the outcome emails to backers. A reached goal is Announced the same way. Both are separate from Closing the campaign, and ended-but-undeclared campaigns surface in an Outcome Pending view. See Declaring Campaign Results.
  • Rebuilt admin Pledges screens — The wp-admin Ignition → Pledges list was rebuilt with status filter chips, a Net column, and per-row actions (record offline payment, cancel, issue refund). The pledge detail screen now shows the full payment-and-refund history with a Pledged / Refunded / Net breakdown and a Refunded total tile. See Managing Pledges.
  • Refund emails — Three new notifications fire when a refund is issued: one to the backer, one to the campaign creator, and one to administrators (in the per-pledge admin category). See Email Notifications.
  • Simpler pledge statuses — Pledges now use Pending, Succeeded, and Canceled everywhere — on the campaign page, both dashboards, the admin screens, and the API. The old paid and settled states are gone; “money received” is now a single, unambiguous state.
  • Net-first pledge lists — The backer pledge list and the creator pledges table now show each pledge’s live contribution to the campaign total — the full amount while pending, the post-refund net once succeeded, and $0.00 for a canceled or fully-refunded pledge — so every row reconciles with the progress bar.
  • Reward slots release on full refund — A fully-refunded pledge releases its limited-quantity reward slot automatically, the same as a cancellation; a partial refund keeps the slot claimed.
  • Reshaped CSV exports — The admin and creator pledge exports gain a Net Received column and a Cancel Reason column, and the backer export’s per-status pivot now reflects the new lifecycle. See Settings — Admin pledge and backer exports.
  • Responsive admin tables — The pledge and user-summary detail tables stack cleanly on narrow screens.
  • Pledge decomposition — The pledge is now one of three records: Pledge (the backer’s intent), Payment_Attempt (one try at collecting money), and Refund (money flowing back). Each has its own three-state machine, audit log, and three-tier transition hooks (igcf_pledge_*, igcf_payment_attempt_*, igcf_refund_*). A pledge moves to succeeded when one of its payment attempts succeeds — transports never mutate pledge status directly. See Service Layer and Actions Reference — Pledge lifecycle.
  • New services Igcf_Payment_Attempt_Service and Igcf_Refund_Service — Sibling services for creating, transitioning, and querying payment attempts and refunds, following the existing static-method pattern. Igcf_Pledge_Service gains display helpers (displayed_status(), refund_indicator_label(), status_badge_view()), a combined status log, and net/refund aggregation helpers. See Service Layer.
  • Add-on seam filters — Eight filters give gateway and fee add-ons their composition points without core knowing about fees: igcf_pledge_amount_to_charge, igcf_payment_attempt_application_fee, igcf_attempt_net_to_creator, igcf_refund_proportional_fee_reversal, plus the registries igcf_pledge_cancel_reasons, igcf_payment_attempt_failure_codes, igcf_refund_reasons, and igcf_payment_methods. See Filters Reference — Pledge lifecycle.
  • Reworked pledge abilities — igcf/settle-pledge and igcf/confirm-pledge-payment are removed. New abilities: igcf/record-offline-payment, igcf/issue-refund, igcf/retry-payment-attempt, and igcf/mark-attempt-failed; igcf/cancel-pledge now retires the campaign-author branch (creator-side mutation moves to the Creator Controls add-on). Campaigns gain igcf/declare-campaign-result and igcf/announce-goal-reached. See Abilities Reference.
  • New REST resources — Payment attempts and refunds are exposed read-only at /igcf/v1/pledges/{id}/payment-attempts and /igcf/v1/payment-attempts/{id}/refunds. The pledge response gains displayed_status, net, is_full_refund, latest_attempt, and refund_summary fields. See REST API Reference — Pledges.
  • New action igcf_campaign_result_declared — Fires from Igcf_Campaign_Service::declare_result() with $campaign_id, $result (successful / failed / funded), and $actor_id; the outcome emails listen here. Its counterpart igcf_campaign_goal_announced fires from announce_goal_reached(). See Actions Reference — Campaign result and goal.
  • New merge tags — {refund_amount} and {pledge_net} are available to email templates. See Email Notifications.