Coneflower Stripe Investigation - Session 2
Date: Friday, December 5, 2025 (Evening) Duration: ~2 hours
Summary
Continued investigation and implemented UI improvements to the admin orders dashboard. Discussed options for handling incomplete/Processing orders and drafted client communication.
Key Findings
Processing Orders Analysis
- Cross-referenced all 17 "Processing" entries against Stripe API
- All 17 showed
requires_payment_methodstatus = abandoned checkouts - Customers started form but never entered card info
- No money was collected on these - they're not failed payments, just abandonments
Root Cause Clarification
- GF Stripe 6.0 update changed payment confirmation flow
- Form now waits for webhook confirmation (times out after 20 sec)
- High concurrent traffic during sales likely contributing to timeouts
- Some customers entered card, form hung, they gave up (ghost payments from earlier)
Options Discussed
Option A: Stripe Checkout (Redirect Method)
- Customers redirected to Stripe's hosted payment page
- Entries only created AFTER payment succeeds
- Eliminates Processing entries entirely
- Blocker: Requires removing Stripe Card field from form first
- User attempted but hit "Incompatible Payment Collection Method" error
Option B: Auto-Cleanup Code
- Keep current embedded checkout
- Auto-delete Processing entries after 48 hours
- Not implemented - decided to wait and see first
Current Plan
- Wait and see how orders perform after webhook fix
- Monitor for continued issues
- Stripe Checkout remains an option if problems persist
Code Changes Made
File: functions/admin-custom-orders.php
-
Processing Orders section - collapsible - Now collapsed by default - Click header to expand/collapse - Remembers state in localStorage
-
Moved Processing Orders section - From: Top of page (after Quick Filters) - To: After Sales Breakdown, before Export Button
-
Added explanatory note - States implemented Dec 5, 2025 as temporary measure - Explains GF Stripe 6.0 monitoring - Reassures client about what Processing means
-
Fixed timezone display - All dates now use
get_date_from_gmt()- Respects WordPress timezone setting (Central Time) -
Added summary bar - Shows: X Paid | X Awaiting Confirmation | X Total Orders - Includes Paid Revenue on right side - Visible at top without scrolling
Git
- Branch:
feature/processing-orders-ui-improvements - Commit:
5f30eea- Update: Improve Processing Orders UI in admin dashboard - Not pushed - ready for GitHub Desktop
Client Email
Updated /Users/edowns/Desktop/coneflower-stripe-issues-email.md:
- Corrected inaccurate claim that "payments are going through fine"
- Now accurately explains form hangs and payments don't complete
- Added wait-and-see plan
- Added speculation about concurrent traffic as contributing factor
- Mentioned Stripe Checkout as option if issues continue
- Included GF Stripe 6.0 documentation link
- Gentle reminder about WooCommerce for future scaling
Still Pending
- [ ] Push branch to GitHub via GitHub Desktop
- [ ] Deploy to production
- [ ] Monitor orders over weekend
- [ ] Decision on Stripe Checkout vs wait-and-see
- [ ] If switching to Stripe Checkout: remove Stripe Card field from Form 6 first
Technical Notes
To Switch to Stripe Checkout (if decided later)
- Edit Form 6 in GF form editor
- Delete the Stripe Card field
- Go to Form Settings → Stripe
- Change "Payment Collection Method" to "Stripe Payment Form (Stripe Checkout)"
- Save and test
Stripe Payment Element
- Checkbox in Stripe Card field settings
- Newer payment widget with Apple Pay, Google Pay support
- Does NOT solve Processing entries issue (still embedded)
- Worth enabling for payment options but not a fix
Future Investigation: Traffic Correlation
Theory: High concurrent traffic during sales may be causing webhook timeouts, not just the GF Stripe 6.0 update alone. Multiple simultaneous checkouts compete for server resources, causing webhooks to arrive late.
Potential approach: - GA4 Real-Time API can query active users, page views in real-time - Would need GA4 Property ID + Google Cloud API credentials - Could correlate traffic spikes with failed/Processing order timestamps
Simple first step: Manually compare GA4 Real-Time view with Stripe timestamps during next sale to validate theory before building automation.
Session notes - December 5, 2025