Stolly - Consent and Preference Management Specification (EU / Sweden)
Version: 1.0
Date: 2025-11-20
Controller:
Until incorporation: the Stolly founding individual(s) identified in the app and on the website, acting as joint controllers.After incorporation: the Swedish Stolly company, as specified in the Privacy Policy.Contacts:
General, product and legal enquiries: stolly@stolly.appPrivacy, GDPR and data subject rights (including consent questions): privacy@stolly.appJurisdiction and framework:
Primary jurisdiction: Sweden and European Union / EEAMain legal framework: GDPR (Regulation (EU) 2016/679), Swedish Data Protection Act, ePrivacy rules as implemented in Member States, and the EU Digital Services Act where relevant.Minimum age in Sweden: 13 (digital consent threshold).1. Purpose, scope and status of this document
1.1. This Consent and Preference Management Specification (âConsent Specificationâ) defines how Stolly obtains, records, manages and honours user choices relating to consent, objection and opt-out for specific processing purposes within the Stolly mobile application, website and related services (âServiceâ).
1.2. The document covers in particular:
mandatory onboarding notices and acceptance of Terms of Service and Privacy Policy,granular optional consents (analytics where required, geolocation, personalised recommendations/profiling, marketing communications, push notifications, cookies / SDKs, AI training and research),parental / guardian consent in countries with higher child-consent thresholds,technical logging and retention of consent events, andwithdrawal, objection and complaint mechanisms.1.3. This document is an internal legal-technical implementation standard. It does not itself constitute a public contract with users but is intended to be consistent with, and to implement in practice, the Terms of Service, Privacy Policy, Community Guidelines, Payment Terms, Refund Policy and Copyright & DMCA Policy (together, the âUser-Facing Policiesâ).
1.4. In the event of conflict between this Consent Specification and a duly adopted and published User-Facing Policy, the User-Facing Policy prevails for external users. This document then serves as a basis to update the implementation and technical behaviour.
2. Legal basis framework and key principles
2.1. Stolly processes personal data only where one or more lawful bases under Article 6 GDPR apply, in particular:
performance of a contract (Art. 6(1)(b)),compliance with a legal obligation (Art. 6(1)(c)),legitimate interests pursued by Stolly or a third party (Art. 6(1)(f)), balanced against user rights, andconsent (Art. 6(1)(a)) where required by law or chosen for clarity.2.2. Consent is used only where appropriate and necessary, in line with GDPR Articles 4(11), 6(1)(a), 7 and 8 and the ePrivacy rules. Where consent is not the primary legal basis (for example, security logging, core analytics, or certain non-invasive operations based on legitimate interests), consent mechanisms may still be used as a practical way to implement objections and user preferences.
2.3. All consent obtained via the Service must be:
freely given: no bundling of optional consent with access to core functions that are not technically dependent on that processing;specific: tied to one clearly described purpose or a narrow group of closely related purposes;informed: supported by concise notices and linked to the relevant sections of the Privacy Policy and other User-Facing Policies;unambiguous: obtained through a clear, affirmative action, such as ticking a checkbox or toggling a switch, and never via pre-ticked boxes or inactivity.2.4. For children and teens, Stolly applies enhanced protections and, where applicable, parental verification in accordance with Article 8 GDPR and national rules.
2.5. Consent logs and preference states are kept in an auditable, tamper-resistant manner so that Stolly can demonstrate compliance to supervisory authorities and respond to user complaints.
3. Distinction between required information and optional consent
3.1. Certain processing is strictly necessary for the performance of the contract with the user and for legal compliance (for example, maintaining an account, securing login, moderating harmful content, keeping minimal logs for security and fraud prevention, and processing basic payment information). These operations do not rely on consent as a legal basis.
3.2. During onboarding, users are presented with mandatory notices and must confirm that they:
accept the Terms of Service, andhave read the Privacy Policy and understand that Stolly will process personal data to provide the Service.3.3. Separate from these mandatory confirmations, the Service presents granular toggles or checkboxes for optional processing purposes. These are voluntary and default to âoffâ unless and until the user explicitly enables them. The user can still use the core Service without enabling any optional consent, subject to technical feasibility and legal requirements.
3.4. For purposes where Stolly relies on legitimate interests instead of consent (for example, certain internal analytics, security logging or non-personalised recommendations), the app may expose an opt-out or objection setting. In those cases the toggle is not a âconsentâ switch in a strict legal sense, but a technical way to honour the userâs right to object under Article 21 GDPR.
4. Catalogue of consent-relevant purposes
For implementation purposes, each consent-relevant purpose is associated with a stable internal âconsent keyâ. The minimum set of keys is:
geo_location - use of device-level location signals for localised content and features,analytics_optional - enabling optional analytics SDKs or event streams that go beyond security and strictly necessary technical logs,personalization - personalised recommendations and profiling beyond what is strictly necessary for service provision,marketing_communications - marketing emails, push campaigns and similar communications not strictly required to provide the Service,push_notifications - enabling app-level push notifications where OS-level permission is also required,ads_personalized - use of data for personalised advertising and ad measurement beyond contextual or strictly necessary processing (if and when ad services are active),ai_training - use of user content and associated signals to train or evaluate Stollyâs own AI models beyond basic functionality, andcookies_non_essential - web cookie categories such as functional, analytics and advertising cookies which are not strictly necessary for provision of the website.Additional keys may be defined as new features are introduced, provided they are mapped to clear purposes and reflected in the Privacy Policy.
5. Onboarding: required notices and age confirmation
5.1. At or immediately before account creation, the app must display a consolidated notice explaining that Stolly will process personal data to operate the Service. This notice will be broadly consistent with the wording used in the Privacy Policy and may be formatted as follows (copy may be localised per language):
âTo run your account and deliver the Service (hosting your stories, playback, login, security), Stolly processes personal data such as your email, date of birth, user content, IP address and device information. This is necessary to provide the Service to you. For details, see our Privacy Policy.â
5.2. Below the notice, three checkboxes are presented:
âI confirm that I have read and accept the Terms of Service.ââI have read the Privacy Policy and understand how Stolly processes personal data.ââI confirm I am at least 13 years old and meet the minimum age required in my country, or I have parental consent where required.â5.3. These boxes must be unchecked by default and must be ticked before account creation can proceed. The labels must be hyperlinked to the current versions of the Terms of Service and Privacy Policy.
5.4. The onboarding flow must collect date of birth (DOB) in a format that allows calculation of age and checking against local thresholds (13-16). The app also collects at least the country of residence (via explicit selection and/or IP-based pre-fill) to determine whether parental consent is required.
6. Granular consent items and default settings
6.1. General UX rules
6.1.1. All optional consent items must be presented as separate toggles or checkboxes both:
during onboarding (after the mandatory notices described above), andin a dedicated âConsent & Privacyâ or âConsent Centerâ section under Settings.6.1.2. Each toggle must:
be defaulted to âoffâ,have a concise label visible in the main UI, andprovide a âlearn moreâ expansion with 1-3 sentences explaining the purpose, categories of data, main recipients or technologies involved, and the right to withdraw.6.1.3. Toggling âonâ sends a consent event to the backend and activates the corresponding processing only after the event has been recorded (or, at minimum, queued). Toggling âoffâ triggers the withdrawal / objection logic set out in Section 8.
6.2. Location (geographical) - geo_location
6.2.1. Purpose: To use approximate or precise device-level location to surface local stories, trends and features.
6.2.2. Data: GPS coordinates (where available), network-based location, associated timestamps and coarse country / region metadata.
6.2.3. Legal basis: Consent (Art. 6(1)(a)) where device-level location is not strictly necessary to provide requested functionality.
6.2.4. Copy (baseline in English):
Label: âAllow Stolly to use my device location to show local stories and trends.âLearn more: âIf enabled, Stolly may use your device location (approximate or precise) to show nearby and local trending content and to improve relevant recommendations. You can withdraw this at any time in Settings or via your device OS.â6.3. Optional analytics - analytics_optional
6.3.1. Purpose: To enable optional analytics SDKs and extended event streams that are not strictly necessary for security, abuse detection or basic performance monitoring.
6.3.2. Data: App events (screen views, feature usage, crash logs, performance metrics), device type, OS version, app version, pseudonymous identifiers or SDK-specific IDs.
6.3.3. Legal basis: Depending on jurisdiction and technical configuration, either consent (Art. 6(1)(a) and relevant ePrivacy rules) or legitimate interests (Art. 6(1)(f)) with appropriate safeguards. Where consent is required, the toggle must be treated as a consent mechanism; where legitimate interests apply, the toggle implements a voluntary opt-out.
6.3.4. Copy:
Label: âAllow anonymous analytics to help improve Stolly.âLearn more: âWe use analytics to understand how the app is used, fix problems and plan new features. This may involve sharing pseudonymous usage data with our analytics providers. Analytics are never used to show you personalised advertising. You may turn this off at any time.â6.4. Personalisation and profiling - personalization
6.4.1. Purpose: To personalise feeds and recommendations, including the âFor Youâ feed, based on user interactions with content.
6.4.2. Data: Story view events (including duration, completion, skips), likes, favourites, follows, mute/hide signals, basic context such as language, device type and time of day, and derived embeddings or interest vectors.
6.4.3. Legal basis: Consent (Art. 6(1)(a)) where required by national law for certain types of tracking; otherwise legitimate interests (Art. 6(1)(f)) combined with the right to object (Art. 21). The toggle implements either explicit consent or an objection, depending on jurisdiction.
6.4.4. Copy:
Label: âPersonalize my feed using my activity.âLearn more: âIf enabled, Stolly analyses what you watch, like and follow to recommend stories and creators you may enjoy. This involves automated profiling but does not produce decisions with legal or similarly significant effects. You can switch this off and still use the app, but recommendations may be less relevant.â6.5. Marketing emails and similar communications - marketing_communications
6.5.1. Purpose: To send marketing communications about new features, promotions and news about Stolly that are not strictly necessary for provision of the Service.
6.5.2. Data: Email address, language and region, engagement metrics (opens, clicks), subscription status.
6.5.3. Legal basis: Consent (Art. 6(1)(a)) or, where permitted, legitimate interests (Art. 6(1)(f)) combined with opt-out. In either case, the toggle must be treated as a robust opt-in / opt-out mechanism.
6.5.4. Copy:
Label: âI want to receive emails about updates, offers and news from Stolly.âLearn more: âWe may occasionally send you emails about new features, offers or important updates. You can unsubscribe at any time via the link in our emails or in Settings.â6.6. Push notifications - push_notifications
6.6.1. Purpose: To send push notifications relating to comments, replies, follows, engagement with a userâs content, and important service information.
6.6.2. Data: Device push tokens, notification topics (e.g., ânew commentâ, ânew followerâ), language and time zone, and basic interaction metrics.
6.6.3. Legal basis: Legitimate interests (Art. 6(1)(f)) combined with opt-out. OS-level permission is also required.
6.6.4. Copy:
Label: âAllow push notifications (comments, replies, follower alerts).âLearn more: âIf enabled, Stolly will send you notifications about your stories (e.g. new comments and followers) and important account updates. You can control notifications in Settings and in your device OS.â6.7. Cookies and SDKs (web and in-app) - cookies_non_essential and sub-keys
6.7.1. Purpose: To manage consent for non-essential cookies and similar technologies on the website and, where applicable, in-app SDKs.
6.7.2. Categories (each may be represented with its own internal key):
Functional (beyond strictly necessary)AnalyticsAdvertising / tracking6.7.3. Legal basis: Consent (Art. 6(1)(a) GDPR and ePrivacy rules). Non-essential cookies and similar technologies must be off by default.
6.7.4. First-layer banner text (example):
âWe use cookies and similar technologies to run Stolly and, with your permission, to improve and personalise your experience. You can accept all cookies, reject non-essential ones, or manage your settings.â
Buttons: âAccept allâ / âReject non-essentialâ / âCookie settingsâ.
6.8. AI training and research - ai_training
6.8.1. Purpose: To use certain published user content, associated metadata and behaviour signals as part of internal datasets to train, test and evaluate Stollyâs AI models for story generation, TTS and safety systems.
6.8.2. Data: Selected published stories (text and audio), associated captions and tags, language, public profile identifiers, and aggregated engagement signals such as views and likes. No raw direct messages or private content are included.
6.8.3. Legal basis: Consent (Art. 6(1)(a)) where required. Where Stolly relies on legitimate interests for certain limited evaluation activities, consent still acts as a strong preference and opt-out signal.
6.8.4. Copy:
Label: âAllow Stolly to use my public stories to improve AI (optional).âLearn more: âIf enabled, some of your published content and engagement signals may be used, in pseudonymized form, to train and evaluate Stollyâs AI models and to improve safety systems. We do not use private content for this purpose. You can withdraw this at any time in Settings. Content already used to train models cannot be individually removed from existing model weights, but we will stop using your future content for training.â7. Parental and guardian consent flows
7.1. Age assessment
7.1.1. The onboarding flow must use the declared date of birth and country information to determine whether the user is:
below the minimum age for use of the Service (account creation blocked),a child or teen who may use the Service only with verifiable parental consent, oran adult who may consent in their own name.7.2. Restricted account pending parental consent
7.2.1. Where local law requires parental consent for children below a certain age (e.g., 16 in some EU Member States), the following logic applies:
The child may create a provisional account, marked as being in ârestricted modeâ.In restricted mode, the user may access a limited version of the Service (for example, browsing selected content), but cannot publish public stories, interact with monetisation features, or have their content recommended widely.The app prompts for a parent or guardian email address and relationship (e.g., parent, legal guardian).7.3. Guardian email and verification
7.3.1. Stolly sends a verification email to the indicated address containing:
identification of the child (name or username and DOB where collected),links to the Terms of Service and Privacy Policy, anda secure link to a guardian consent page.7.3.2. The guardian consent page presents:
a concise explanation of the Service and the childâs intended use,the core processing activities and age-based safeguards,one or more checkboxes mirroring the childâs optional consent choices, anda clear âI am [Relationship] and I consentâ button and a âI do not consentâ option.7.3.3. The secure link must expire after a defined period (e.g., 7 days). If no valid consent is received within that period, the childâs account remains restricted or may be deleted, in line with the Privacy Policy.
7.4. Logging parental consent
7.4.1. If the guardian confirms consent:
a guardian record is created or updated,a consent log entry is written with method = 'parent_verification' and a reference to the guardian, andthe child accountâs status is updated to remove restrictions consistent with the granted consents.7.4.2. Guardians must be able to withdraw consent by contacting privacy@stolly.app. Withdrawal triggers the same logic as for user-initiated withdrawal, with additional safeguards appropriate for minors.
8. Withdrawal of consent, objection and preference changes
8.1. User-initiated changes
8.1.1. Users must be able to view and change their consent and preference status at any time in Settings â Privacy / Consent Center. The interface should list all relevant toggles, show their current state, and provide a âWithdraw all non-essential consentsâ option.
8.1.2. Any change to a toggle must immediately update the local state and send a corresponding event to the backend, which updates the authoritative record in the consent logs and user profile.
8.2. Effects of withdrawal / objection
8.2.1. For each consent key, withdrawal or objection must have the following minimum effects:
geo_location: stop reading or transmitting device-level location data, and cease using previously collected location data for ongoing personalisation. Aggregated statistics may be retained.analytics_optional: disable optional analytics SDKs and cease sending identifiers or events to them, subject to any minimal technical buffering required for stability. Security and fraud-prevention logs relying on separate legal bases remain unaffected.personalization: switch the user to a non-personalised or less personalised feed where technically feasible and cease using new behavioural data for personalisation; retain only minimal signals required for abuse detection and fraud prevention.marketing_communications: remove or flag the user from marketing lists within 72 hours. Transactional and legally required service communications continue.push_notifications: stop scheduling and sending push notifications, except where required for critical security messages or legal notices, in line with OS-level settings.ads_personalized (if implemented): serve only contextual or non-personalised ads and adjust signals shared with advertising partners accordingly.ai_training: exclude the userâs future content from training datasets and internal evaluation corpora, and mark historical content as excluded from reuse. Existing models trained on historic data are not âuntrainedâ on a per-user basis but future training runs must respect the exclusion.8.3. Timing
8.3.1. Technical changes that are fully under Stollyâs control should take effect as close to real-time as reasonably possible and no later than 24 hours after the change is recorded.
8.3.2. Changes that require updates to external systems (for example, marketing platforms or advertising SDKs) must be implemented without undue delay and, in any event, within 72 hours, subject to technical constraints.
8.4. Confirmation
8.4.1. For significant changes (in particular withdrawal of multiple consents or marketing opt-out), Stolly should provide a short confirmation via in-app notice and/or email, summarising which preferences were changed and when.
9. Consent logging, evidence and technical specification
9.1. General principles
9.1.1. Stolly maintains an auditable, append-only record of consent-related events to demonstrate compliance with GDPR Article 7(1) and to respond to supervisory authority requests.
9.1.2. Consent logs are separate from, but linked to, user profile and settings data. For operational use (e.g., feature flags), Stolly may store the current consent state in profile tables; for evidence, it relies on the dedicated consent logs.
9.2. Minimal data fields
9.2.1. Each consent event must contain, at minimum:
a unique identifier (e.g., consent_id UUID),user_id (or a temporary identifier where the event occurs pre-registration),consent_key (as defined in Section 4),consent_value (true/false),timestamp_utc (TIMESTAMPTZ),policy_version or an equivalent identifier of the applicable Privacy Policy / Terms version,policy_url (or slug),method (e.g., onboarding, settings, cookie_banner, email_link, parent_verification),jurisdiction (ISO code, e.g., SE, DE),ip_truncated (e.g., last octet removed, IPv6 truncated), anddevice_hash (pseudonymised identifier derived from device IDs or similar).9.2.2. Where relevant, the following additional fields should be recorded:
guardian_id or equivalent for parental flows,app_version or build number,revoked_at (for withdrawals),revocation_reason (if captured, e.g., âuser requestâ, âage threshold not metâ).9.3. Storage and access control
9.3.1. The consent log table must enforce strong access controls, including Row Level Security (RLS) where supported by the platform. Only authorised backend services and limited staff (for example, privacy, security and compliance personnel) may access consent logs.
9.3.2. Direct editing of consent logs in place is prohibited except for narrowly scoped corrections subject to additional audit logging. Implementation should favour append-only operations, with corrections recorded as new entries.
9.4. Example schema (PostgreSQL)
The following schema is illustrative and may be adapted as needed:
î°CREATE TABLE consent_logs (
consent_id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
user_id TEXT,
consent_key TEXT NOT NULL,
consent_value BOOLEAN NOT NULL,
timestamp_utc TIMESTAMPTZ NOT NULL,
policy_version TEXT,
policy_url TEXT,
app_version TEXT,
method TEXT,
jurisdiction TEXT,
ip_truncated TEXT,
device_hash TEXT,
guardian_id TEXT,
revoked_at TIMESTAMPTZ,
revocation_reason TEXT
);
CREATE INDEX consent_logs_user_idx
ON consent_logs (user_id);
CREATE INDEX consent_logs_key_time_idx
ON consent_logs (consent_key, timestamp_utc);
î°
10. Retention of consent records and related data
10.1. Consent logs
10.1.1. Consent logs are retained for the lifetime of the user account plus five (5) years, or longer where necessary to establish, exercise or defend legal claims, or to comply with statutory retention and limitation periods.
10.1.2. After the retention period expires, consent logs should be irreversibly anonymised or deleted. Anonymisation must ensure that the data can no longer be linked to an identified or identifiable natural person.
10.2. Profiles, content and analytics
10.2.1. Retention rules for user profiles, content, analytics and other personal data are governed by the Privacy Policy. Consent and preference states must be consistent with those rules and taken into account when designing deletion and anonymisation logic.
10.3. Backups
10.3.1. Deletion or anonymisation within live systems must be followed by expiry in backup media according to defined backup retention schedules, typically not exceeding ninety (90) days unless legally required otherwise.
11. DPIAs, LIAs and governance
11.1. Data Protection Impact Assessments (DPIAs)
11.1.1. Before deploying or materially modifying features that involve:
large-scale profiling of users,the use of AI systems with potentially significant effects on users, ornew optional data uses such as broadened AI training or advertising,Stolly must assess whether a DPIA is required under Articles 35-36 GDPR. Where required, the DPIA must document the processing, assess risks to rights and freedoms, and set out mitigation measures.
11.2. Legitimate Interest Assessments (LIAs)
11.2.1. For processing operations relying on legitimate interests (for example, certain analytics, security or non-personalised recommendations), Stolly must maintain LIAs that:
identify the controllerâs interests,assess necessity and proportionality, andweigh those interests against the impact on users, including minors.11.3. Versioning and review
11.3.1. This Consent Specification must be reviewed at least annually and whenever relevant laws, guidance or Stolly features change. Version numbers and dates must be updated accordingly and cross-referenced in the Privacy Policy and Terms of Service.
11.3.2. Product, engineering and legal / privacy teams are jointly responsible for ensuring that:
UI and UX match the descriptions and purposes in this document,technical implementation (including logs and feature flags) corresponds to user-facing messaging, andchanges in one layer (legal, product, technical) are reflected in the others without undue delay.12. UI microcopy (reference text)
The following strings are reference English texts for use in the app; they may be adapted for local languages, provided the meaning remains equivalent.
Consent modal header: âYour privacy choicesâAnalytics toggle label: âAllow anonymous analytics to help improve Stolly.âPersonalisation toggle label: âPersonalize my feed using my activity.âLocation toggle label: âAllow Stolly to use my location for local content.âAI training toggle label: âAllow Stolly to use my public stories to improve AI (optional).âConfirm CTA: âSave preferencesâReject CTA: âReject non-essentialâExample Swedish translations (short):
âTillĂ„t anonym analys för att förbĂ€ttra Stolly.ââPersonliga rekommendationer baserat pĂ„ min aktivitet.ââAnvĂ€nd min plats för lokalt innehĂ„ll.ââLĂ„t Stolly anvĂ€nda mina publicerade berĂ€ttelser för att förbĂ€ttra AI (valfritt).â13. Email templates (reference text)
13.1. Parental consent request
Subject: Action required - parental consent for [Child Name] on Stolly
Body (plain text):
Hi [Parent Name],
[Child Name] (date of birth: [DOB]) has registered for Stolly and requested access to our Service.
Please review our Terms of Service and Privacy Policy at:
[Links]
To allow [Child Name] to use Stolly, please confirm your relationship and consent by clicking the link below:
[Guardian Consent Link]
If you did not authorise this or have any questions, contact us at privacy@stolly.app.
13.2. Consent withdrawal confirmation
Subject: You updated your privacy choices on Stolly
Body:
Hi [User],
You recently changed your privacy choices on Stolly on [timestamp]. The following settings have been updated: [list of keys].
We will stop the related processing as soon as possible, and in any case within 24-72 hours where third-party systems are involved.
If you did not make this change or have questions, please contact us at privacy@stolly.app.
13.3. Policy and consent update notification
Subject: Update to Stolly Privacy & consent options
Body:
Hi,
We have updated our Privacy Policy and how we present privacy and consent options in the app. The changes apply from [effective date].
You can review the updated Privacy Policy here: [link] and adjust your preferences at any time in Settings â Privacy.
If you have any questions, please contact privacy@stolly.app.
14. Supervisory authority and complaints
14.1. Users must be informed, via the Privacy Policy and other materials, that they may:
contact Stolly at privacy@stolly.app for any questions regarding consent, privacy and data protection, andlodge a complaint with a supervisory authority, in particular in the EU/EEA Member State of their habitual residence, place of work or the place of the alleged infringement.14.2. For users in Sweden, the competent authority is Integritetsskyddsmyndigheten (IMY).
15. Final provisions
15.1. This Consent and Preference Management Specification is intended to ensure that the design and implementation of Stollyâs consent mechanisms align with GDPR, Swedish law and other applicable European rules. It must be read and applied together with the Terms of Service, Privacy Policy, Community Guidelines and other User-Facing Policies.
15.2. Any material deviation from this Specification in the design or operation of the Service should be assessed by legal and privacy stakeholders and, where necessary, documented, mitigated or corrected without undue delay.