GramGrow
PayPalCustomer payments

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.

Last updated: June 24, 2026

Important

PayPal needs a Client ID, Client Secret, and Webhook ID. API lookups work once the Client ID and Client Secret are saved. The Webhook ID is required for signature verification and full webhook automation.

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

  1. Open the correct live or sandbox account in the PayPal Developer Dashboard.
  2. Create a REST app or open the REST app that belongs to your store or checkout.
  3. Copy the Client ID and Client Secret from the same environment.
  4. Save both values in GramGrow under Settings -> Payments. API lookups can run after that.

Do not mix sandbox and live

Client ID, Client Secret, Webhook ID, and test data must come from the same PayPal environment. Sandbox credentials do not find live payments, and live credentials do not find sandbox payments.

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.

  1. Open the REST app in the PayPal Developer Dashboard.
  2. Create a new webhook under Webhooks.
  3. Paste the webhook URL shown by GramGrow in Payment Settings.
  4. Enable payment events that cover successful payments, refunds, and payment changes.
  5. 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 automation

Fields in GramGrow

GramGrow fieldWhat to enter
Client IDClient ID from the PayPal REST app
Client SecretClient Secret from the same PayPal REST app
Webhook URLCopy from GramGrow
Webhook IDWebhook ID from the PayPal REST app

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 verification

Purchase 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.

GramGrow