GoHighLevel Integration
On this page
1.Overview
DealSplash's GoHighLevel integration is a one-click OAuth connection that writes every purchase, refund, and redemption into your GHL Sub-account as rich contact, opportunity, and note records. There are no Zaps, spreadsheets, or scheduled imports — once connected, data flows in real time.
This page is for merchants whose primary marketing automation lives in GoHighLevel and who want DealSplash customers and deal revenue visible in their CRM alongside the rest of their marketing funnel.
At a high level: you click Connect on the DealSplash integrations page → authorize DealSplash on GoHighLevel → we auto-create the custom fields we need → you point it at a sales pipeline (one-time) → every purchase flows automatically from that moment forward.
DealSplash uses GoHighLevel's V2 Marketplace API (the current generation — V1 is end-of-support).
2.Prerequisites
2.1 A GoHighLevel plan with API access
DealSplash requires GoHighLevel Unlimited ($297/mo) or Agency Pro ($497/mo). The Starter plan does not include API access and cannot install Marketplace apps.
See gohighlevel.com/pricing for current plan details.
2.2 A GoHighLevel Sub-account to sync to
GoHighLevel accounts come in two shapes:
- Sub-account (also called a Location) — an individual business account.
- Agency (also called a Company) — a top-level account that owns one or more Sub-accounts.
DealSplash connects to exactly one Sub-account. If you authorize from an Agency admin account, GoHighLevel's consent screen will ask you to pick which Sub-account to install into — choose the one whose customer data should land in that CRM.
You can connect only one Sub-account per DealSplash account. To switch later, disconnect on /settings/integrations and reconnect on the new Sub-account.
2.3 A DealSplash merchant account with Stripe connected
The integration syncs purchases — so if Stripe is not connected, nothing is being purchased and therefore nothing will sync. Complete Stripe Connect onboarding before connecting GoHighLevel.
3.Connect DealSplash to GoHighLevel
3.1 Open the integrations page
Sign in to DealSplash and go to /settings/integrations. You will see a card for GoHighLevel with a Connect button.

3.2 What DealSplash will ask for
When you click Connect, GoHighLevel shows a consent screen listing the scopes DealSplash is requesting. We request the minimum set required to do the integration's job — nothing broader.
contacts.readonly,contacts.write— find and upsert your customers as GHL contacts.opportunities.readonly,opportunities.write— record each purchase as a trackable opportunity in your sales pipeline.locations.readonly— confirm which Sub-account you connected.locations/customFields.write— auto-create the DealSplash opportunity fields (Redemption Code, Expiry Date, Deal Page, Pricing Option).locations/customValues.readonly— read Sub-account-level settings we need to route data correctly.conversations/message.write,conversations.write— log purchase events to the customer's conversation thread without sending any SMS or email to the customer.
3.3 Authorize on GoHighLevel
Click Connect. GoHighLevel opens its consent dialog. If you are not signed in to GoHighLevel yet, sign in. If you are authorizing from an Agency admin account, GoHighLevel will ask you to pick the specific Sub-account to install DealSplash into — pick the one whose customer data should land in that CRM. Review the scopes listed in §3.2, approve, and GoHighLevel redirects you back to DealSplash.

3.4 Pipeline setup (one-time)
After you return to DealSplash, we look for a sales pipeline in your Sub-account named DealSplash with two stages: Purchased and Redeemed. If it exists, we auto-select it — you are done and can close this tab.
If it does not exist, you will see a guided-setup card on /settings/integrations. Follow the link into GoHighLevel's pipeline editor, create a pipeline named DealSplash with the exact stages Purchased (first) and Redeemed (second), return to DealSplash, and click I've created one.

Once the pipeline is configured, the card shows a green Connected pill and an outcome line: "New purchases will automatically appear as contacts and opportunities in your CRM."

