GH GambleHub

GDPR: user consent management

1) Purpose and area

Create a unified, verifiable and user-friendly process for managing consent and communication preferences, compatible with GDPR and ePrivacy, applicable to all surfaces: web, mobile applications/SDK, e-mail/SMS/push, affiliate landings, streams/social networks, vendor tags.

2) Basic principles

Free, specific, informed and unambiguous expression of will (no press/access convention).
Separation of goals: analytics, personalization, marketing, geolocation, A/B tests, third-party tags - separate toggle switches.
Feedback is as simple as consent. No "quests" for rejection.
Lack of dark patterns. No visual distortions/lockers.
Provability. Logs, text versions, screenshots of the UI version, policy hashes.
Default minimization and privacy.

3) Legal grounds (short reference)

Art. 6 (1) (a) Consent: marketing, personalization, analytics with identifiers, non-conditional cookies/SDK.
Art. 6 (1) (b) Agreement: operations necessary for the provision of the service (strictly necessary cookies).
Art. 6 (1) (f) Legitimate Interest (LIA): Limited performance measurements under strong safeguards and right of objection.
Art. 8 Children: age for child consent - country threshold; with minors - prohibition of marketing.
Art. 9 Special categories: biometrics/health - outside marketing; separate legal grounds/prohibitions.
ePrivacy: storage/access to the device (cookies/local storage/SDK) - only "strictly necessary" without consent; the rest by consent.

4) Roles and RACI

DPO/Head of Compliance - policy, DPIA, control of complaints/risks. (A)

Legal - texts, localization of requirements, foundation matrix. (R)

Product/UX - banners/preference center, anti-dark-patterns. (R)

Engineering/CMP Owner - CMP/SDK integrations, API, versions, GPC/DNT. (R)

CRM/Marketing - segmentation by consent flags, suppression. (R)

Data/Analytics - de-identification modes, tracking restrictions. (C)

InfoSec - encryption, keys, RBAC/ABAC to consent logs. (C)

Internal Audit - evidence samples, CAPA. (C)

5) Taxonomy of consents and preferences

Functional (without consent): strictly necessary (authentication, basket, balance, fraud protection).

By agreement (separate toggle switches):

1. Analytics (IDs/cross-device)

2. Personalize content/games

3. Marketing (e-mail/SMS/push/in-app/telematics) - channels separately

4. Remarketing/Ads (including third party pixels/SDKs)

5. Geolocation is not strict (city/region)

6. A/B testing (if using IDs)

7. Affiliate Tags/Affiliate Pixels

6) CMP UX patterns (web/mobile)

First layer (banner): short goal + "Accept All," "Reject All," "Customize" - the same visibility.
Second layer (panel): toggle switches by category and spread "More" (vendors, goals, deadlines).

Preference center (in account): marketing channels (e-mail/SMS/push/phone) - separately; link "Unfollow everything."

Review/change: in 1-2 clicks from any screen; does not change access to required features.
Availability: contrast, keyboard, screen-reader, locales.
GPC/" Do Not Track": a global signal is interpreted as rejecting everything except strictly necessary.
Mobile SDK: in-app CMP + system permissions (OS prompts) → synchronization with the server profile.

7) IAB TCF 2. 2 (embedding framework)

Support for target/feature stack, vendor list, string TC on client side.
Saving the TC-line, version, vendor list; mapping into our flags.
Blocking tags/SDKs until a TC (prior consent) is received.
Respect for "Deny All" status and vendor permissives.
For non-TCF markets - "custom" CMP with the same UX and logging.

8) Minors and vulnerable

If age <market threshold - no marketing channels and personalization; analytics - only strictly necessary/PII-free.
Age verification before loading marketing SDKs/pixels.
SE/RG flags: self-exclusion - forced marketing suppression regardless of consent.

9) Privacy, storage and retention

Minimization model: store facts of actions (accept/deny/withdraw), text versions, TC-string/hashes, and not "raw" cookies.
Retention: while the target/relationship + market deadlines are in effect (usually ≤ 24 months without activity for marketing).
Access: RBAC, immutable logs (WORM), time - in UTC.
Removal: recall → immediate stop-processing; cron cleans unused id/SDK caches.

10) Data and evidence (minimal model)


consent_id, user_id/device_id, market, locale,
ui_variant_id, policy_version, tcf_string, vendors[],
purpose_id, lawful_basis{consent    contract    legit_interest},
status{accept    deny    withdraw}, source{web    app    email    sdk    api},
captured_at_utc, ip_hash, ua_hash, gpc{true    false},
evidence{banner_screenshot_id, copy_hash}, expires_at

Artifacts: hash of policy text and banner, screenshot of the option, list of active tags/SDKs at the time of consent.
Associations: 'consent _ id '↔ CRM/Ads events for suppression traceability.

11) API/SDK and tag blocking

Edge/CMP-SDK: before choosing - we load only strictly necessary scripts.

Server-Side API:
  • `GET /consents? user_id=...`
  • `POST /consents` (create/withdraw)
  • 'POST/marketing/preferences' (channel flags)
  • `POST /gpc/signal`
  • Tag Manager Guards "fire if consent. purpose. marketing == true».
  • E-mail/SMS: mailings only by'marketing. email = = true 'and "double opt-in" (if market needs).

