# GHL-WP Membership — developer setup

Development preview 0.5.0. PHP 8.3+ required.

Activate the ZIP. Configure the server-only GHLM_CONTACTS_TOKEN with a location-scoped contacts.readonly integration. Configure the ghlm_tag_lab option with location_id, contact_id, tag and key_hash (SHA-256 of a securely generated webhook key). This milestone intentionally allows only that contact and location.

Send the standard GHL Webhook action to /wp-json/ghlm/v1/tag-sync, with X-GHLM-Key and a JSON body identifying contact_id and location_id (or location.id). Add both Contact Tag added and removed triggers; enable re-entry.

Set GHLM_PRIVATE_DIR outside every web root, alias, CDN and public bucket. Use persistent storage with restrictive permissions. Media > Member downloads supports new private uploads and migration of local attachments. Keep a backup of private storage and the database. Purge old public CDN copies.

Use a server cron each minute for reliable retries. Protect pages using Membership access > Require active membership. Exclude protected URLs and download endpoints from shared caches.

The queue preserves last-confirmed access during outages. Already downloaded files cannot be recalled. Administrators can preview private files and editors can preview protected pages.

Not a WordPress.org-listed release. Multi-plan setup, payments, production onboarding and broad plugin compatibility testing remain future work.

Author: Arifur Rahman — HighLevel | HubSpot | KEAP CRM Expert
https://earif.com · arif@earif.com
https://www.linkedin.com/in/earif/
https://www.upwork.com/freelancers/arifur