4.What DealSplash provisions in your GHL
4.1 Opportunity custom fields
We auto-create four opportunity-level custom fields the first time you connect. The creation is idempotent — reconnecting later does not duplicate them.
| Field name | Type | What it holds |
|---|---|---|
| DealSplash: Redemption Code | Text | The unique 8-character code the customer shows at redemption |
| DealSplash: Expiry Date | Date | When the voucher expires (if the deal has one) |
| DealSplash: Deal Page | Text | A deep link back to the deal page |
| DealSplash: Pricing Option | Text | Which pricing tier the customer bought (e.g., "Full treatment") |
Name-collision behavior. If a field with the same name already exists with a different type (for example, you manually created "DealSplash: Redemption Code" as a Number), DealSplash skips that field and logs a warning — it will simply not populate. We never overwrite your existing fields.
4.2 Pipeline detection
We look for a pipeline named DealSplash with stages Purchased and Redeemed. If found, it is auto-selected at connect time. If not, you see the guided-setup card described in §3.4.
GoHighLevel's Marketplace API does not support creating pipelines programmatically (only reading them), which is why this one step is on you rather than us.
5.What syncs to your CRM
Three lifecycle events flow from DealSplash into GoHighLevel: purchase, redemption, and refund. Each triggers a specific sequence of writes.
5.1 On purchase
Every completed purchase runs four steps in order:
- Upsert contact. The customer is added or updated in GHL by email. Name, email, and source (
DealSplash) are set, and the following tags are attached:DealSplash,ds:purchased,DealSplash: <deal title>,deal:<slug>,option:<pricing-key>, andpurchased:<YYYY-MM-DD>. - Create a purchase note on the contact. The note contains the deal title, business name, pricing option, redemption code, voucher expiry, Stripe payment link, wallet-pass link, and public receipt link.
- Create an opportunity in the DealSplash pipeline → Purchased stage. The opportunity name is
<Deal title> — <Business name>. Monetary value equals the purchase amount. The four custom fields from §4.1 are populated. - Log an inbound conversation message on the customer's conversation feed with a purchase notification. This records the event in GHL without sending any outbound SMS or email to the customer.


