Hi, @sportified.
Glad you reached out.
For a bit of context, this is the order of how GiveWP works with the payment gateway to process the donation:
1. The donor fills out the donation form and submits the donation.
2. A donation (and subscription, if applicable) is created on the GiveWP side and set to “pending.”
3. All of the information is sent to the gateway to process the transaction, as well as ongoing subscription renewals.
4. The gateway processes it and notifies the site (via the webhook or IPN) that it went through.
5. GiveWP processes that webhook/IPN and sets the donation to complete.
If the webhook/IPN is unable to reach your site for any reason, the donation will remain “Pending” and eventually change to “Abandoned.”
What could be happening, though, is some kind of conflict on your site that would not send the information to the payment gateway. To verify it, we need a way to reliably replicate the issue.
Also, I accessed your site and clicked here and there, and on the donation form, when I switched the payment gateway on a donation form, I got the following error:
We’re unable to recognize your session. Please refresh the screen to try again; otherwise contact your website administrator for assistance.
This issue here is caused by some caching happening somewhere in the process. If you’re not familiar with caching, it’s a method of saving server resources by storing copies of a page, resource, query, or site so that the next visitor’s visit doesn’t trigger a call to the server at all, they just get the copy that was saved. Basically instead of the site needing to recreate the page from scratch, it sends up a copy which allows it to load faster.
We put together this deep dive into what caching is and how it can cause problems: https://givewp.com/documentation/resources/caching/
Caching works really well for speeding up sites, but when a saved copy of the site has sensitive information in it (like donor info) it’s important that GiveWP not share that with the next visitor. If GiveWP is not convinced that the browser requesting the data is the correct one, it defaults to not showing the data.
Caching is handled differently on various sites and web hosts. This could mean a caching plugin, or caching could be in a security solution. Hosting providers also have settings for caching at the server level, and they can help make adjustments for you there. Most caching solutions have a setting or section for excluding specific URLs or parts of URLs (called “slugs”) from caching. At the very least, you should exclude the following slugs from caching:
/donations/
/donation-confirmation/
/donor-dashboard/
*any page with a donation form on it
Also, the following query strings (if your caching solution has a setting for them):
give-embed=donor-dashboard
giveDonationFormInIframe=1
Your host or the caching plugin/solution you are using can help with that. Some of them may require what’s called a “wildcard” like /donations/* to capture all subdirectories under the /donations/ folder.
Some folks prefer to customize the URLs to their site pages, so you may find that your URLs don’t have the slugs mentioned above, even though they contain the same content. In cases like those, we recommend whitelisting the page, not just the slug, that way the pages with those essential pieces of information are still excluded from caching. This is especially important for URLs of pages with donation forms on them.
One helpful tip: Check in with your hosting provider. Most hosts have caching at the server level, and they will be able to adjust this for you. You can also temporarily disable caching on the site to confirm that the uncached site isn’t showing the problem.
Many security solutions include options for caching as well, so be sure to give those settings a look.
While fine-tuning cache falls outside the scope of the support we’re able to provide, your success with online donations is our number one priority, and we’re happy to provide any tips.
I know this was quite a bit of information to share. If you have any questions about this, let me know, I’m happy to help.