CHANGELOG

What's New in Kartivo

Track every improvement, new feature, and fix we ship. We're constantly making Kartivo better for you.

August 2026

Fixed Aug 8, 2026

Name the seller brand in the recovery email again

Fixed Aug 8, 2026

Recovery email branded itself as an arbitrary seller

Fixed Aug 8, 2026

Make account recovery actually work; unpublish the TEST course

Added Aug 8, 2026

One-click magic login in the welcome email and on the thank-you page

Fixed Aug 6, 2026

Patch the vendored Requests deserialization gadget; drop dead composer metadata

Fixed Aug 6, 2026

Clear all 35 dependabot alerts + CI4 4.7.0 -> 4.7.4

Fixed Aug 6, 2026

Backport the kv-nothanks-fallback hotfix from production

Fixed Aug 6, 2026

Stop the in-portal reconciler reporting a false all-clear

Added Aug 6, 2026

Link the rules page to the actual abandoned customers

Fixed Aug 6, 2026

Wait for fbq instead of bailing out when it is not ready yet

Fixed Aug 6, 2026

GST preview must follow the discounted total, not the base price

Added Aug 6, 2026

Self-serve Meta CAPI settings on the Pixel & GTM page

Added Aug 6, 2026

Per-course Welcome email editor

Fixed Aug 6, 2026

Null-guard the IPN event checks + track the live controller

Fixed Aug 6, 2026

Claim before sending Purchase from the thank-you page

Added Aug 6, 2026

Course-first mobile buyer dashboard + one-tap resume + bottom nav

Fixed Aug 6, 2026

Heal COMPLETED-but-unprovisioned in-portal orders

Fixed Aug 6, 2026

One set of credentials per student, ever

Fixed Aug 6, 2026

Resolve payment_log by payment_intent so both senders share one event_id

Fixed Aug 6, 2026

Send each Purchase exactly once (send-once ledger)

Added Aug 3, 2026

Render By time of day as an ApexCharts graph (Page Views area + Sales columns) instead of a table

Added Aug 3, 2026

Per-course funnel (landing page → checkout → sale), by-time-of-day breakdown, + add to Courses sidebar menu

Added Aug 3, 2026

Add Overview section — Page Views / Unique Visitors / Sales / Conversion / Revenue KPIs + day-by-day trend (sourced from wl_payment_log like the dashboard funnel)

Added Aug 3, 2026

Add Unique Visitors column to the funnel (from pl.visitor_id) — matches the dashboard traffic-funnel visitor metric

Fixed Aug 3, 2026

Backfill re-selected country-only IPs forever (gated on city='') — gate on country only so rows drain

Added Aug 3, 2026

Course geo (state/city) + per-page funnel reports (seller + admin) + session-IP geo backfill

Added Aug 2, 2026

Auto-apply coupon from ?coupon=/?kvcoupon= URL param

Fixed Aug 2, 2026

Dedup GTM-fired Purchase pixel on thank-you page via event_id

Fixed Aug 2, 2026

Include required product_token in payment_log insert

Added Aug 2, 2026

Add Student tool — self-serve manual course enrollment

Added Aug 2, 2026

App:complete-manual-sale — welcome email + India INR invoice for manual sales

Added Aug 1, 2026

USD/INR currency toggle on the public pricing page

Fixed Aug 1, 2026

Customer 404 shim, mobile in students+transactions, PhonePe location capture

Security Aug 1, 2026

Close unauthenticated admin takeover, untrack leaked env, gate reCAPTCHA dev-bypass

Fixed Aug 1, 2026

Lesson page horizontal overflow on mobile (content unreadable, cut off right)

Fixed Aug 1, 2026

Certificates registry queried non-existent ct.created_at (column is issued_at) -> 500

Added Aug 1, 2026

Add Certificates to the Courses sidebar submenu (All Courses / Students / Analytics / Certificates)

Fixed Aug 1, 2026

Make Confirm&Send modal physically unable to full-reload the page

Fixed Aug 1, 2026

Confirm no longer blocks on email failure

Fixed Aug 1, 2026

Wait for DataTables lib before initialising the drafts table

Fixed Aug 1, 2026

Confirm & Send no longer reloads the drafts table + returns wim's number

Added Aug 1, 2026

Invoices:bulk-finalize command — bulk confirm+push India/INR drafts (wim numbers & Kartivo adopts), skips .test emails + --min-amount/--exclude filters, --dry/--email/--limit

Fixed Aug 1, 2026

Public certificate link fixes email 404 + enables sharing/verification

July 2026

Fixed Jul 31, 2026

Surface certificate on the portal course list — completed + certificate-enabled cards now show a 'View Certificate' button (was only reachable inside the course overview hero)

Added Jul 31, 2026

Rich certificate completion email — achievement hero, next-steps, dynamic 'continue learning' cross-sell of the seller's other courses, browse-all CTA; centralized in CertificateGenerator::completionEmail() so live + backfill share one template

Added Jul 31, 2026

Certs:backfill spark command — backfill certificates for pre-existing completions, with preview/test email and a confirmed email-burst mode

Added Jul 31, 2026

Certificate registry + auto-issue & email on completion

Fixed Jul 25, 2026

Scope funnel-product-mapping dropdown to the funnel's own collection — was hard-coded collection_id=0 (loaded all ~1,900 products across every collection, burying the funnel's own products; cross-collection picks also mismatch the saved funnel_product col

Fixed Jul 25, 2026

Consolidate course bumps into the main course — attribute a shared ad account's spend to its highest-sales (main) course so main+bumps show as ONE row (sales+spend), not a sales-only main + spend-only bump

Fixed Jul 25, 2026

Include mapped courses in getReportData — dashboard reported funnels only; now folds published courses (wl_courses.meta_ad_accounts) with course sales (product→course map) + course spend, currency-scoped, in all 3 report modes

Added Jul 25, 2026

