Set up PayPal customer payments
This guide explains how to connect PayPal for API-based purchase checks, signed webhooks, and manual payment evidence in GramGrow.
Important
What PayPal does in GramGrow
GramGrow uses the saved PayPal credentials to map successful payments to a contact, membership, or access target. API access is used for manual purchase checks and support cases. The webhook path sends payment events to GramGrow once it is fully configured.
Good for
Purchase checks, support cases, membership sync, and manual access decisions.
Security boundary
Client Secret and Webhook ID are sensitive. Do not share them in tickets, chats, or screenshots.
REST app and API credentials
- Open the correct live or sandbox account in the PayPal Developer Dashboard.
- Create a REST app or open the REST app that belongs to your store or checkout.
- Copy the Client ID and Client Secret from the same environment.
- Save both values in GramGrow under Settings -> Payments. API lookups can run after that.
Do not mix sandbox and live
Set up the webhook
PayPal webhooks in GramGrow are tenant-scoped. Copy the webhook URL directly from GramGrow instead of building it manually. The URL uses the /webhooks/paypal/:tenantId path, but GramGrow shows the correct value for your workspace.
- Open the REST app in the PayPal Developer Dashboard.
- Create a new webhook under Webhooks.
- Paste the webhook URL shown by GramGrow in Payment Settings.
- Enable payment events that cover successful payments, refunds, and payment changes.
- After saving, copy the Webhook ID and save it in GramGrow.
PayPal webhook
URL: copy from GramGrow Payment Settings
Webhook ID: copy from PayPal after creating the webhook
Purpose: signature verification and full webhook automationFields in GramGrow
| GramGrow field | What to enter | Purpose |
|---|---|---|
| Client ID | Client ID from the PayPal REST app | Required for PayPal API lookups. |
| Client Secret | Client Secret from the same PayPal REST app | Required for PayPal API lookups. |
| Webhook URL | Copy from GramGrow | Tenant-scoped target URL for PayPal webhooks. |
| Webhook ID | Webhook ID from the PayPal REST app | Required for signature verification and full webhook automation. |
Verify the connection
Save the Client ID and Client Secret in GramGrow first. A successful re-check means GramGrow can authenticate with PayPal and run API lookups. Then save the Webhook ID so PayPal events can be signature-verified and processed with full automation.
Expected setup result
PayPal card: Connected
Client ID: saved
Client Secret: saved
Webhook ID: saved for signature verificationPurchase Checker
In Purchase Checker, GramGrow searches successful PayPal transactions for the entered payer email. The Client ID and Client Secret must be saved for this. Depending on the PayPal account, Transaction Search API access may be required before PayPal returns matching transactions.
Troubleshooting
Re-check stays red
Check that the Client ID and Client Secret were copied completely and come from the same sandbox or live environment.
Purchase Checker finds no purchase
Check the payer email, date range, PayPal environment, and whether your PayPal account has access to the Transaction Search API.
Webhook events are rejected
Compare the Webhook ID saved in GramGrow with the Webhook ID in the same PayPal REST app. Without the correct Webhook ID, GramGrow cannot verify the signature.
Webhook URL is unclear
Copy the URL directly from GramGrow. It is tenant-scoped and should not be manually assembled from an example.
Sandbox payments do not appear
Use sandbox credentials, a sandbox Webhook ID, and a sandbox transaction with the same payer email.