{"id":18996800,"date":"2026-08-18T23:31:55","date_gmt":"2026-08-18T23:31:55","guid":{"rendered":"https:\/\/wordpress.org\/support\/topic\/waiting-list-remaining-spots-decrease-twice-per-converted-signup\/"},"modified":"2026-08-18T23:31:55","modified_gmt":"2026-08-18T23:31:55","slug":"waiting-list-remaining-spots-decrease-twice-per-converted-signup","status":"publish","type":"topic","link":"https:\/\/wordpress.org\/support\/topic\/waiting-list-remaining-spots-decrease-twice-per-converted-signup\/","title":{"rendered":"Waiting list remaining spots decrease twice per converted signup"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Every waiting-list signup that is later completed (payment link flow) is subtracted twice from the remaining-spots figure the visitor sees.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Environment: Eventin Free 4.1.21, WordPress 7.0.3, PHP 8.2, verified on a clean copy of the plugin (byte-identical to the wordpress.org zip).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Real numbers from my site (waitlist limit 25; three signups of 7 + 3 + 1 = 11 tickets, all converted and completed):<\/p>\n\n\n\n<ul>\n<li>The <code>etn_global_waiting_list<\/code> meta (and the admin panel) shows 14 \u2014 that is 25 \u2212 11, discounted on completion.<\/li>\n\n\n\n<li>The event page capacity line shows &#8220;Waiting List: 3 spots available&#8221; \u2014 that is 14 \u2212 11, discounted again.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Why it happens \u2014 two independent subtractions of the same signups:<\/p>\n\n\n\n<ol>\n<li>On order completion, <code>OrderTicket::order_status_completed()<\/code> (core\/Order\/OrderTicket.php) persists <code>etn_global_waiting_list = max(0, current \u2212 quantity)<\/code> \u2014 a destructive write to the stored limit.<\/li>\n\n\n\n<li>On render, the purchase widget computes remaining = max(meta \u2212 sum of waiting_list_count, 0), where waiting_list_count (core\/event\/Api\/EventController.php \u2192 <code>etn_get_waiting_list_counts_by_slug()<\/code>) counts the same orders again.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Each side alone would be correct; together the same 11 tickets are removed twice (limit 25 \u2192 real remaining should be 14 \u2192 the visitor sees 3).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Related detail: <code>etn_get_waiting_list_counts_by_slug()<\/code> (utils\/functions.php) counts orders flagged <code>is_from_waiting_list<\/code> with any status \u2014 cancelled or failed signups keep occupying spots forever, and trashed ones too.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Impact: the public waitlist counter drains at twice the real speed and never recovers, so events show a full waiting list long before they are.<\/p>\n","protected":false},"template":"","class_list":["post-18996800","topic","type-topic","status-publish","hentry","topic-tag-capacity","topic-tag-tickets","topic-tag-waiting-list"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/support\/wp-json\/wp\/v2\/topic\/18996800","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/support\/wp-json\/wp\/v2\/topic"}],"about":[{"href":"https:\/\/wordpress.org\/support\/wp-json\/wp\/v2\/types\/topic"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.org\/support\/wp-json\/wp\/v2\/topic\/18996800\/revisions"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/support\/wp-json\/wp\/v2\/media?parent=18996800"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}