Reconcile orphaned funnel upsells — native-gateway funnel_id=0 sales (buyer's single funnel that day) get attributed so ROAS counts them; backfilled 144 + hourly self-healing cron

Added Jul 24, 2026

Selectable course-page layouts — classic redesign + long-form landing + per-course admin toggle

Improved Jul 23, 2026

GyaanShala LMS UI/UX Phases 2-6 (brand CSS, empty-state cleanup, counters, course-detail polish)

Fixed Jul 23, 2026

Proper content-page typography site-wide (About/Privacy/Terms/Refund readable + styled)

Added Jul 23, 2026

Mirror header nav to mobile offcanvas menu (Home/About/Contact + categorized courses)

Fixed Jul 23, 2026

Course SEO/OG/schema now fire on clean /course/ URLs (detect by course_id, not URI segment)

Fixed Jul 22, 2026

Add OG/Twitter social-preview tags + branded 1200x630 og-image; fix doubled/broken favicon path

Added Jul 22, 2026

Update hero + pricing table for 17 modules/10+ recipes; move packaging into its own dedicated section (out of the soaps grid)

Fixed Jul 22, 2026

Show Courses section always-visible at top (drop tabs) — SPA/HTMX swap + BS tab JS made the Courses tab unreliable; courses now render server-side above funnels

Added Jul 22, 2026

'Login as student' impersonation from students admin page — ownership-checked, issues portal auth_token, preserves seller admin session

Fixed Jul 22, 2026

Clear error on duplicate manual invoice number (was cryptic 'transaction rolled back'); Wim suggest-next now skips Kartivo-used numbers

Fixed Jul 22, 2026

'Unknown Product' on My Purchases — member plan.product_id is a wl_product_collection_users_data id, not wl_products; join the right table for product name/price/image

Added Jul 22, 2026

Show student Mobile column on students admin page (member_phone_no + payment-log fallback)

Fixed Jul 22, 2026

Funnels/Courses tabs so course mapping is discoverable (was buried below 31 funnel cards); lazy select2 init on courses tab

Fixed Jul 22, 2026

Resolve real currency symbol from wl_global_currency — customer portal showed static USD for INR/non-USD courses

Fixed Jul 22, 2026

Tax uses order currency (not hardcoded $0) + entity-encode mail-log body/subject so INR does not store as '?' in latin1 wl_mail_log_history

Fixed Jul 22, 2026

Divide payment timestamp by 1000 not 100 — /100 made order_date 10x (year 2535) on PhonePe sales

Added Jul 22, 2026

Parse 'stats yesterday|this week|last week|last 7 days|this month|last month' → date-range digest

Added Jul 22, 2026

SendRoasDigest multi-currency per-currency blocks + all funnel/course rows + --start-date/--end-date range

Added Jul 22, 2026

MetaRoasReportService::perEntity — multi-currency, funnels+courses, no currency filter (includes INR accounts)

Added Jul 22, 2026

Map Meta ad accounts to courses (not just funnels) + show account currency on the mapping page

Fixed Jul 21, 2026

JSON_INVALID_UTF8_SUBSTITUTE on the datatable endpoint — latin1 bytes in mail subject/product_title made json_encode return false → DataTables ajax error

Fixed Jul 21, 2026

SaleFinalizer reverts the atomic claim if provisioning fails, so a failed finalize stays retryable (no COMPLETED-but-unprovisioned orphan)

Fixed Jul 21, 2026

SaleFinalizer atomic status-claim (exactly-once across callback/webhook/reconcile) + defer Welcome email off the redirect path (review)

Added Jul 21, 2026

SaleFinalizer — instant PhonePe completion on return (member+enroll+login email), shared by callback + reconcile; idempotent, redirect-safe

Added Jul 21, 2026

App:phonepe-reconcile — verify NULL PhonePe orders against PhonePe + finalize the paid ones (fixes silent webhook-miss orphans)

Added Jul 21, 2026

Derive gateway from order (log_gateway_name) so it reconciles PhonePe/other gateways too, not just Stripe

Added Jul 21, 2026

App:send-pending-course-welcomes — auto-send login email to enrolled course buyers (idempotent, windowed) — closes the no-webhook welcome gap

Added Jul 20, 2026

Server-side DataTables (pagination/search/ordering) matching platform pattern; filters+tabs drive ajax; no page reloads

Fixed Jul 20, 2026

Don't full-reload after send/void — remove row in place, preserve filters/scroll (bulk-send workflow)

Fixed Jul 20, 2026

Resolve tenant SMTP from the sale's collection (payment_log_id) not first-ASC — fixes SMTP connect() failed

Improved Jul 20, 2026

Batch WIM sync-status into one request (was ~200 per-row fetches on load + every 30s)

Added Jul 20, 2026

Server-side currency/profile/country/search filters (no datagrid)

Fixed Jul 20, 2026

Coupon usage-limit guard use >= so max_usages is an exact cap

Fixed Jul 20, 2026

Coupon usage-limit guard use >= so max_usages is an exact cap

Fixed Jul 20, 2026

Coupon usage-limit guard read max_discount, not max_usages

Fixed Jul 20, 2026

Coupon usage-limit guard read max_discount, not max_usages

Added Jul 18, 2026

Require valid email before Stripe confirm (Link can't complete email-less) + receipt_email on PaymentIntent

Fixed Jul 18, 2026

Use ->distinct() not select('DISTINCT ...') (CI4 escaped it into invalid SQL)

Added Jul 18, 2026

--collection all (iterate externally-provisioning collections) + relative --since for cron backstop

Added Jul 18, 2026

App:reconcile-sales — detect+heal paid-but-unprovisioned Stripe sales; load global helper in provision-sale

Added Jul 18, 2026

Error-level [ipn-dispatch] logging on IPN delivery failure (observability; no behavior change)

Fixed Jul 18, 2026

Authoritative name from wl_payment_log.full_name + include offer_bumps (review) + resilience plan doc

Added Jul 18, 2026

App:provision-sale — re-run provisioning for a paid-but-unprovisioned order (dry-run default, idempotent)

Fixed Jul 13, 2026

Clone Product always failed 'Gateway Id is required' — broken operator precedence in 5 required-field guards (!X !== null always true)

Added Jul 12, 2026

Per-level GTM container field on /conversions (writes wl_conversion_tracking.gtm_container_id)

Added Jul 12, 2026

GTM per-level dataLayer on thank-you page (value/currency/ids/hashed identity/click-ids)

Added Jul 12, 2026

TrackingConfigResolver::resolveGtm — cascade GTM container product→funnel→collection + tests

Fixed Jul 12, 2026

Try/catch saveLandingPixel write (graceful pre-migration) — matches saveLevelPixel (review)

Added Jul 12, 2026

Landing-page pixel selector on /conversions (writes wl_meta_connections.landing_pixel_id)

Fixed Jul 12, 2026

Guard landing-pixel query (never 500 a live landing page during deploy window) + 2 test cases (review)

Added Jul 12, 2026

Inject seller landing-page Meta pixel on custom-domain pages (Phase C2) + unit tests

Added Jul 12, 2026

Add landing_pixel_id to wl_meta_connections (Phase C2)

Added Jul 12, 2026

Auto-apply coupon from ?coupon_code= URL param (reuses Apply button, hides the box on success) — for exit-intent links

Added Jul 12, 2026

/conversions funnel + product Meta-pixel override UI (writes wl_conversion_tracking)

Fixed Jul 12, 2026

Add funnel_id to checkout $logData select (funnel cascade was dead on browser path) + de-shadow $productId (review)

Added Jul 12, 2026

Browser + server CAPI resolve pixel via TrackingConfigResolver (funnel/product cascade)

Added Jul 12, 2026

TrackingConfigResolver — cascade product→funnel→collection + collection fallback + unit tests

Added Jul 12, 2026

Wl_conversion_tracking table (multi-level Meta/GTM/Google config, Phase B)

Added Jul 12, 2026

Inject utm-capture.js into custom-domain published pages (CustomDomainFilter) so funnel landing pages decorate checkout links cross-domain

Added Jul 12, 2026

Load bridge-rehydrate.js first on checkout (before GTM/pixel)

Added Jul 12, 2026

Kartivo_capi_identity() falls back to kv_fbp/kv_fbc (cross-domain mirror) when _fbp/_fbc cookies absent

Added Jul 12, 2026

Landing side — capture _fbp/_fbc + wbraid/gbraid, decorate checkout links with kvfbp/kvfbc + node tests

Added Jul 12, 2026

Checkout-side _fbp/_fbc cookie rehydration from kvfbp/kvfbc URL params + node tests

Fixed Jul 11, 2026

Same wl_payment_log column fix in API v1 RefundsController — login_id from apiUserId, drop absent login_id/buyer_email select

Fixed Jul 11, 2026

Stop 3 live payment-flow errors — null-guard WHMCS service lookup (CRITICAL 500), correct wl_payment_log columns (no login_id; aff_id is a column not a table)

Fixed Jul 10, 2026

Filter/sort now use delegated events (survive HTMX swaps) + add 'With funnel' filter option

Added Jul 10, 2026

Searchable pixel dropdown (select2) — type to find a pixel by name/ID among the 74

Added Jul 10, 2026

Filter Active/Inactive/All (hide no-sale/empty collections by default) + search + sort by most sales / revenue / newest / name; per-card sales/revenue/product/funnel metrics

Fixed Jul 9, 2026

Only list active collections (activation_status=1) — hide archived/deleted from the conversions list

Fixed Jul 9, 2026

Pixel discovery via field-expansion (1 call, was 100+ → timeout/spinner) + searchable/scrollable pixel picker

Fixed Jul 9, 2026

Pixel discovery used invalid 'owned_data_sets' edge (returns nothing → 'No Pixel found') — use adspixels across businesses + ad accounts

Fixed Jul 9, 2026

ConnectMeta returns HX-Redirect for HTMX requests so the cross-origin OAuth redirect always works

Fixed Jul 9, 2026

Opt Connect-with-Meta link out of HTMX boost (hx-boost=false) — HTMX AJAX couldn't follow the cross-origin 302 to facebook.com (network error)

Added Jul 9, 2026

Meta one-click OAuth (Connect with Meta) — reuses platform Meta app, exchanges long-lived token, pixel picker, auto-writes+tests CAPI config; paste flow kept as manual fallback

Added Jul 9, 2026

Signal-quality dashboard on /conversions — Meta CAPI live / Google live / 30d orders + first-party match-signal fill rates (fbc/fbp/gclid/email/phone)

Added Jul 9, 2026

Add step-by-step 'how to get' guides on /conversions — Meta Pixel ID + System-User CAPI token + Google Conversion ID/Label, with inline pointers by the paste fields

Added Jul 9, 2026

Load utm-capture.js on checkout (captures gclid) + link decoration (cross-domain click-id passthrough) + wire subscription & custom-payment order inserts for first-party capture

Added Jul 9, 2026

Google Ads conversion + Enhanced Conversions — per-collection config on /conversions, self-loading gtag partial on thank-you (value/currency/txn_id + hashed email/phone)

Fixed Jul 9, 2026

Don't redeclare inherited public $db/$login_id (PHP visibility fatal)

Added Jul 9, 2026

Self-serve Meta CAPI setup — paste Pixel ID + System-User token per collection, live 'Send test event' validator + token health, sidebar entry (no OAuth/App-Review needed)

Added Jul 9, 2026

First-party attribution on orders — add fbclid/fbc/fbp/gclid/wbraid/gbraid to wl_payment_log, capture at checkout (Stripe+PhonePe), feed async CAPI (fix broken fbclid select, use stored fbc/fbp), hash country

Added Jul 9, 2026

Refresh also pulls client/shared ad accounts (2-pass owned-then-client, dedup by meta_ad_account_id so owned accounts aren't reassigned)

Added Jul 9, 2026

Refresh ad accounts button on funnel-mapping — rediscovers Meta businesses + re-pulls owned ad accounts on demand (fixes stale one-time sync)

Added Jul 8, 2026

Immersive lesson player — dedicated classroom shell (no portal chrome), fixed top bar w/ progress + prev-next, collapsible animated curriculum rail, sticky header, keyboard nav

Added Jul 8, 2026

Courses sidebar submenu (All Courses/Students/Analytics) + global Students datagrid with filter, pagination, CSV/print export

Improved Jul 8, 2026

Course-list KPI cards match analytics style (icon badges, consistent typography)

Added Jul 8, 2026

Analytics dashboard — KPIs, enrolments-over-time, per-course performance, completion funnel, active/idle split

Added Jul 8, 2026

Lesson player — per-module progress in sidebar + auto-scroll to current lesson

Added Jul 8, 2026

Course overview — per-module progress bars + 'Up next' resume marker

Added Jul 8, 2026

World-class My Courses — resume hero, progress stats, elevated course cards

Fixed Jul 8, 2026

Surface validation block on Complete Payment (India-GST State field) instead of silent no-op

Fixed Jul 8, 2026

Welcome/reset emails greet 'Hi there,' instead of 'Hi ,' when member has no name

Fixed Jul 8, 2026

Auto-enroll order-bump buyers into bonus courses (map wl_payment_log.offer_bumps token -> bump product -> course)

Added Jul 8, 2026

Admin-initiated password reset — regenerate + email student password from the students screen

Added Jul 8, 2026

Admin students dashboard — fix var mismatch (showed 'no students'), add spend/purchase/last-login/login-email columns + summary cards + resend-login action

Fixed Jul 8, 2026

Durable product->course map so UI product edits (which wipe custom_details.course_id) can't silently break enrollment

Added Jul 8, 2026

App:send-course-welcome command — send/resend collection Welcome (login) email to specific members

Added Jul 8, 2026

Show copyable Bunny webhook URL on the connected CDN card (guarded, can't throw)

Fixed Jul 8, 2026

Trigger connected-list load on cdn_providers page — bundle whitelist (integrationModuleInit) omits cdn_providers so it never loaded

Fixed Jul 8, 2026

Cdn_providers connected-list template mirrors working whmcs template exactly (custom webhook block was throwing → silent catch hid the card)

Added Jul 8, 2026

Bunny.net Stream CDN provider — connect-form fields + connected-list card + webhook receiver (BunnyWebhook) + route

Fixed Jul 7, 2026

Course buyers can log in — add member-record password fallback (sha1 purchase pw + bcrypt register pw) when no wl_users_login row

Fixed Jul 6, 2026

Edge VPS IP 74.48.200.224 -> 69.12.71.70

Fixed Jul 3, 2026

Offer-bumps '+ Add' second row rendered 'undefined'

June 2026

Fixed Jun 21, 2026

GST preview computes on base + selected order bumps

Fixed Jun 16, 2026

Wire date-range picker on country/region stats + restore Region Stats to sidebar

Fixed Jun 16, 2026

Suppress alert email for router-rejected probes (disallowed chars / 400); keep DB log

Fixed Jun 11, 2026

Remove leftover print_R debug from live IPN handler

Added Jun 11, 2026

Pass funnel_id from Stripe/PhonePe/Lemonsqueezy sale dispatch

Added Jun 11, 2026

Persist customer_country + funnel_id in forSale payload

Fixed Jun 10, 2026

Restrict invoice email to India/INR billing profiles

May 2026

Added May 27, 2026

Restore Affiliate Partners link under Settings

Fixed May 25, 2026

Cap dispatcher retries + terminal Failed state + resend reset

Fixed May 21, 2026

Null-coalesce every connection_json access on DataTable

Fixed May 21, 2026

Show real FROM name + FROM email on Transactional Emails DataTable

Added May 21, 2026

Backfill orphan AWS SES rows to new catalogue id

Added May 21, 2026

Register AWS SES under email_smtp catalogue

Added May 21, 2026

PropelCapiHandler — Meta CAPI Purchase for every gateway (#708)

Fixed May 21, 2026

Surface auth-class errors via wl_server_error_log + SES email (#707)

Fixed May 21, 2026

Gate sale.completed dispatch in 5 gateways (defense-in-depth) (#703)

Added May 21, 2026

Diagnostic codes for switch_team + surfaced client error messages (#701)

Fixed May 21, 2026

Clone_payment_gateway response refactor + Select2 modal fix (#700)

Fixed May 21, 2026

Route CSV/TXT exports through CI4 Response, not raw header() + exit (#698)

Fixed May 21, 2026

Query custom_product_id from product table, not collection (#696)

Fixed May 21, 2026

Skip probe-path email notifications (#695)

Fixed May 21, 2026

Build verify-upi URL at runtime instead of broken PHP-tag (#697)

Fixed May 21, 2026

Gate EventBus sale.completed dispatch on payload.state == COMPLETED (#702)

Fixed May 19, 2026

EventBus dispatch now populates login_id / amount / currency

Fixed May 19, 2026

Honor is_enabled toggle at every queue + fire site

Fixed May 19, 2026

/integration/cat/accounting was a forever-loading skeleton

Fixed May 19, 2026

NPE in pay_checkout when Checkout_n is instantiated via `new`

Added May 16, 2026

D6 profile-level tax-inclusive default

Fixed May 16, 2026

B5c extend price+symbol fallback to all 4 remaining checkout templates

Added May 16, 2026

Add Wim accounting integration

Fixed May 16, 2026

D5 polish — drafts list JS in right section, simulator copy, bucket-acl fallback

Added May 16, 2026

D4 seller dashboard for invoice drafts

Added May 16, 2026

D3 PaymentSuccessInvoiceHook routes via profile.auto_send

Added May 16, 2026

D2 InvoiceDocumentService::createDraft + confirmDraft + voidDraft

Added May 16, 2026

D1 schema for draft-first manual-issue workflow

Fixed May 16, 2026

T5 engine/country alignment validation (BPT-010)

Fixed May 16, 2026

Remove broken require_once(FCPATH . 'vendor/autoload.php')

Added May 16, 2026

B5d persist buyer state/country/GSTIN on form submit

Fixed May 15, 2026

T2 EU OSS €10k threshold opt-in (BPT-002)

Fixed May 15, 2026

T3 EU buyer-country fallback to seller country (BPT-003)

Fixed May 15, 2026

T4 rate-table hygiene (BPT-004 + BPT-005)

Fixed May 15, 2026

T1 fail-closed nexus default for US sales tax (BPT-001)

Added May 15, 2026

Phase 2 — US sales-tax + EU VAT engines

Fixed May 15, 2026

IndiaGstEngine CGST/SGST must be equal per GST law

Added May 15, 2026

P2-S Stripe subscription cycle invoices — verified + tested

Fixed May 15, 2026

B5c live tax preview — use product_price fallback in pay.php / pay_subscriptions.php

Fixed May 15, 2026

F21 24-hour TTL on profile-image prefetch cache (BP-026)

Added May 15, 2026

B5c close rollout gaps — pay.php + subscription path

Fixed May 15, 2026

F20 pre-fetch Wasabi-hosted logos for mPDF (BP-024)

Fixed May 15, 2026

F19 extract shared invoice-hook context builder (BP-023 + Q9)

Fixed May 15, 2026

F18 resend override no longer corrupts audit trail (BP-022)

Added May 15, 2026

F17 billing:resend-invoice support command (BP-021)

Fixed May 15, 2026

F16 cross-check legacy currency_id default (BP-019)

Fixed May 15, 2026

F15 sanitize PDF-render exception logging (BP-018)

Fixed May 15, 2026

F14 scope renewal-fallback by gateway connection (BP-017)

Fixed May 15, 2026

F13 per-object private ACL + bucket-check command (BP-016)

Fixed May 15, 2026

F12 hook Razorpay's transaction_paid_data_query (BP-014)

Fixed May 15, 2026

F11 transaction_id idempotency for renewals (BP-015)

Fixed May 15, 2026

F10 subscription renewal buyer-fields fallback (BP-013)

Fixed May 15, 2026

F9 migrate legacy pdf_url URLs to S3 keys (BP-012)

Fixed May 15, 2026

F8 currency check fails closed when payment currency empty (BP-011)

Fixed May 15, 2026

F7 strip brackets from IPv6 hosts in SSRF guard (BP-005-r2)

Fixed May 15, 2026

F6 render-on-retry so mailer always has attachment (BP-002-r2)

Fixed May 15, 2026

Clone-product 404 — actually ship the form.js bundle this time

Fixed May 15, 2026

F5 tax preview honors per-product overrides (Gemini BP-007)

Fixed May 15, 2026

F4 SSRF URL guard + currency-mismatch fail-closed (Gemini BP-005 + BP-006)

Fixed May 15, 2026

F3 private PDF storage + local-stage cleanup (Gemini BP-002 + BP-008)

Fixed May 15, 2026

Guard B5 billing-profile lookup behind schema check

Fixed May 15, 2026

F2 race-safe counter init + dedup (Gemini BP-003 + BP-004)

Fixed May 15, 2026

F1 anchor tax-inclusive math to gross (Gemini BP-001)

Added May 15, 2026

B5b extend GST buyer-fields partial to remaining checkouts

Added May 15, 2026

B6 central invoice hook covering all gateways

Added May 15, 2026

B5 checkout buyer fields + GST preview (checkout_first)

Added May 15, 2026

B4 invoice PDF rendering + email delivery

Added May 15, 2026

B3 PhonePe payment-success invoice-issuance hook

Added May 15, 2026

B2 gateway-connection tagging to billing profiles

Added May 15, 2026

B1 seller-facing UI for billing profiles

Added May 15, 2026

Phase 1 backend foundation for tax-compliant invoicing

Added May 12, 2026

ElasticEmail v4 + SparkPost + Mailgun + Alibaba DirectMail

Added May 12, 2026

Promo placeholder for unpublished sites

Added May 11, 2026

MailerLite v2 + Sendfox + ActiveCampaign v3 connectors

Added May 11, 2026

EmailOctopus v2 connector

Fixed May 11, 2026

SES Config Set tag only applied for us-east-1 sends

Fixed May 11, 2026

Wl_users_login column is email_id not email

Fixed May 11, 2026

Skip bulk/unsubscribe headers for operational recipients

Fixed May 11, 2026

Show actual price instead of empty currency symbol

Fixed May 11, 2026

JVZIPN v1 path now passes product_id to payment.sale.completed

Fixed May 11, 2026

Render inline where script tag is placed, not bottom-right

Added May 11, 2026

Purchase-gate operators in condition step dropdown

Added May 11, 2026

Has_purchased/has_not_purchased operators + multi-id trigger filter

Added May 11, 2026

Pass product_id in payment.sale.completed payload

Fixed May 11, 2026

Prefer DB-stored SMTP creds over file-based

Added May 11, 2026

Suppression check, jitter, dashboards, SES setup runbook

Added May 11, 2026

SNS webhook + email_events/suppressions tables

Added May 11, 2026

List-Unsubscribe header + public unsubscribe endpoint + footer

Fixed May 11, 2026

Empty collections dropdown + missing CKEditor + add 'Specific Integration' SMTP source

Fixed May 11, 2026

Lockfile + GTW pre-register CLI

Fixed May 11, 2026

Atomic claim + idempotent enqueue + Aws_email FCPATH

Fixed May 10, 2026

Steps now render on first navigation, not just hard refresh

Added May 10, 2026

Smart slug auto-update + soft prompt on rename

Fixed May 10, 2026

Token_status badge actually reflects Meta probe + Refresh button

Fixed May 10, 2026

'Back to Integration' opened the marketing site, not the hub

Fixed May 10, 2026

Editing project no longer demands re-selecting Project Type

Added May 10, 2026

Redesign hub — sidebar categories + searchable platform grid

Fixed May 10, 2026

Use Cloudflare DoH for verify so local DNS cache stops lying

Fixed May 10, 2026

'Added' column was empty — getDomains didn't select created_datetime

Added May 10, 2026

Per-row 'Use Cloudflare' button for existing pending domains

Fixed May 10, 2026

Modal scrolls internally — verify buttons no longer hidden

Fixed May 10, 2026

Prefetch live CSRF token before every POST

Fixed May 10, 2026

SanitizeDomain regex used # as delimiter AND literal char

Fixed May 10, 2026

Belt-and-suspenders CSRF on every POST + clearer Save errors

Added May 10, 2026

Auto-insert DNS records via the connected token (round 3)

Fixed May 10, 2026

Typing '.' works + 'Save failed.' on Add Domain

Added May 10, 2026

Visible steps + WYSIWYG body + per-step pause + drag reorder

Added May 10, 2026

Connect card + token modal on integrations/domains (round 2)

Fixed May 10, 2026

Repair pre-existing stub row instead of skipping

Added May 10, 2026

Scaffold per-user CF API-token integration (round 1 of 2)

Fixed May 10, 2026

Kill the // in URLs on Projects + Integrations pages

Fixed May 10, 2026

Attach CSRF header so /ai/chat stops returning 'Network error'

Fixed May 10, 2026

Blank Canvas as a tile in the template picker, not an auto-redirect

Fixed May 10, 2026

Blank Canvas opens the editor directly + drop // in redirect URL

Fixed May 10, 2026

Blank Canvas no longer requires Project Type + stops 404 on save

Added May 10, 2026

Emit contact.created at every wl_contacts insertion site

Fixed May 10, 2026

QuickStats hits /quickstats/list (data endpoint) not /quickstats (doc page)

Fixed May 10, 2026

Correct auth header format — DEV-<dev>:<clerk_verbatim>

Added May 10, 2026

Add ClickBank affiliate-network gateway integration

Added May 10, 2026

Add Resend.com as a transactional email provider

Added May 10, 2026

Per-webhook ON/OFF toggle in collection integrations

Fixed May 10, 2026

Countries table is (country_code, value), not (iso2, country_name)

Fixed May 10, 2026

Add Network row to cancel + dispute templates

Fixed May 10, 2026

Show real Location + add Network row in admin sale email

Added May 10, 2026

Tier 1 revamp — sticky shell + KPI strip + view tabs + floating bulk

Fixed May 10, 2026

Set subscribed_at + updated_at + lead_source on inserts

Fixed May 10, 2026

Submissions tab actually populates KPIs + table rows now

Fixed May 10, 2026

Required-asterisk markers + actually-useful submit errors

Added May 10, 2026

Default Kartivo thanks page when no custom redirect

Added May 10, 2026

Phase 6 — public hosted preview + per-field show/hide config

Added May 10, 2026

Phase 4 — builder widget can pick a Kartivo form

Added May 10, 2026

Phase 3 — admin UI on /forms (tabs + create/edit + embed)

Fixed May 10, 2026

Allow form_table_id + collection_id through FormSubmissionModel

Added May 10, 2026

Phase 2 — FormController extensions for centralised forms

Fixed May 10, 2026

Wl_public_forms.collection_id (not target_collection_id)

Added May 10, 2026

Phase 1 migration — centralise on wl_form_json

Added May 10, 2026

Public lead-capture forms - drop Sendy as the lead intake

Fixed May 10, 2026

Wl_collection -> wl_products_collections (canonical table)

Added May 10, 2026

Inbound webhook — Sendy subscription -> Kartivo contact -> GTW

Added May 10, 2026

Spark command for cron-driven queue draining

Added May 10, 2026

GTW webinar binding + per-attendee join_url + collection backfill

Added May 9, 2026

Show Dashboard/Logout in marketing nav when user is logged in

Fixed May 9, 2026

Correct insert to wl_global_integrations_users_data

Fixed May 9, 2026

Hx-boost=false on Connect button so HTMX doesn't intercept

Fixed May 9, 2026

Remove private $db redeclaration that broke visibility contract

Fixed May 9, 2026

Escape cron asterisk-slash in docblock — was terminating the comment and triggering ParseError on spark list

Added May 9, 2026

UI panel + sync worker + connection-status endpoint

Added May 9, 2026

Backend scaffold for sheet -> contacts integration

Added May 9, 2026

Spark meta-leads:health monitor for stuck webhooks

Fixed May 9, 2026

Drop page_id from Graph fields list — not on the Lead object

Added May 9, 2026

Wire Facebook Login on /login + /signup

Fixed May 8, 2026

Show collection id in picker, sort ascending by id

Fixed May 8, 2026

Stop computing scheduled_at in PHP — TZ mismatch stranded rows

Fixed May 8, 2026

Dedicated /webinar/list-collections endpoint for the picker

Fixed May 8, 2026

TestConnection shows actual user identity, not 'Zoom user'

Fixed May 8, 2026

Use /v2 date-range /webinars + vendor Accept header

Fixed May 8, 2026

TestConnection probe + replace mautic-placeholder logo

Fixed May 8, 2026

Correct redirect URL + auto-backfill organizer_key

Fixed May 8, 2026

Add missing getLoginId/getLoginType helpers

Added May 8, 2026

Re-ship read-only UI panel inside Ads Integration

Fixed May 8, 2026

Replace catastrophic-backtracking HTMX-extract regex

Fixed May 8, 2026

Allow hyphens in page_view path-traversal regex

Added May 8, 2026

Minimal read-only UI panel inside Ads Integration

Fixed May 8, 2026

Defensive try/catch around new viewAds queries

Added May 8, 2026

UI panel under Integrations → Ads Integration

Added May 8, 2026

Inbound leads → wl_contacts → webinar drip

Added May 8, 2026

Phase B — GoToWebinar (OAuth code flow)

Added May 8, 2026

Phase A — Zoom integration with drip-register queue

Added May 8, 2026

Gateway::index auto-fills customer_country + payment_method

Added May 8, 2026

Add Pass 2 — link pcmp.country_id to surface country on /transaction

Added May 8, 2026

Backfill country + payment_method from existing transaction_json

Added May 8, 2026

Initiated postback (v2) + conversion backfill

Fixed May 8, 2026

Move help panel to the actually-rendered template

Fixed May 8, 2026

Add help panel to actual underscore.js card template

Added May 8, 2026

Receive S2S postbacks — Purchase + Refund, per-tenant

Fixed May 7, 2026

Move CSV export to async CLI worker so it never times out

Fixed May 6, 2026

Stream CSV export so /transaction Export CSV stops timing out

Fixed May 6, 2026

Canvas content no longer clipped by top toolbar + visible empty containers

Fixed May 6, 2026

Right panel auto-closes on deselect (FlexiFunnels parity)

Fixed May 6, 2026

Plug P38 quickActions ReferenceError + undo-race in frame repair

Fixed May 6, 2026

Repair pages with zero frames + clearer insert error path

Fixed May 6, 2026

Kill legacy panel collision + 5 reported bugs

Fixed May 6, 2026

Live HTML preview in EVERY block card, not just hover

Fixed May 6, 2026

Derive block names + live preview iframe + backfill migration

Fixed May 6, 2026

Built-in Blocks now fetches /builder/blocks (real blocks, not templates)

Fixed May 6, 2026

Derive Design Block categories from data, not hard-coded spec list

Fixed May 6, 2026

Remove dual toolbar + plug drag-payload text leak

Added May 6, 2026

P30 — devicelet preview pin

Added May 6, 2026

P29 — last-action pill with one-click undo

Added May 6, 2026

P28 — multi-select with Shift+click + bulk Duplicate/Delete

Added May 6, 2026

P27 — component-tree breadcrumb pinned to canvas bottom

Added May 6, 2026

P26 — block content variants (8 new entries)

Added May 6, 2026

P25 — recently-used quick-pick strip

Added May 6, 2026

Route in-builder AI assistant through Nexus AI gateway

Added May 6, 2026

P24 — drag-cancel shake + smooth fade-back

Added May 6, 2026

P23 — Layers panel quick-jump on selection + L shortcut

Added May 6, 2026

P22 — highlight matching characters in search results

Added May 6, 2026

P21 — right-click context menu on canvas elements

Added May 6, 2026

P20 — autosave on tab/window blur

Added May 6, 2026

P19 — wire ? to toggle shortcuts overlay

Added May 6, 2026

P18 — component descriptions in hover tooltip

Added May 5, 2026

P17 — hover preview tooltip for cards + thumbnails

Added May 5, 2026

P16 — seed migration for Design Block starter library

Added May 5, 2026

P15 — floating save-state badge

Added May 5, 2026

P14 — styled drag preview chip

Added May 5, 2026

P13 — empty-canvas drop slot

Added May 5, 2026

P12 — inline toolbar size adapter for small components

Added May 5, 2026

P11 — keyboard shortcuts for quick insert + panel toggles

Added May 5, 2026

P10 — search across both tabs

Added May 5, 2026

P9 — drop-position precision (before/after target)

Added May 5, 2026

P8 — drag-from-card to canvas with positional drop

Added May 5, 2026

P7 — Design Blocks one-shot fetch + category counts + smarter empty states

Added May 5, 2026

P6 — quick-add rail icons (Section/2-Cols/Headline/Sub/Image/Video)

Added May 5, 2026

P5 — orange inline element toolbar with Gear shortcut

Added May 5, 2026

P4 — default canvas seed + bottom-rail Settings/Preview + floating canvas Save/Gear

Added May 5, 2026

P3 — Design Blocks tab (Built-in / My Blocks + 19 categories)

Added May 5, 2026

P2 — Components tab with 42 colour-coded cards

Added May 5, 2026

P1 — slide-in Blocks & Components panel shell

Fixed May 5, 2026

Scope flex-column to stack/composite types only — selects + colors render correctly

Fixed May 5, 2026

Scope flex-column override + constrain color picker + remove !important blocking animation

Fixed May 5, 2026

Vertically stack composite inputs + animation preview via keyframes

Fixed May 5, 2026

Kill horizontal scroll in Text + Background tabs

Fixed May 5, 2026

Hide-on-mobile/tablet/desktop checkboxes work again

Fixed May 5, 2026

Entrance animation no longer leaves element invisible

Fixed May 5, 2026

Colour / style changes now visibly take effect on canvas

Fixed May 5, 2026

Class&State accordion + Advanced UI polish + Animation Preview works

Fixed May 5, 2026

Compact Class & State box at top of right panel

Fixed May 5, 2026

Advanced + Animate tabs now render content

Added May 5, 2026

Production-ready right panel — top tabs, custom shadow, text/bg extras, animation panel

Fixed May 5, 2026

Kv-slider — bypass StyleManager type, inject directly into sectors

Added May 5, 2026

More sliders (Text + FX) + clean up FX sector

Fixed May 5, 2026

Spacing sliders — split type per side + DOM-injection fallback

Fixed May 5, 2026

Right-panel — DOM-toggle sectors + cache-bust JS modules

Fixed May 5, 2026

Right-panel sectors now all render + working spacing sliders

Added May 5, 2026

Right-panel rework — vertical tabs + 7 sectors + drag sliders

Fixed May 5, 2026

Right panel + AI/Pages/Assets toolbar buttons

Fixed May 5, 2026

Right-panel — capture-phase fallback so click always opens it

Fixed May 5, 2026

Right-panel regression — element-lock was over-mutating toolbars

Fixed May 5, 2026

Finish triage of QA-reported broken admin pages

Fixed May 5, 2026

Batch SPA-init + load-order fixes for 5 admin pages

Fixed May 5, 2026

/wladmin/users no-data — DOMContentLoaded never re-fires under HTMX

Fixed May 5, 2026

Delete actually deletes — switch to deleted_at column

Fixed May 5, 2026

Minor QA items — checkbox hitbox + Total counter refresh

Fixed May 5, 2026

Inline edit/delete actions + emoji + test-email validation

Security May 5, 2026

Extend Round 1 F-003 fix to Form/Publish/ZipImport

Fixed May 4, 2026

QA report 2026-05-04 — 10 admin-panel bugs across critical/high/medium/low

Security May 4, 2026

Gemini Round 1 — fix all Critical + High + Medium findings

Fixed May 4, 2026

Shimmer skeleton on slow stat cards instead of "..." / 0

Fixed May 4, 2026

Unwedge tables that didn't render under HTMX navigation

Fixed May 4, 2026

Split-test page no longer wedges sidebar navigation

Added May 4, 2026

Popup template gallery — 10 ready-made overlays

Added May 4, 2026

Per-element lock toolbar button

Added May 4, 2026

Per-device show/hide trait (mobile/tablet/desktop)

Added May 4, 2026

D3+D4 — brand-color StyleManager dropdowns + kv-* utility classes

Added May 4, 2026

Phase C — AI Assistant chat panel + Anthropic proxy

Added May 4, 2026

Phase E — Symbols v1 (linkage tagging + visual marker)

Added May 4, 2026

Phase J — multi-page panel in left rail

Added May 4, 2026

Phase D — Brand Kit / Global Design Tokens

Added May 4, 2026

Phase I — animation library + traits + runtime

Added May 4, 2026

Phase H — Assets panel surfaces GrapesJS AssetManager

Added May 4, 2026

Phase G — rich text editor toolbar (font/size/align/lists/colors/clear)

Added May 4, 2026

Phase F — granular form-element blocks (12 entries)

Added May 4, 2026

Phase B — descriptive layer naming

Added May 4, 2026

Phase A7 — section quick-actions strip + Phase A complete

Added May 4, 2026

Phase A6 — device-mode indicator above Style tabs

Added May 4, 2026

Phase A3 — gradient builder

Added May 4, 2026

Phase A4 — shadow visual polish (CSS-only)

Added May 4, 2026

Phase A5 — per-corner border-radius box

Added May 4, 2026

Phase A2 — visual flex helper (icon-button rows)

Added May 4, 2026

Phase A1 — visual padding/margin box

Fixed May 4, 2026

Explicit "Act as User" impersonation, kill implicit admin bypass

Fixed May 4, 2026

Right panel display:block, not flex — Style/Trait Manager hidden after selection

Added May 4, 2026

Tier 3 funnel-staple blocks — sticky CTA, exit-intent, scarcity, Wistia

Added May 4, 2026

Default Trait Manager fields for common element types

Added May 4, 2026

USER badge on user-saved blocks

Added May 4, 2026

Cache block panel fetches with TTL + invalidation

Added May 4, 2026

Explicit search-within-category UI on blocks panel

Added May 4, 2026

Live tab counts on blocks panel (My/Favs/Recent)

Fixed May 4, 2026

Route edge VPS via CF when cPanel firewall blocks direct IP

Added May 4, 2026

Skeleton loader for block-card iframe previews

Added May 4, 2026

Add countdown_reverse block + fix countdown.js dispatch

Added May 4, 2026

Always-visible right panel with proper empty state

Added May 4, 2026

Expose Selector Manager — class + state editing

Fixed May 4, 2026

Gemini Round 3 — H1 + K1 + B2 + I3 + F1/F3 + J2 fixpack

Fixed May 4, 2026

Prefer live screenshot over template-default thumbnail

Fixed May 4, 2026

Edit-page logo links to /projects, not /dashboard

Fixed May 4, 2026

Write to public/uploads on cPanel layout (FCPATH != public dir)

Added May 4, 2026

Full-URL display + auto-screenshot fallback + index-page card thumbnail

Fixed May 4, 2026

Edit-page logo links to dashboard, not marketing site

Fixed May 3, 2026

Published! URL ignores slug + is_index — always returned root

Fixed May 3, 2026

SaveCanvas hangs on custom-domain projects — drop dead funnel upload

Added May 3, 2026

Per-page slug + is_index flag (PENDENCY Q29)

Fixed May 3, 2026

Gemini Round 2 — F-201..F-207 hardening

Fixed May 2, 2026

Preview button opens /p/{id} for published pages, /preview/{id} only when unpublished

Fixed May 2, 2026

Gemini Round 1 — Q1 + Q2 + Q5 + Q24 hardening

Fixed May 2, 2026

Map root / to /_e/__root__ to avoid trailing-slash 301

Fixed May 2, 2026

Work around cPanel root-path 301 via /_e Caddy rewrite

Fixed May 2, 2026

Broaden trusted-edge IP detection (CF, XFF, etc.) + log on miss

Fixed May 2, 2026

Smuggle customer host via X-Original-Host header

Fixed May 2, 2026

Rewrite add-domain modal — sanitization, dedup, two-step flow

Fixed May 2, 2026

Verify endpoint + UI now point at edge VPS, not cPanel

Fixed May 2, 2026

Drop interval/burst from on_demand_tls (deprecated in v2.11)

Fixed May 2, 2026

Adapt for two-server topology — Caddy on dedicated edge VPS

Added May 2, 2026

Finish module — verifyDNS rewrite, Live URL banner, audit doc

Added May 2, 2026

Phase 1 — Caddy + LE host-routing, kill funnel-CDN upload

Fixed May 2, 2026

/integration/cat/domains showed empty list despite connected domains

Fixed May 2, 2026

Topbar logo links back to the project's pages, not site home

Fixed May 2, 2026

Port Wasabi user-scope guard to Backblaze + Amazon_store bucket_details

Fixed May 2, 2026

Post-Gemini quick wins — destination_path, Wasabi user scope, unpublish endpoint

Fixed May 2, 2026

Bulletproof entry trace + try/catch + per-user trace files

Fixed May 2, 2026

Drop UNIQUE (user_id, slug) on publishpages — root cause of /p/{id} 404

Fixed May 2, 2026

Row-not-written silent failure — disable strict trans, use Model return value

Fixed May 2, 2026

Cache-bust import-export.js so page_id-fix actually ships

Fixed May 2, 2026

Write the right page — JS now sends page_id, server returns live URL

Fixed May 2, 2026

/p/{id} 404 after republish — path stored as basename only

Fixed May 2, 2026

Surface actionable error when php-zip extension is missing

Fixed May 2, 2026

Template picker thumbnails, applied-template thumbnail, /p/{id} live route

April 2026

Added Apr 30, 2026

Close 2 pixel-coverage gaps — custom payment links + legacy subs

Added Apr 30, 2026

Hashed PII advanced matching + contents/external_id on pixel + CAPI

Fixed Apr 29, 2026

Callback signature uses values-only, not key=value

Fixed Apr 29, 2026

Silent INSERT failure + friendly retry on callback

Fixed Apr 29, 2026

Resolve custom_product_id → wpcu.id in initiateTransaction

Fixed Apr 29, 2026

Wl_global_currency (singular) — was wl_global_currencies

Added Apr 29, 2026

Paytm:attach --collection-id for exact-match disambiguation

Added Apr 29, 2026

Paytm:attach --auto picks cheapest Stripe-free product

Added Apr 29, 2026

Add paytm:attach Spark command for one-shot gateway attachment

Added Apr 29, 2026

Phase 2 — bind to wl_payment_log + redirect via pay/thanks + refund helper + JS dispatch

Added Apr 28, 2026

Google Sheets → Kartivo Contacts sync (Apps Script stop-gap)

Fixed Apr 28, 2026

Hx-boost=false on download links — HTMX was inlining CSV bytes

Added Apr 28, 2026

Add Contacts API v1 (CRUD + tags + bulk) + extend OpenAPI docs

Fixed Apr 28, 2026

Wire footer legal links to kartivo.com

Fixed Apr 28, 2026

Inject <base href> into folder-based pages so relative URLs resolve

Fixed Apr 28, 2026

Host folder-based pages at public/funnel/{slug}/ so URL=disk

Added Apr 28, 2026

Add fe / oto1 / partners landing pages (folder-based)

Added Apr 28, 2026

UX overhaul — country/state cascade, dial-code prefix, empty state, polish

Fixed Apr 28, 2026

Systematic-debug audit pass — 8 fixes

Added Apr 28, 2026

Batch 4 — filters, CSV export, bulk-status actions

Added Apr 28, 2026

Batch 3 — Email Campaigns audience integration

Added Apr 28, 2026

Batch 2 — hardened CSV import

Added Apr 28, 2026

Batch 1 — schema + CRUD foundation

Added Apr 28, 2026

Batch 9 final — 17 templates to reach 100/100

Added Apr 28, 2026

Batch 8 — 12 templates (membership, school, charity, church, insurance, lawyer, daycare, dealership, music, podcast, SaaS trial, subscription box)

Added Apr 28, 2026

Batch 7 — 12 templates (realtor, photographer, fitness, med spa, law, accounting, pet, career, ebook v2, high-ticket, healthtech)

Added Apr 28, 2026

Batch 6 — 12 templates (B2B, branding, agency, portfolio, marketplace, service business niches)

Added Apr 28, 2026

Batch 5 — 12 depth-add templates across 8 under-served categories

Added Apr 28, 2026

Batch 4 — 12 templates across email-optin, local-business, digital-products, consulting + depth-adds

Fixed Apr 27, 2026

FaqAccordion el() arg-position — id-attr was in text slot

Fixed Apr 27, 2026

El() arg-position bug — id-attr must be 6th arg, not 3rd

Added Apr 27, 2026

Batch 2 — 8 templates across 8 new categories + shared blocks library

Added Apr 27, 2026

Add nav + redesign Sales hero (light, split, with floating proof card) — pilot iteration after operator review

Fixed Apr 27, 2026

Wrap components in GrapesJS project shape

Fixed Apr 27, 2026

El() wrong arg position in salesPricing — attrs in 3rd slot is text, must be 6th

Added Apr 27, 2026

Pilot batch 1 — 3 hand-designed templates + capture pipeline

Fixed Apr 27, 2026

Wrap components in GrapesJS project shape

Fixed Apr 27, 2026

El() wrong arg position in salesPricing — attrs in 3rd slot is text, must be 6th

Added Apr 27, 2026

Pilot batch 1 — 3 hand-designed templates + capture pipeline

Fixed Apr 27, 2026

Hx-boost=false on all edit-project links

Improved Apr 27, 2026

Add UTM Report link to admin profile dropdown

Fixed Apr 27, 2026

URL double-slash + revamp Stripe payment block

Improved Apr 27, 2026

Strip icons from stat-card labels per operator request

Added Apr 27, 2026

One-time mode — target datetime + IANA timezone

Fixed Apr 27, 2026

Wrap init in jQuery ready + use fas icons

Added Apr 27, 2026

Full UI/UX revamp + delivery status + per-row View modal

Fixed Apr 27, 2026

Category filter SQL — CI4 where() doesn't bind arrays

Fixed Apr 27, 2026

Client-side CSV download via Blob

Fixed Apr 27, 2026

Revert positional cross_sale call — _n variant is array-style

Fixed Apr 27, 2026

Revert broken onerror escaping for logo fallback

Added Apr 27, 2026

Inline credentials + auto-download + bulk-resend (A + C)

Fixed Apr 27, 2026

Hardening, CSV-only validation, real success panel, email correctness

Fixed Apr 27, 2026

Inject db+forge via reflection (Migration has no setter)

Added Apr 27, 2026

One-shot templates:run-phase3 command (CI4 migrate didn't auto-discover the file)

Added Apr 27, 2026

Batch 3 — 12 templates across 10 untouched categories + 2 depth-adds

Added Apr 26, 2026

UTM Attribution Report (Phase 2) — admin dashboard + CSV

Added Apr 26, 2026

Per-transaction UTM + click-id capture (Phase 1)

Fixed Apr 26, 2026

Company dropdown opens on hover (matches mega-panel pattern)

Added Apr 26, 2026

Regroup into 5 megamenus + raise burger threshold to 1024px

Fixed Apr 26, 2026

IsVerifiedPurchaser SQL — wrong column blew up logged-in product views

Added Apr 26, 2026

Wire /courses + /marketplace into header and footer

Fixed Apr 26, 2026

Pass activeCategory slug to view (was undefined)

Fixed Apr 26, 2026

Correct seller-badge sales query column names

Fixed Apr 26, 2026

Unbreak /affiliate-marketplace + add /marketplace alias

Fixed Apr 26, 2026

Hero text visibility + breadcrumb overlap

Added Apr 26, 2026

Public marketing /courses index + Udemy-style detail page

Fixed Apr 26, 2026

Hero text legibility on bright banners

Added Apr 26, 2026

Editorial typography revamp for lesson body

Added Apr 26, 2026

Full revamp — sticky header, brand-aligned typography, polished prev/next

Fixed Apr 26, 2026

Load global helper in marketing layout so kartivo_gtm_id() resolves

Added Apr 26, 2026

Unify marketing GTM + always-2-pixels on checkout

Added Apr 26, 2026

Redesigned hero + progress + accordion

Fixed Apr 26, 2026

Delete AJAX must POST to /courses/admin/delete/{id}

Added Apr 26, 2026

Card-based grid replaces table — full 16:9 banners, search + status filter

Fixed Apr 26, 2026

List view reads wl_courses.thumbnail (was thumbnail_url)

Fixed Apr 26, 2026

Cross-panel nav — Admin Panel + Apps Switcher Customer Portal

Added Apr 26, 2026

Site-wide GTM container ID — admin-managed, replaces hardcoded GTM-TB77SJ94

Fixed Apr 26, 2026

Add kill-switch for per-webhook email log notifications

Fixed Apr 26, 2026

Unbreak paymentLog() helper + crosell_member cron idempotency

Fixed Apr 25, 2026

Unbreak ad-set creation + duration column + expandable errors

Added Apr 25, 2026

Full course payload (9 modules, 45 lessons, 9 quizzes)

Added Apr 25, 2026

Index swapped to DataGrid + real per-account stats

Fixed Apr 25, 2026

/propel/ads/{id} 500 + render full creative payload

Fixed Apr 25, 2026

"Today" sync no longer returns zeros (time_increment=all_days)

Added Apr 25, 2026

Full payload

Added Apr 25, 2026

Full payload

Added Apr 25, 2026

Full payload

Added Apr 25, 2026

Full payload

Added Apr 25, 2026

Full payload

Added Apr 25, 2026

Full payload

Added Apr 25, 2026

Full payload 83 steps

Added Apr 25, 2026

Full payload 83 steps

Added Apr 25, 2026

Expand MetaClient retry to 502/504/520+ + honor Retry-After

Added Apr 25, 2026

Gender + age cohort breakdowns into audit

Added Apr 25, 2026

Placement + device breakdown — new section + 2 P2 findings

Added Apr 25, 2026

AI Platforms course live (course_id=5); catalog updated

Added Apr 25, 2026

Full course payload, 83 steps

Added Apr 25, 2026

Full course payload, 84 steps

Added Apr 25, 2026

LIVE on prod — course_id=3

Added Apr 25, 2026

Sections 6-9 + final publish (full payload, 85 steps)

Added Apr 25, 2026

Sections 4-5 (Production at Scale, Campaign Architecture)

Added Apr 25, 2026

Sections 1-3 (Landscape, Measurement, Creative Strategy)

Added Apr 25, 2026

Meta Ads Mastery 2026 — Phase 1 + 2

Added Apr 24, 2026

Backfill first course + scaffolder

Fixed Apr 24, 2026

Preserve course meta on final publish step

Added Apr 24, 2026

Direct-DB course payload runner (prod-side)

Added Apr 24, 2026

Authoring payload runner

Fixed Apr 24, 2026

Delete 500 when wl_course_lesson_attachments missing

Fixed Apr 24, 2026

Tolerate missing event_subscriptions column on older envs

Fixed Apr 24, 2026

Render subscription template on initial /pay/{id} load

Fixed Apr 24, 2026

Store Stripe Price ID (not Product ID) for subscriptions

Fixed Apr 24, 2026

Remaining producers switched to multi-webhook helper

Fixed Apr 24, 2026

Collection::store_member SALE now fans out to all webhooks

Added Apr 24, 2026

UI opt-in toggles + Paykickstart SUBSCRIPTION_CANCELLED

Added Apr 24, 2026

New event types with per-webhook opt-in (no breakage)

Fixed Apr 24, 2026

Fan out cross-sell events to ALL target-collection webhooks

Fixed Apr 24, 2026

Webhooks tab DataTable never loaded

Fixed Apr 24, 2026

Server errors during admin add-plans-and-save

Fixed Apr 24, 2026

Fan out payment gateway IPN events to all webhooks

Fixed Apr 24, 2026

Fan out to ALL collection webhooks, not just the first

Fixed Apr 24, 2026

Plan checkboxes never reached server on save

Fixed Apr 24, 2026

Add missing endif closing isSuccess conditional

Fixed Apr 23, 2026

Stop #spinner button showing permanently on pay.php

Fixed Apr 23, 2026

Update stale SRI hash for jquery-validate → unblocks Stripe Elements

Security Apr 23, 2026

Php syntax gate (pre-commit + CI) + restore checkout pixel coverage

Fixed Apr 23, 2026

Close unclosed PHP brace in pay.php (unbreaks Stripe pay_now)

Fixed Apr 22, 2026

Accept legacy VCS key (warn, don't throw) to unblock tenant decryption

Fixed Apr 22, 2026

Record bump price on its own row instead of 0

Fixed Apr 22, 2026

Don't throw during FactoriesCache restoration

Added Apr 21, 2026

Resend Welcome button on each member row

Fixed Apr 21, 2026

Make SES configuration-set env-driven + skip header when blank

Added Apr 21, 2026

Rebuild the 8 default templates + collection-token substitution

Fixed Apr 21, 2026

Testimonial modal — proper cards for each entry + clean Add More

Fixed Apr 21, 2026

Favicon — correct path + double-slash + add full size set

Fixed Apr 21, 2026

Dismiss open Bootstrap modals before HTMX main.content swap

Added Apr 21, 2026

Add hard-delete button to collection members list

Fixed Apr 20, 2026

Boosted navigation + browser-back rehydration for legacy layout

Added Apr 20, 2026

Flip default click target to manage, rename action to Performance

Fixed Apr 20, 2026

Edit-collection modal 500 — hardened Wasabi upload + save path

Fixed Apr 18, 2026

Check public/ first in DocsController (follow-up to previous commit)

Fixed Apr 18, 2026

Serve public/openapi.yaml, not the stale root-level duplicate

Fixed Apr 18, 2026

Workflows — use getJSON() not getRawInputVar() for body parsing

Fixed Apr 18, 2026

Workflows create() accepts JSON bodies, not just form POST

Added Apr 18, 2026

Add Email Workflows API for programmatic drip/lifecycle sequences

Fixed Apr 18, 2026

Remove time() from Purchase event_id so dedup actually works

Fixed Apr 18, 2026

Remove time() from Purchase event_id so dedup actually works

Fixed Apr 18, 2026

Remove time() from Purchase event_id so dedup actually works

Fixed Apr 18, 2026

Restore missing [$loginId] bind param on total-customers query

Fixed Apr 17, 2026

Disable SSE /live-events/stream — was saturating PHP-FPM

Fixed Apr 17, 2026

Disable SSE /live-events/stream — was saturating PHP-FPM

Fixed Apr 17, 2026

Disable SSE /live-events/stream — was saturating PHP-FPM

Fixed Apr 17, 2026

Short-circuit vite_has_manifest to force unhashed JS serving

Fixed Apr 17, 2026

Short-circuit vite_has_manifest to force unhashed JS serving

Fixed Apr 17, 2026

Short-circuit vite_has_manifest to force unhashed JS serving

Fixed Apr 17, 2026

Remove stale Vite manifest — built JS predates current fixes

Fixed Apr 17, 2026

Remove stale Vite manifest — built JS predates current fixes

Fixed Apr 17, 2026

Remove stale Vite manifest — built JS predates current fixes

Fixed Apr 17, 2026

Stabilise prod after 524 timeouts — dashboard throttling, HTMX 524 handling, vite manifest hardening

Fixed Apr 17, 2026

Stabilise prod after 524 timeouts — dashboard throttling, HTMX 524 handling, vite manifest hardening

Fixed Apr 17, 2026

Stabilise prod after 524 timeouts — dashboard throttling, HTMX 524 handling, vite manifest hardening

Fixed Apr 17, 2026

Refresh expired ads access token in RunCronMetaAd

Fixed Apr 17, 2026

Refresh expired ads access token in RunCronMetaAd

Fixed Apr 17, 2026

Refresh expired ads access token in RunCronMetaAd

Fixed Apr 13, 2026

Correct FCPATH for launch pages — public/launch/ not launch/

Added Apr 13, 2026

Add launch funnel pages at /funnel/{slug} — static, no auth

Fixed Apr 11, 2026

Marketing site nav + footer — hardcode HD logos instead of DB settings (old logo path)

Fixed Apr 11, 2026

Login page — add visible logo above form, cache-bust auth.css, fix all auth pages

Fixed Apr 11, 2026

Login/signup pages now follow Kartivo brand guidelines

Added Apr 11, 2026

Replace ALL old logos/favicons with HD brand assets sitewide

Fixed Apr 11, 2026

Cache-bust on CSS background:url() for profile pics + app icons

Fixed Apr 11, 2026

Cache-bust on CSS background:url() for profile pics + app icons

Fixed Apr 11, 2026

Add cache-bust version to all brand asset URLs — forces browser to load updated HD images

Fixed Apr 11, 2026

Regenerate all social media assets using HD logos (2400px source instead of low-res originals)

Fixed Apr 11, 2026

Brand page — remove old low-res logos, keep only HD pack, update header to HD logo

Added Apr 11, 2026

Add Canva design templates to brand page — 24 social media designs (6 types x 4 options)

Added Apr 11, 2026

HD logo pack — SVG source + PNG at 2400px, favicons at all sizes

Added Apr 11, 2026

Rich social media covers — dashboard mockup, stats, feature pills, CTAs (not just logo on gradient)

Added Apr 11, 2026

Add collection gateway linking endpoints

Added Apr 11, 2026

Add collection gateway linking endpoints

Added Apr 11, 2026

Add collection gateway linking endpoints

Added Apr 11, 2026

Generate 19 social media assets + add to brand page

Fixed Apr 11, 2026

Brand page — remove Memdash logo-sm.png and logo-light.png, show only Kartivo assets

Fixed Apr 11, 2026

Brand page — add Kartivo logo to header, fix logo grid with all variants, remove Memdash fallbacks

Added Apr 11, 2026

Add /brand — public brand guidelines & design system reference page

Fixed Apr 11, 2026

Home hero text must be white — override global heading/paragraph color

Improved Apr 11, 2026

Parallelize Meta Graph API calls in spend analysis (60s → 3-5s)

Improved Apr 11, 2026

Add missing DB indexes for slow pages (Report Builder, Email Campaigns, Webhooks)

Fixed Apr 11, 2026

Update production-readiness test — fix false positive selectors, add resource error to ignore list

Added Apr 11, 2026

Phase 2E-4 — Alpine validatedForm component

Added Apr 11, 2026

Phase 2E-3 — HTMX dependent dropdown for collection payment gateways

Added Apr 11, 2026

Phase 2E-2 — auto-refresh KPIs every 30s + auto loading states

Added Apr 11, 2026

Phase 2E-1 — SSE live notifications for sales/refunds/disputes

Fixed Apr 11, 2026

Re-enable HTMX allowScriptTags — inline scripts must execute natively

Fixed Apr 11, 2026

Call ALL module inits on afterSwap — each has internal slug guard, no manual slug list needed

Fixed Apr 11, 2026

Dashboard1.js script tag had broken quotes — timestamp was outside src attribute

Fixed Apr 11, 2026

Page module scripts cannot be defer — inline view scripts depend on them

Fixed Apr 11, 2026

42/42 routes pass — zero JS errors

Fixed Apr 11, 2026

Stabilize — revert aggressive HTMX conversions, fix module init

Added Apr 11, 2026

HTMX server partials — dashboard KPIs + integration services

Added Apr 11, 2026

HTMX progress bar + global error toasts

Added Apr 11, 2026

Phase 2C continued — transaction page Alpine tabs + filters

Fixed Apr 11, 2026

X-collapse requires Alpine plugin — use x-transition instead

Added Apr 11, 2026

Phase 2C — jQuery→Alpine migration bridge + collection page

Fixed Apr 11, 2026

Load alpine-components.js BEFORE Alpine so stores exist on alpine:init

Fixed Apr 11, 2026

DataTable .every() not a function + let/const redeclaration in HTMX

Added Apr 10, 2026

Phase 2C — Alpine.js toast, confirm, formModal components

Fixed Apr 10, 2026

FCPATH points to project root not public/ — fix manifest path resolution

Added Apr 10, 2026

Phase 2A+2B — HTMX hx-boost + Alpine.js foundation

Added Apr 10, 2026

Terser build pipeline — 793KB → 436KB (45% reduction)

Fixed Apr 10, 2026

Member_purchase_plans JOIN pcud/gi must be LEFT JOIN for API-created records

Fixed Apr 10, 2026

CKEditor and Dropzone cannot be deferred — used synchronously after load

Fixed Apr 10, 2026

EmailReports login_id visibility must match BaseController (public)

Improved Apr 10, 2026

Defer non-critical scripts + fix DataTable destroy

Added Apr 10, 2026

V2 router — bulletproof widget lifecycle + universal module init

Fixed Apr 10, 2026

Remove double script execution — jQuery .html() already runs inline scripts

Fixed Apr 10, 2026

Echo renderSection content + remove legacy sidebar handler

Added Apr 10, 2026

Implement SPA navigation — AJAX content swap without full reload

Added Apr 10, 2026

Auto-sync refunds from Stripe webhooks

Added Apr 10, 2026

Auto-sync refunds from Stripe webhooks

Added Apr 10, 2026

Auto-sync refunds from Stripe webhooks

Fixed Apr 10, 2026

Disable Dropzone autoDiscover globally in footer right after library loads

Fixed Apr 10, 2026

Disable Dropzone autoDiscover globally in footer right after library loads

Fixed Apr 10, 2026

Disable Dropzone autoDiscover globally in footer right after library loads

Fixed Apr 10, 2026

Add SweetAlert2 + disable Dropzone autoDiscover

Fixed Apr 10, 2026

Add SweetAlert2 + disable Dropzone autoDiscover

Fixed Apr 10, 2026

Add SweetAlert2 + disable Dropzone autoDiscover

Fixed Apr 10, 2026

Fix Stripe credential lookup + sync all accounts

Fixed Apr 10, 2026

Fix Stripe credential lookup + sync all accounts

Fixed Apr 10, 2026

Fix Stripe credential lookup + sync all accounts

Fixed Apr 10, 2026

Show API-created subscriptions/transactions in dashboard

Fixed Apr 10, 2026

Show API-created subscriptions/transactions in dashboard

Fixed Apr 10, 2026

Show API-created subscriptions/transactions in dashboard

Fixed Apr 10, 2026

Extra_data must be valid JSON (CHECK constraint), transaction_type is product/collection flag

Fixed Apr 10, 2026

Extra_data must be valid JSON (CHECK constraint), transaction_type is product/collection flag

Fixed Apr 10, 2026

Extra_data must be valid JSON (CHECK constraint), transaction_type is product/collection flag

Fixed Apr 10, 2026

Fix POST /transactions and POST /subscriptions DB schema mismatches

Fixed Apr 10, 2026

Fix POST /transactions and POST /subscriptions DB schema mismatches

Fixed Apr 10, 2026

Fix POST /transactions and POST /subscriptions DB schema mismatches

Added Apr 10, 2026

Add missing endpoints, fix integrations filter, add route aliases

Added Apr 10, 2026

Add missing endpoints, fix integrations filter, add route aliases

Added Apr 10, 2026

Add missing endpoints, fix integrations filter, add route aliases

Fixed Apr 9, 2026

Use correct gateway table (wl_product_collection_users_data) for include=gateways

Fixed Apr 9, 2026

Use correct gateway table (wl_product_collection_users_data) for include=gateways

Fixed Apr 9, 2026

Use correct gateway table (wl_product_collection_users_data) for include=gateways

Added Apr 9, 2026

Enrich products, collections, customers, integrations endpoints

Added Apr 9, 2026

Enrich products, collections, customers, integrations endpoints

Added Apr 9, 2026

Enrich products, collections, customers, integrations endpoints

Fixed Apr 9, 2026

Enrich transactions list with classification, currency, gateway details

Fixed Apr 9, 2026

Enrich transactions list with classification, currency, gateway details

Fixed Apr 9, 2026

Enrich transactions list with classification, currency, gateway details

Added Apr 9, 2026

Add /refunds, /disputes, /chargebacks API endpoints + fix rate limits

Added Apr 9, 2026

Add /refunds, /disputes, /chargebacks API endpoints + fix rate limits

Added Apr 9, 2026

Add /refunds, /disputes, /chargebacks API endpoints + fix rate limits

Fixed Apr 9, 2026

Load global helper in API BaseController — fixes my_random() undefined

Fixed Apr 9, 2026

Load global helper in API BaseController — fixes my_random() undefined

Fixed Apr 9, 2026

Load global helper in API BaseController — fixes my_random() undefined

Fixed Apr 9, 2026

Correct Flaxxa WAPI endpoint names and payload format

Added Apr 8, 2026

Flaxxa WAPI, SMTP providers, auto-responder connectors, communication category

Added Apr 8, 2026

Sync 43 missing migrations from main to staging

Fixed Apr 8, 2026

Customer-details URL rename + resolveEmailFromMd5Hash + double-slash fix

Fixed Apr 8, 2026

Remove double slash in customer-details search URL

Fixed Apr 8, 2026

Update search bar + Filters/Dashboard to use /customer-details/ URL

Fixed Apr 8, 2026

Rename cutomer-details → customer-details URL (keep legacy route)

Fixed Apr 8, 2026

Add missing resolveEmailFromMd5Hash() to Dashboard controller

Fixed Apr 8, 2026

Add missing routes for customer details DataTable endpoints

Fixed Apr 8, 2026

Add missing routes for customer details DataTable endpoints

Fixed Apr 8, 2026

Customer details DataTable — MD5 hash resolution, SQL injection, SPA slug

Fixed Apr 8, 2026

Customer details DataTable — MD5 hash resolution, SQL injection, SPA slug

Security Apr 8, 2026

Full audit + 18 fixes on Email Campaigns module

Fixed Apr 8, 2026

API v1 audit — security, CORS, Stripe cancel, rate limit headers

Added Apr 7, 2026

Email Campaigns module, Teams simplification, API v1 expansion

Added Apr 7, 2026

Add Products CRUD to API v1

Added Apr 7, 2026

Add Products CRUD to API v1

Fixed Apr 7, 2026

Detect wl_team_member users at login — set team session vars

Fixed Apr 7, 2026

Detect wl_team_member users at login — set team session vars

Fixed Apr 7, 2026

Detect wl_team_member users at login — set team session vars

Fixed Apr 7, 2026

Restrict access_export to main account only — team users cannot export

Fixed Apr 7, 2026

Restrict access_export to main account only — team users cannot export

Fixed Apr 7, 2026

Restrict access_export to main account only — team users cannot export

Fixed Apr 7, 2026

Add access_export to pages_premissionCheck — export was blocked for all users

Fixed Apr 7, 2026

Add access_export to pages_premissionCheck — export was blocked for all users

Fixed Apr 7, 2026

Add access_export to pages_premissionCheck — export was blocked for all users

Fixed Apr 7, 2026

CustomPaymentLink — remove broken constructor, fix validator, add currency_id to clone

Fixed Apr 7, 2026

CustomPaymentLink — remove broken constructor, fix validator, add currency_id to clone

Fixed Apr 7, 2026

CustomPaymentLink — remove broken constructor, fix validator, add currency_id to clone

Added Apr 5, 2026

Meta CAPI server-side Purchase events + client-side pixel tracking

Added Apr 5, 2026

Meta CAPI server-side Purchase events + client-side pixel tracking

Added Apr 5, 2026

Meta CAPI + client-side pixel tracking (cherry-picked to main)

Added Apr 5, 2026

Meta CAPI server-side Purchase events + client-side pixel tracking

March 2026

Added Mar 28, 2026

Expand TemplateCategoryModel with slugs, sort_order, and published counts

Added Mar 28, 2026

SharedTemplateModel with lifecycle, scopes, and consumer compat query

Added Mar 28, 2026

Create shared_templates table + extend template_categories

Added Mar 27, 2026

Admin dashboard view — categories, featured, reviews, trending tabs

Added Mar 27, 2026

MarketplaceAdmin controller — categories, featured, reviews, trending

Added Mar 27, 2026

Add routes + admin sidebar for marketplace admin

Added Mar 27, 2026

Update marketplace + product views — filters, featured, reviews, badges

Added Mar 27, 2026

Enhance PublicAffiliate — categories, filters, reviews, badges, trending

Added Mar 27, 2026

Review section partial — rating summary, form, list

Added Mar 27, 2026

Filters sidebar partial — categories, price, rating, sort

Added Mar 27, 2026

Enhanced product card partial with ratings, badges, categories

Added Mar 27, 2026

Add marketplace event constants to EventCatalog

Added Mar 27, 2026

MarketplaceTrendingModel — trending score calculation

Added Mar 27, 2026

MarketplaceReviewModel — upsert, denorm, moderation

Added Mar 27, 2026

MarketplaceCategoryModel — tree, sync, counts

Added Mar 27, 2026

Seed 5 parent + 19 subcategories

Added Mar 27, 2026

Migration — 4 new tables + product columns for categories, reviews, trending

Improved Mar 27, 2026

Add drag handle indicator on component hover

Improved Mar 27, 2026

Add quick actions floating toolbar (move/duplicate/delete)

Improved Mar 27, 2026

Add selection breadcrumb bar showing component hierarchy

Improved Mar 27, 2026

Add progressive block rendering with Show More button

Improved Mar 27, 2026

Add block favorites with localStorage star toggle

Improved Mar 27, 2026

Add NEW badge on recently added blocks in builder

Added Mar 27, 2026

Form configuration module for builder — traits, webhook config dialog

Added Mar 27, 2026

Update BlockModel and controllers for subcategories and template blocks

Added Mar 27, 2026

Seed 53 production-quality funnel templates across 16 categories

Added Mar 27, 2026

Seed 23 block variants for top 10 categories

Added Mar 27, 2026

Seed 29 new blocks — forms, countdown, video, FAQ, pricing, social proof, nav

Fixed Mar 27, 2026

Return project_id from creation, fix template picker to update existing project

Added Mar 27, 2026

Enhanced template browser — categories sidebar, full preview, append mode, project creation picker

Added Mar 27, 2026

Publish success dialog with QR, block panel lazy loading and collapse

Added Mar 27, 2026

Auto-save, section duplication, responsive breakpoint editing

Added Mar 27, 2026

Inject published page scripts conditionally at publish time

Added Mar 27, 2026

Published page scripts — forms, countdown, pricing toggle, stats counter

Added Mar 27, 2026

Form submission routes, dashboard view, sidebar link

Fixed Mar 27, 2026

SSRF protection, XSS fix, DataTable pagination, form_id validation in FormController

Added Mar 27, 2026

Create FormController with submit, dashboard, webhook, CSV export

Added Mar 27, 2026

Create FormSubmissionModel and FormWebhookModel

Fixed Mar 27, 2026

Add category cleanup to Phase 2 migration down()

Added Mar 27, 2026

Phase 2 migration — blocks columns, form_submissions, form_webhooks tables

Fixed Mar 27, 2026

Add CSRF token support to apiFetch in utils.js

Added Mar 27, 2026

Migrate indexpage + secondpage views to templates/app with new routes

Added Mar 27, 2026

Consolidate 90+ routes into RESTful groups with backward compat redirects

Added Mar 27, 2026

Create TemplateController with admin-only category creation

Added Mar 27, 2026

Create PageSettingsController with ownership checks on all endpoints

Added Mar 27, 2026

Create PublishController with file upload validation

Added Mar 27, 2026

Create BuilderController with ownership checks on load/save

Added Mar 27, 2026

Create ProjectController and PageController with security fixes

Added Mar 27, 2026

Extract FunnelServerService from monolith controller

Added Mar 27, 2026

Create 9 CI4 models with validation and user-scoped queries

Added Mar 27, 2026

Add sort_order to pages, drop CSV page_ids, add indexes

Want These Features?

Start your free trial and experience every feature listed above — no credit card required.

Start Free Trial See All Features