RESTRICTED • CrownThrive Internal
Owner: CrownThrive IO • Product: Go‑Flipbooks Systems: Locticians (Brilliant Directories), FlipLink (go.fliplink.me), CrownLytics, CrownPulse, ThrivePush, CrownRewards, ThriveSeat, ThrivePeer, CrownThriveU Status: LIVE (iterating) Confidentiality: INTERNAL ONLY. Do not distribute externally.
0) Executive Summary
We’ve shipped a full Go‑Flipbooks integration for Locticians that lets members showcase interactive, shoppable flipbooks across the ecosystem:
- Embeds run from
- Members add their Flipbook key/URL via multiple, purpose‑specific profile fields (e.g., Public Listing Spotlight, Sidebar Spotlight, Universal Feature, Showcase Feature).
- Widgets read these fields, normalize values to a canonical
- We implemented sidebar spotlights, on‑listing banners, universal blocks across many post types, plus an ecosystem integrations rotator that now includes Go‑Flipbooks.
- Pricing surfaced consistently: $300 one‑time setup + $5/mo maintenance via Collab Portal intake.
- Compliance & safety: Iframe whitelist updated; all output is sanitized and resilient to BD constraints (no PHP functions defined in widget editors).
This playbook documents what we built, why, how to operate it, and where to extend next.
1) Product Rationale (Why)
- Monetization: Upsell high‑intent members into Go‑Flipbooks (setup + recurring) and attach Stripe‑powered commerce directly inside interactive content.
- Distribution: Surface flipbooks in high‑traffic placements (Profile About, Sidebar, Post bodies), boosting discovery and time on page.
- Funnel Clarity: Always include Read/Preview, Purchase/Get, Copy Link, and Order Your Go‑Flipbook CTAs with UTM tags for analytics.
- Brand Consistency: Premium, on‑brand treatments that align with CrownThrive’s beauty, wellness, media, tech, entrepreneurship pillars.
2) Member Pricing & Intake
- Price: $300 setup (one‑time) + $5/month maintenance.
- Intake & payment:
- Governance: Intake completion & payment precede content approval. QA verifies the URL/Key and the flipbook content quality.
3) Data Model (Profile Fields)
All fields accept either the full URL or the path+query "key".
Purpose | Field Label | DB Variable |
Public listing banner / spotlight | Go‑Flipbook Public Listing Spotlight | go_flipbook_share_link |
Sidebar spotlight (compact) | Go‑Flipbook Sidebar Spotlight | go_flipbook_sidebar_spotlight |
Universal feature (many post types) | Go‑Flipbook Universal Feature | go_flipbook_universal_feature |
Showcase feature (above showcase blocks) | Go‑Flipbook Showcase Feature | go_flipbook_showcase_feature |
Other related profile fields (for ecosystem rotator):
- thrive_booking_id
Validation Rules:
- Allowed domain:
- Accept full URL (e.g.,
- No shortened or redirect links. Preserve query params.
4) Platform Constraints & Settings (BD)
- Allowed HTML Tags include
- Iframe whitelist includes:
- Widget editor allows HTML/CSS/JS/PHP but no new PHP function definitions (we use procedural PHP only).
- Froala empty tags configured to allow
Pattern used in all widgets:
- Read from
- Normalize value →
- Sanitize output via
- Keep JS inside
5) Canonical Embed Builder (used everywhere)
Input: field value can be full URL or key.
Output: sanitized src
ready for <iframe>
.
$BASE = 'https://go-flip.locticians.com';
$keyOrUrl = trim((string)$rawField);
$key = '';
if ($keyOrUrl !== '') {
if (stripos($keyOrUrl,'http://')===0 || stripos($keyOrUrl,'https://')===0) {
$p = parse_url($keyOrUrl);
$path = $p['path'] ?? '';
$qry = isset($p['query']) ? ('?'.$p['query']) : '';
$key = $path.$qry;
} else {
$key = $keyOrUrl;
}
if ($key !== '' && $key[0] !== '/') { $key = '/'.$key; }
}
$src = $key ? ($BASE.$key) : '';
Optional UTM:
$openUrl = $src;
if ($openUrl !== '') {
$openUrl .= (strpos($openUrl,'?')!==false ? '&' : '?').
'utm_source=locticians&utm_medium=profile&utm_campaign=go_flipbook';
}
Optional price pill from price=
param:
$priceText = '';
if ($key) {
$qpos = strpos($key,'?');
if ($qpos !== false) {
parse_str(substr($key,$qpos+1), $qp);
if (!empty($qp['price'])) {
$p = preg_replace('/[^\d\.]/','',$qp['price']);
if ($p !== '') $priceText = '$'.(strpos($p,'.')===false ? $p : rtrim(rtrim($p,'0'),'.'));
}
}
}
6) Widgets Delivered
6.1 Public Listing Banner (Hero / About section)
- DB field:
- Placement: Listing About section (hero‑style, premium).
- Behavior:
- Large, always‑open on desktop; collapsible on mobile (auto‑open if screen ≥ breakpoint).
- Title system: We avoid raw
- Description system: Generated from keyword rules (education, entertainment, culture, business, music, holistic health, lifestyle, beauty, wellness).
- CTAs: Desktop = Read Now / Purchase/Get / Copy Link. Mobile = Preview (label swap), smaller buttons, bottom Collapse.
- Copy Link: uses Clipboard API with fallback.
Why: This is the member’s interactive banner—immediate impact, story + conversion.
6.2 Sidebar Spotlight (compact)
- DB field:
- Placement: Listing sidebar modules.
- Behavior: Collapsible card, centered content, compact CTAs, strong bottom upsell (Order Go‑Flipbook). Footer shows Powered by CrownThrive → crownthrive.com; Tracked with CrownLytics → crownlytics.com.
Goal: Lightweight teaser that converts to views and orders.
6.3 Universal Feature (general purpose block)
- DB field:
- Placement: Below/above body content for multiple post types (Articles, Blog, Videos, Products, Events, Photo Albums, Jobs, Classifieds, Soundcloud, Discussions, Announcements, Member Spotlight, Digital Products, Spaces & Venues, Sponsored variants, etc.).
- Behavior: Adaptive layout; small‑screen collapsible; rotating emoji headlines; rule‑driven description.
Goal: One widget we can drop anywhere and it feels native.
6.4 Showcase Feature (gallery pages)
- DB field:
- Placement: Above photo‑album showcase sections (e.g.,
- Behavior: Wide, visual, consistent with albums intro block; premium styling.
Goal: Marry visual galleries with shoppable flipbooks.
6.5 Ecosystem Integrations Rotator (includes Go‑Flipbooks)
- Inputs:
- Behavior: Compact rotator (no arrows/dots), auto‑rotates; pauses on hover & when off‑screen (IntersectionObserver).
- Go‑Flipbook slides: labeled by field (“Showcase”, “Spotlight”, “Feature”, or generic “Go‑Flipbook”) with Purchase/Preview CTA if
Goal: Cross‑sell ecosystem actions from one compact block.
7) Headline & Description Rules (No dependency on ?title=)
We do not trust ?title=
or raw slugs. Instead, we render category‑aware rotating headlines and generate a short description from audience/topic rules.
7.1 Headline Pools (rotating, emoji‑led)
- Education: 🎓 Study Guide • 💡 Quick Lessons • 📘 Course Companion • 🧭 Learning Paths
- Entertainment: 🎬 Behind the Scenes • 🎤 Show Notes • 🎧 Listen & Browse • 🍿 Featured Drop
- Culture: ✨ Black Girl Magic • 🖤 Culture Drop • 📚 Heritage Spotlight • 🗣️ Community Voices
- Business: 💼 Client Brochure • 📈 Services Deck • 🧾 Pricing & Packages • 🧠 Case Studies
- Music: 🎵 Liner Notes • 🎙️ Podcast Companion • 🎼 Release Book • 🎛️ Producer’s Guide
- Holistic Health: 🌿 Wellness Guide • 🧘🏽 Breath & Balance • 🍎 Healthy Routines • 🧠 Mindful Notes
- Lifestyle (general): 🌟 Lookbook • 📔 Digital Zine • 🛍️ Shop the Edit • 🧩 Curated Picks
- Beauty/Locticians core: 💇🏾♀️ Style Book • 🧴 Product Playbook • 🧵 Protective Styles Guide • 📸 Transformation Stories
Fallback (generic): ⭐ Go‑Flipbook Spotlight • 📖 Interactive Preview • 🛍️ Shoppable Flipbook • ⚡ Quick Look
7.2 Description Generator (examples)
- Education → “Bite‑size lessons and takeaways. Save highlights, revisit anytime.”
- Entertainment → “Stream, skim, and shop the extras. Perfect second‑screen companion.”
- Culture → “Stories that move the culture forward. Shareable, save‑worthy, alive.”
- Business → “Clarity, pricing, deliverables—everything a client needs to say yes.”
- Music → “Tracklists, credits, and notes—plus links to listen & support.”
- Holistic → “Routines, tips, and resources for daily balance and growth.”
- Lifestyle → “Curated picks and shoppable edits—discover, save, send.”
- Beauty → “Care, technique, and transformation—book the look you love.”
Implementation: We pick a pool based on page/post context (if available) or member tags; otherwise cycle through Lifestyle/Beauty set. Mobile vs. desktop headline stacks are adjusted via CSS classes.
8) UX Decisions
- Desktop: Banner widgets open by default; sidebar compact but open; bottom Collapse shown only where it adds clarity.
- Mobile: Default to collapsed header with emoji title + short description and clear Preview button; smooth expand with scroll‑into‑view; a bottom Close collapses the section.
- Buttons: Auto‑label Read Now → Preview on mobile; Purchase/Get toggles based on
- Copy‑Link: Always available; becomes Copied! briefly.
9) Analytics & Instrumentation
- All open links append
- CrownLytics: optionally fire
- Track CTR on Read/Preview, Purchase/Get, Copy, and Order Go‑Flipbook.
KPIs:
- CTR ≥ 4–8% (placement dependent)
- Order conversion from upsell ≥ 2–4%
- Avg time‑in‑view on banner ≥ 12s
10) QA Checklist (per placement)
- Field value saved? (URL or key)
- Normalization →
- Iframe renders without console errors.
- Headline/description render within width (no overflow).
- CTAs open in new tab and have UTMs.
- Price pill renders when
- Copy‑Link works (Clipboard + fallback).
- Mobile collapse/expand smooth; Preview label correct.
- Upsell CTA points to Collab Portal.
11) Common Errors & Fixes
- BD widget syntax error (
- Iframe not showing: domain not in whitelist or
- Title spacing weird: we no longer rely on
- Mobile auto‑collapse while scrolling: bind collapse only to explicit button; prevent accidental closing on scroll/touch.
12) Rollout Plan
- Phase 1 (done): Listing banner, sidebar spotlight, universal block for key post types, showcase feature, ecosystem rotator inclusion.
- Phase 2: Add GTM events; A/B test button order & copy; optional price anchoring; add subtle pulse on Preview.
- Phase 3: Authoring UI to choose headline pool; allow tagline via URL param (
13) Governance & Moderation
- Approval gate: Content reviewed for quality, copyright, and relevance.
- Takedown: Broken links or policy violations → disable display and notify member.
- Accessibility: Buttons have text labels; collapse/expand has
14) Security & Privacy
- Only accept
- Escape all output.
- No client‑side secrets. Payments occur via Collab Portal and member’s own Stripe for flips.
15) Performance Budget
- Lazy‑load iframes (
- Keep CSS inline per widget to avoid extra requests (BD best‑effort).
- JS minimal; avoid heavy libs (no jQuery dependency).
16) Extending to Post Types (Examples)
- Articles/Blog/Spotlight: universal block below intro.
- Videos: universal block under player; headline pool = Entertainment/Music.
- Products/Digital Products: universal block above details; headline pool = Business/Beauty.
- Events: universal block below date/time; headline pool = Lifestyle/Culture.
- Photos: use Showcase Feature above galleries.
- Jobs/Classifieds: small version; headline pool = Business.
- Discussions/Announcements: compact teaser; pool = Culture/Community.
17) Code References (Canonical Snippets)
17.1 Copy‑Link button (vanilla, safe)
<button id="ctgoCopy" data-copy="<?=htmlspecialchars($src,ENT_QUOTES)?>">Copy Link</button>
<script>(function(){var b=document.getElementById('ctgoCopy');if(!b)return;b.addEventListener('click',function(){var v=b.getAttribute('data-copy')||'';if(!v)return;var o=b.innerHTML;function d(m){b.textContent=m||'Copied!';setTimeout(function(){b.innerHTML=o},1200)}function f(){try{var t=document.createElement('textarea');t.value=v;t.style.position='fixed';t.style.opacity='0';document.body.appendChild(t);t.select();document.execCommand('copy');document.body.removeChild(t);d('Copied!')}catch(e){window.open(v,'_blank','noopener')}}if(navigator.clipboard&&navigator.clipboard.writeText){navigator.clipboard.writeText(v).then(function(){d('Copied!')}).catch(f)}else{f()}})})();</script>
17.2 Rotator (pause on hover & off‑screen)
See Ecosystem Rotator snippet; uses IntersectionObserver
and setInterval
with defensive checks.
18) Changelog (high‑level)
- v0.1 Initial embed via widget, accepts URL or key.
- v0.2 Domain restriction →
- v0.3 Collab Portal intake help text; pricing surfaced.
- v0.4 Premium banner styling; CTAs; copy‑link; UTM tagging.
- v0.5 Sidebar spotlight; random/rotating showcase ideation.
- v0.6 Rotation attempt → reverted to random pick (syntax fix).
- v0.7 Fixed BD PHP string errors; sanitized renders.
- v0.8 Moved away from
- v0.9 Mobile/desktop collapse logic; smooth scroll; Preview label on mobile.
- v1.0 Universal Feature & Showcase Feature with consistent design.
- v1.1 Ecosystem rotator now includes Go‑Flipbooks slides; CTA adapts to
19) Release Notes (last drop)
- Added Universal Feature and Showcase Feature widgets with inline CSS and mobile‑first collapse.
- Upgraded Sidebar Spotlight copy and footer links (CrownThrive/CrownLytics).
- Implemented headline/description rule engine (emoji pools + audience categories).
- Normalized all open links with UTM for analytics.
- Tightened sanitation and avoided any PHP function definitions inside BD widgets.
20) Ops Runbook
- Member request → send Collab Portal link; collect payment + intake.
- Ops config → populate appropriate profile fields (Public, Sidebar, Universal, Showcase).
- QA render → test on desktop + mobile; verify CTAs; confirm analytics.
- Approve → publish; optionally schedule ThrivePush nudge and CrownPulse pop for launch week.
- Monitor → CrownLytics dashboard for CTR & conversions; iterate headlines if below target.
21) Future Work
- Admin UI to pick headline category per placement.
- Optional A/B between button orders (Preview vs Purchase first).
- Tagline param consumption (
- Affiliate decoration pass‑through (respect existing
22) Contacts
- Product: CrownThrive IO
- Support:
- Analytics: CrownLytics
This document is living. Update inline as we ship improvements. Keep snippets minimal and BD‑safe. Ensure all new placements preserve the canonical embed builder, CTA structure, and analytics tagging.