12) Compatibility with CRM/Ads/Affiliates

Suppression streams: recall → update suppression in CRM, Ads, affiliate feeds (batch + near-real-time).
UTM/postbacks: transfer only technical parameters; consent is not "thrown" to partners without a separate legal framework.
Affiliates: are required to display the same CIW/disclaimer; without it, leads don't qualify.

13) Processes and cases

Feedback via email: in each e-mail "Unsubscribe all" and "Configure." Unsubscribe - instantly, confirmation on the page/in the letter.
DSAR/accesses: show current consent flags, activity log; export without third party PII.
Changing goals: new goal → new consent request (not "retroactive").
A/B test: change CMP UI - version/screen to artifacts, audit for the absence of dark patterns.
Incidents: incorrect loading of the tag without consent → immediate takedown, audit logs, CAPA.

14) KPI/KRI and dashboard

Opt-in Rate by Target/Market/Device

Withdraw/Change Rate and median "Time-to-Withdraw-Apply"

GPC Honor Rate

Tag Firing Violations

Suppression Integrity (Recall Marketing = 0)

Complaint Rate и Regulatory Findings

Auditability Score (% of records with full artifact package)

15) Checklists

Before launch

  • Basis and Purpose Matrix agreed (Legal/DPO).
  • CMP supports Reject All, GPC, locales.
  • The Tag Manager blocks all unnecessary tags until you agree.
  • Preference center with channels (e-mail/SMS/push/phone).
  • Link to CRM/Ads/affiliates for suppression.
  • WORM text versions/screenshots.

In operations

  • Monitor violations of firing rules and GPC.
  • DSAR responds with current flags and log.
  • Complaints and Incidents - SLAs and CAPAs.

Audit/Improvement

  • Quarterly sample records for completeness of evidence.
  • CMP A/B review of dark patterns.
  • Update locales/legal texts.

16) Templates (quick inserts)

A) First layer text (banner):
💡 We use files and IDs for analytics, personalization and marketing. Choose what works for you. You can change your choice at any time.
[Reject All] [Customize] [Accept All]
B) Text of the second layer (purpose "Marketing"):
💡 Allow e-mail/SMS/push about promotions and news. We will not send promotional materials without your permission.
C) Unsubscribe confirmation letter (confirmation):
💡 You are unsubscribed from marketing messages. You can still receive service notifications (transactions/security). Settings - in the profile.
D) Response to complaint "difficult to refuse":
💡 Consent withdrawal is available in 1-2 clicks from any screen ("Privacy Settings"). We checked and corrected... We apologize. Your preferences have been updated.

17) Technical framework and events

События: `consent_banner_shown`, `consent_given/denied/withdrawn`, `gpc_detected`, `tag_fired_blocked`, `marketing_unsubscribed`, `dsar_fulfilled`.
Feature: automatic GPC reading; SDK gates; server-side consent cache; Integrity checks of Tag Manager export "PII-free" for analytics.
Tests in CI/CD: tag blocking linter, version scheme migrations, CMP screen tests.

18) Risks and prevention

Incomplete tag blocking. → Rules in Tag Manager "deny by default."

Vendor Dependency → Vendor/Target/Jurisdiction List, DPA and Audit.
Dark patterns. → Design review and button equivalence control.
Lack of evidence. → Screenshots, text hashes, WORM logs.
Status mismatch in CRM/Ads. → Single service suppression + daily reconciliations.

19) 30-day implementation plan

Week 1

1. Approve the goals/reasons matrix and texts (locales).
2. Select/configure CMP (TCF 2. 2 + custom targets).
3. Specify the model of data and artifacts, enable WORM.

Week 2

4. Integrate CMP/SDK, Tag Manager "deny by default," GPC.
5. Build a preference center and API suppression for CRM/Ads.
6. Prepare A/B versions of the banner, screen fixation.

Week 3

7. Pilot 10-20% of traffic: Measure Opt-in/Withdraw/GPC Honor.
8. Retro on complaints/incidents; UX/text edits.
9. Connect affiliates to the mandatory CMP layer.

Week 4

10. Full release; enable KPI/KRI dashboard and alerts.
11. Quarterly audit and CAPA plan.
12. Plan v1. 1: server-side consent cache, automatic market reporting.

20) Related Sections

Age verification and age filters

Advertising standards and prohibitions/Disclaimers and truthfulness of advertising

Transparency of bonus conditions

Compliance of affiliates and partners

Localization of data by jurisdictions

Responsible Play and Limits/Self Exclusion/Reality Checks

Regulatory Reports and Data Formats/Internal and External Audits

Contact

Get in Touch

Reach out with any questions or support needs.We are always ready to help!

Telegram
@Gamble_GC
Start Integration

Email is required. Telegram or WhatsApp — optional.

Your Name optional
Email optional
Subject optional
Message optional
Telegram optional
@
If you include Telegram — we will reply there as well, in addition to Email.
WhatsApp optional
Format: +country code and number (e.g., +380XXXXXXXXX).

By clicking this button, you agree to data processing.