5.2 On redemption
When a customer cashes in their voucher, DealSplash:
- Adds a redemption note to the contact describing when and how it was redeemed.
- Adds the
ds:redeemedtag. - Moves the opportunity from the Purchased stage to the Redeemed stage. Opportunity status stays
won(it is a completed sale, just now delivered).
5.3 On refund
Refund handling depends on whether the refund is full or partial.
- Full refund. DealSplash adds the
ds:refundedtag, removesds:purchased, transitions the opportunity status tolost, and adds a refund note with the Stripe refund link. - Partial refund. The contact keeps both
ds:purchasedandds:refundedtags (the voucher is still partly valid). The opportunity is unchanged. A note on the contact records the refund amount for reference.
5.4 GoHighLevel workflow triggers enabled
The tags and status transitions above are designed so you can drive automation from them. Examples:
| GHL Trigger | Fires on | Example automation |
|---|---|---|
Contact Tag = ds:purchased | Purchase | Welcome SMS, nurture campaign |
Contact Tag = ds:redeemed | Redemption | Review request, upsell offer |
Contact Tag = ds:refunded | Refund | Win-back campaign |
Opportunity Status → lost | Full refund | Internal reporting |
6.Troubleshooting
Five common symptoms. Find yours, check the causes, apply the fix.
6.1 Clicking Connect does nothing, or GoHighLevel shows an OAuth error
Causes: your GHL account is on the Starter plan (no API access); a browser pop-up blocker intercepted the OAuth redirect; you are signed in to GHL as a user who does not have permission to install Marketplace apps on the Sub-account.
Fix: sign in as an Agency admin or as a Sub-account user with the Install Marketplace Apps permission; confirm your plan is Unlimited or Agency Pro; disable pop-up blockers for dealsplash.io.
6.2 Connection says Connected, but the pipeline is not configured
Symptom: the GHL card shows the green Connected pill, but a "One more step" warning card is also showing below it.
Cause: your Sub-account does not yet have a pipeline named "DealSplash" with the expected stages.
Fix: follow the Create Pipeline link in the warning card. In GoHighLevel, create a pipeline named exactly DealSplash with stages Purchased (first) and Redeemed (second). Return to DealSplash and click I've created one.
6.3 A purchase completed but nothing appeared in GoHighLevel
What to check:
- Is
/settings/integrationsstill showing the GHL card as Connected? If not, reconnect (§6.4). - Is the pipeline set up (§6.2)?
- Did the customer use the same email as an existing GHL contact under a different name? DealSplash upserts by email — the existing contact record may have been updated rather than a new one created.
- Wait 60 seconds. GoHighLevel sometimes delays surfacing new contacts in its UI even when the data is already stored.
Fix: if the connection is healthy and the pipeline exists, email support@dealsplash.io with the DealSplash purchase order number and we'll investigate the sync logs.
6.4 You got an email saying your GoHighLevel connection needs attention
Context. GoHighLevel access tokens expire after 24 hours. DealSplash refreshes them automatically in the background, so you rarely need to reconnect. You would only need to reconnect if you revoked the DealSplash app from inside GoHighLevel, your plan was downgraded below Unlimited, or your Sub-account was suspended.
Fix: click the reconnect link in the email, or click the Reconnect button on /settings/integrations, and re-authorize DealSplash on GHL. Your pipeline configuration and custom fields are preserved — no re-configuration needed.
6.5 You want to disconnect (temporarily, or for good)
From DealSplash: on /settings/integrations, click Disconnect on the GoHighLevel card. Your OAuth tokens are removed immediately and new purchases stop syncing. Previously synced contacts and opportunities remain in your GHL, untouched.
From GoHighLevel: in your Sub-account, find Installed Apps (the exact menu path varies slightly across GoHighLevel UI versions — search for "Installed Apps" in your Sub-account settings). Find DealSplash in the list and uninstall.
Either side is sufficient. If you uninstall from only one side, DealSplash detects the broken connection on the next sync attempt and emails you a reconnect link. No purchase data is lost.
7.Frequently asked questions
Do I need to upgrade my GoHighLevel plan?
Yes — Unlimited ($297/mo) or higher. The Starter plan does not include the API access that DealSplash needs to read and write contacts, opportunities, and custom fields.
Can I connect more than one GHL Sub-account to one DealSplash account?
No. DealSplash connects to one Sub-account per account. If you run multiple DealSplash merchants under one Agency, each one connects independently to its own Sub-account.
What if I want to change which Sub-account my deals sync to?
Disconnect on /settings/integrations, then reconnect and pick the new Sub-account during the OAuth consent step. Data already synced to the old Sub-account stays there; new purchases flow to the new one.
What data does DealSplash write to my GHL?
Contacts, tags, notes, and opportunities with custom fields. See Section 5 for the complete per-event list.
How do I fully uninstall?
Disconnect on /settings/integrations to remove DealSplash’s access. Optionally, uninstall the DealSplash app from your Sub-account’s Installed Apps in GoHighLevel to clean up the GHL side. Synced data persists in both systems; reconnecting later reuses the existing pipeline and custom fields.
Does DealSplash ever send SMS or email to my customers through my GHL?
No. We use GoHighLevel’s inbound-message API — purchase events log to the customer’s conversation feed without triggering outbound delivery. Any outbound SMS or email is a GHL automation you configure against our tags (see Section 5.4).
What happens during a partial refund?
The contact keeps both the ds:purchased and ds:refunded tags (the voucher is still partly valid). The opportunity stays at the Purchased stage. A note on the contact records the refund amount for reference.
Why did my connection stop working?
Access tokens refresh automatically, but refreshes fail if you revoked the app inside GHL, your plan was downgraded below Unlimited, or your Sub-account was suspended. See Section 6.4 for the reconnect flow.
Changelog
Initial publication.