A common misconfiguration when setting up PayPal with Gravity Forms is registering a sandbox webhook URL in a live PayPal account (or vice versa). The webhook appears to be configured, but payment notifications silently fail because the endpoint environment doesn't match the account mode.
The fix is straightforward but non-obvious: you cannot simply update the webhook URL in place. You must disconnect and reconnect the PayPal add-on from within Gravity Forms settings, which forces the correct live webhook to be registered.
When a developer or site owner sets up the PayPal integration in Gravity Forms while PayPal is in sandbox mode, the webhook URL generated is scoped to the sandbox environment. If the site later goes live — or if the PayPal account was always live — the sandbox webhook URL is never called, and Gravity Forms never receives payment confirmation events.
Symptoms include:
- Form submissions completing on the PayPal side but not updating entry status in Gravity Forms
- Payment status remaining "pending" indefinitely
- No webhook delivery errors visible (the webhook simply isn't being hit)
Note: This must be done from the global Gravity Forms settings panel, not from within an individual form's feed configuration.
The Gravity Forms PayPal add-on manages webhook registration automatically during the OAuth connection flow. Attempting to manually edit the webhook ID stored in the plugin settings does not propagate the change to PayPal's side — the registration is tied to the OAuth session established at connection time. A full disconnect/reconnect is the only reliable way to replace the webhook endpoint.
Encountered during a [1] working session while rebuilding their golf tournament sponsorship form. The PayPal webhook had been configured in sandbox mode, blocking live payment processing. Disconnecting and reconnecting in Gravity Forms settings resolved the issue immediately — the webhook status updated to Active within the same session.
See also: [2]