server
2.8.0
Minor Changes
- a580774: Add
POST /v3/projects/:id/transfer, which moves a project to another organization after verifying the caller belongs to the target (via the Auth0 Management API, failing closed if it can't be verified).PATCH /v3/projects/:idis now rename-only —display_nameis required andorg_idis no longer accepted there, so the cross-organization move has a single authorized path. - 2ebb655: Add project-scoped scan schedules on
/v3/projects/:id/scheduleand a Schedule scan dialog on the Cookies page. Scheduled runs now keep the project UUID so they show up in project scan history.
Patch Changes
fecdc78: Drive the custom-site "Powered by Consent Pro" mark from the project's own config.
The mark was decided entirely by plan tier: the served script inlined
window.fs_consent_pro_attribution = truefor free-tier sites and nothing else ever set it, so a paid custom site never showed it and the app's "Hide Consent Pro logo" toggle changed nothing outside the in-app preview. Preview links were worse —applyStoredreassigns the global from the fetched payload, which never carriesattribution, so a preview dropped the mark even on the free tier.consentpro-types
ConsentProV2RuntimeConfigurationgainshideBranding, carried through to the sanitized client config.
server
projectConfigToRuntimemapsbanner_settings.hide_brandingonto it, so it ships with every publish and with the preview config.
consentpro-v2
- Custom sites resolve
showAttributionfrom that config, defaulting to showing the mark. The free tier's license-derived global still wins, so a free site cannot switch it off.
8384efa: Show a placeholder overlay on iframes blocked for want of consent on custom (non-Webflow) sites.
Custom sites have no pasted
fs-consent-element="placeholder"markup, so a blocked embed simply lost itssrcand rendered as a blank box. The overlay now ships as a web component thatcore/v2swaps into the blocked iframe itself.web-components
- New
<consentpro-placeholder>custom element, built as its ownplaceholder.jsCDN bundle. Like every other component in this package, its props are plain JS properties observed as no attribute, and its buttons dispatch bubbling, composedconsentpro:open-preferences/consentpro:allowevents.
consentpro-dictionary
getConsentCopyreturns aplaceholderblock (message,preferencesText,acceptAllText), so the overlay is localized like every other component.
server
GET /v2/cdn/web-components/placeholder.jsserves the new bundle, andcopy.jsoncarries theplaceholderstrings.
consentpro-v2
new/custom-site/placeholder.tsbuilds the blocked iframe's document as a string, which the existing blob path swaps into the iframe'ssrc. It is self-contained: the CDN module that registers the element, plus the script that waits for that registration, creates the element and assigns the copy as JS properties. No markup is parsed, mutated or serialized on the way, and the copy is escaped into the script rather than interpolated into HTML.- That script tag is pinned with the build-time
sha384hash, soplaceholder.jsis now SRI-checked like the other component bundles. - Blocked iframes wire the overlay's events through
custom-site/events.ts: the document is a same-originblob:, so the component'sconsentpro:*events reach the consent-state layer directly. - A blocked iframe's own
sandboxis stashed and dropped while the placeholder is shown, then restored verbatim before the original URL loads again. It applies to the untrusted embed, not to our placeholder, and withoutallow-scriptsit kept the overlay from ever rendering. iframe-blockednow fires once per blocked iframe, carrying the embed's URL. Re-rendering a placeholder whose copy arrived late no longer emits a second event whosesrchad already been replaced.
- New
d3e426d: Link the custom-site banner to the project's own privacy policy, or show no link at all.
The custom-platform banner always rendered a dead
<a href="#">Privacy Policy</a>: the project's privacy-policy URL never reached the runtime.consentpro-dictionary
getConsentCopyreturnsmessageHtmlWithoutPrivacyLinkalongsidemessageHtml— the same message with the whole privacy sentence removed, cut from the tokenized template so every locale ends on its own sentence terminator.messageHtmlis unchanged.
server / consentpro-types
privacy_page_urlmaps tolegal.privacyPolicyUrl, andsanitizeConfigForClientpublishes that one field.cookiePolicyUrlandcontactEmailstay server-side.
consentpro-v2
- The custom-site banner points the anchor at the configured URL (normalized through
new URL()and restricted to http(s), opened in a new tab), and drops the privacy sentence when no URL is configured.
28b754d: Stop putting the account email address in Finsweet Accounts navigation URLs. The Designer extension now links out with a short-lived opaque account reference, which the Consent Pro server resolves before redirecting. The destination journey is unchanged.
d7331e4: Style the preferences toggle and the dialog backdrop from the web app.
web-app
- The Open preferences colours card now carries Toggle Inactive Track, Toggle Active Track (the former "Preferences Checkbox"), Toggle Circular Handle and Preferences Overlay. Left on their defaults the columns stay
null, so an existing banner looks exactly as before. ColorFieldtakes analphaprop: an opacity track under the hue slider, a checkerboard behind every swatch, and a hex field that accepts#rrggbbaa. Only the overlay opts in — a colour that paints a surface has nothing to be translucent over.- The overlay starts at no backdrop (
#00000000). Choosing a colour on a transparent field lands at 20% opacity rather than staying invisible; the opacity track can still take it back to nothing.
web-components
ConsentPreferencesDialog's backdrop default drops from 10% black totransparent: a dialog washes the page only where a site asks for it. The backdrop box is unchanged otherwise, so click-to-close still works, and any site setting--consentpro-color-overlayis unaffected.
server / consentpro-types
checkbox_inactive_color,checkbox_handle_colorandpreferences_overlay_colorare read, validated and saved onbanner_settingsandbanner_instances, and published ascheckboxInactive,checkboxHandleandpreferencesOverlay. The overlay column validates#rrggbbor#rrggbbaa; the rest stay six digits.
consentpro-v2
- Maps those to
--consentpro-color-toggle-off,--consentpro-color-toggle-thumband--consentpro-color-overlay. The handle keeps whatever colour is picked in both switch states — nothing recolours it from the track any more.
- The Open preferences colours card now carries Toggle Inactive Track, Toggle Active Track (the former "Preferences Checkbox"), Toggle Circular Handle and Preferences Overlay. Left on their defaults the columns stay
29c6284: Authorize preview config with a server-side secret.
POST /v3/projects/:id/debugger-tokensigned withDEBUGGER_TOKEN_SECRET, a hardcoded constant that ships inside the Designer extension bundle. That was fine while its only job was opening the debugger widget, but the preview branch ofGET /v3/cdn/config/:siteId.json— which serves a project's latest saved config, banner copy and full tracker inventory included — made it forgeable authorization for any site id, and site ids are public markup.- The minted token now carries a
proofclaim: a second JWT signed withPREVIEW_TOKEN_SECRET, a Worker secret, withiss/audset. The preview route verifies that proof alone — signature,exp,iss,aud, claim shape — and reads site and platform from it, never from the enclosing token. - The enclosing token is unchanged: same key, same claims, same
exp.GET /v2/cdn/libraries/debugger.jsand the Webflow extension's own token minting are untouched, so the widget behaves exactly as before. - Set
PREVIEW_TOKEN_SECRETin every environment (wrangler secret put PREVIEW_TOKEN_SECRET). Without it, minting logs an error and returns a widget-only token; preview links then fall through to the published config instead of showing unpublished work.
- The minted token now carries a
7119b2e: Fix reconnecting a disconnected Webflow site returning 500 forever.
server
POST /v3/projectslooked up the site withgetProjectBySiteId, which hides soft-deleted rows, then inserted.idx_projects_site_id_platformis not partial, so the disconnected row still owned the site and every reconnect died on the unique index — leaving the site permanently unconnectable. It now revives that row (matchingensureProject's behaviour on the Webflow authorize path) and returnsstate: 'created'. A disconnected project belonging to another org answers409instead, so its configuration and consent history are never handed over.POST /v3/projects/:id/migrate-sitehad the same blind spot in its pre-flight guard: a soft-deleted project on the target site slipped past the check and theUPDATEthen hit the index. It now answers409with a message pointing at the disconnected project.generateCustomSiteIdcounted only live projects when checking a candidate id for collisions, so a hit against a deleted custom project would 500 on insert.
3b84208: Make a refused scan readable in the Webflow Designer extension.
server
The robots.txt pre-flight on
POST /v2/scanner/scananswers 503/403 with a body carrying onlyerror, but the shipped Designer extension's axios interceptor readsmessage. Site owners sawRequest failed with status code 403instead of the reason. Both refusals now go throughscanRefusalBody, which keepserroras the HTML the web app renders and adds a tag-strippedmessagefor the extension's text-only toast. The template copy is unchanged, and the addition is purely additive, so it reaches the installed extension without a Marketplace release.87e5bcd: Scope domain writes to the owning project so one organization can no longer reassign or delete another's domain row.
server
domains.domainis no longer a global unique index. Two organizations may each connect the same hostname and each gets its own row (migration0042_domains_per_project_unique); uniqueness is now per project over active rows, and same-org duplicates are still refused with a 409 bydescribeOrgDomainConflict.insertProductionDomainno longer upserts on the hostname — it reuses the calling project's own row (reviving it when it was disconnected) or inserts a new one.POST /v3/projects/:id/domainsand custom-project creation therefore leave other orgs' rows untouched.updateDomainRecordno longer hard-deletes the row clashing on the new hostname; the rename is keyed by domain id and scoped to the project, soPATCH /v3/projects/:id/domains/:domainIdcan only ever touch the caller's own row.setProjectStagingDomainlikewise only touches the project's own rows.- Webflow domain sync now flags
connectedElsewhereonly for a sibling project in the same organization — a hostname another org holds is synced normally instead of being skipped.
cbdf40c: Add
POST /v3/consents— the public consent ingest for the runtime SDK.server
- New public route
POST /v3/consents(mounted before auth, rate limited). Same payload asPOST /v2/consentsso the core runtime can switch by URL alone; it stores to the R2 data catalog, writes the analytics-engine event, and forwards to the site'scustom_endpoint. - Consent ingestion is uncapped on every plan tier. Free-tier users test through Preview rather than a metered live banner, so no per-plan consent allowance is enforced and
GET /v3/projects/:id/subscriptionreports the license only.
- New public route
Updated dependencies [fecdc78]
Updated dependencies [9a490af]
Updated dependencies [fecdc78]
Updated dependencies [8384efa]
Updated dependencies [d3e426d]
Updated dependencies [a580774]
Updated dependencies [d7331e4]
Updated dependencies [2ebb655]
- consentpro-types@1.3.0
- consentpro-utils@2.1.1
- consentpro-dictionary@0.1.6
- consentpro-templates@0.0.2
2.7.0
Minor Changes
- 9090632: Publish the registrable root domain alongside subdomain hostnames, so a site on
marketing.example.comthat is reverse-proxied behindexample.comresolves a config on the parent domain. Roots that are public suffixes (site.webflow.io,app.pages.dev) andwww.hosts are skipped.
Patch Changes
6757be6: Honor a GPC signal that post-dates a visitor's stored consent.
Previously the GPC signal only decided the defaults, so a visitor who consented first and enabled GPC afterwards kept their old consent indefinitely — while the banner still claimed the signal had been honored. The signal is now treated as a live opt-out request that wins over consent saved before it arrived, and a consent given knowingly after the signal was honored wins in turn (CCPA § 7025(c)(3)). The most recent expression of the visitor's preference governs.
consentpro-v2
- The consent cookie gains
gpcHonoredAt: when the runtime first observed the signal that was still active as of that write. It is stamped on every write made while the signal is present and cleared on writes made while it is absent, which is what distinguishes consent given before the signal from consent given knowingly after it. Browsers expose no "enabled at" timestamp, so this is the only recency information available. - On page load, a stored consent that still grants a non-essential category and predates the signal is revoked before blocking, trackers and analytics initialize — so no tracker ever sees the stale consent, and cookies set under the revoked categories are cleaned up on the same load. A consent record is written with
action: 'reject_all'andsource: 'gpc', and is never collapsed into a consent the visitor gives in the second that follows: a processed opt-out request is a compliance event in its own right, not an intermediate state. - The revocation runs only on pages the resolved instance is configured for. On an excluded page nothing can block a tracker or clean up a cookie, so recording an opt-out there would claim an enforcement that never happened; the stored consent is left untouched until the visitor reaches a managed page.
- Consent records now carry the id, action and source captured when the write happened, instead of reading them from the stores when the debounced request fires. Previously any two writes inside a second could hand the first record the second one's attribution.
- The banner is re-shown once on the page load where a category was actually revoked, so the visitor is told their saved preferences changed and gets the chance to consent knowingly instead.
fs-consent-gpcnow reflects whether the signal is being processed, not merely present, and updates live: it flips to"false"the moment a visitor accepts while a signal is active, hiding[fs-consent-element="gpc-honored"]rather than leaving a claim in place that is no longer true. This matters for § 7025(c)(6), which as of 1 January 2026 requires displaying whether the signal was processed.- Scope is unchanged: only Opt-Out and Do Not Sell instances. Opt-In consent is never revoked, and
fs-consent-gpcstays"false"on those instances: the attribute now tracks the same condition the behavior does, so it never claims a signal was processed where nothing acts on one. - A stored consent whose
gpcHonoredAtequals its owntimestampcounts as a knowing override rather than a consent the signal outranks. The two can only match when they were written together, which a consent predating the signal never is — and a custom integration writing the cookie by hand can land both in the same millisecond. FinsweetConsentPro.consents.set()now stampsaction: 'submit'andsource: 'api', like every other write path. Previously it inherited whatever wrote the consent before it, which with GPC in play would have recorded a site's own API call as a GPC-driven opt-out. It also means API-driven consent is recorded at all, where before the missing action caused the record to be dropped.
Existing GPC visitors who had granted consent are opted out once, on their next page view, and see the banner that one time.
documentation
developer/custom-integration.mddocumentsgpcHonoredAtand shows how to carry it forward when writing the cookie by hand. A custom integration that omits the stamp while a signal is active writes a consent that Consent Pro cannot distinguish from one given before the signal, and revokes on the visitor's next Webflow page view.
consentpro-types / server
ConsentSourceandConsentRecordSchema.sourceaccept'gpc'. The consents endpoint validates against that enum, so without this the GPC records would be rejected and silently dropped.
- The consent cookie gains
Updated dependencies [6757be6]
- consentpro-types@1.2.1
- consentpro-dictionary@0.1.5
- consentpro-utils@2.1.0
2.6.0
Minor Changes
4a1df08: Run v2 scans inside a Cloudflare Workflow so large sites finish instead of being killed by the queue consumer's wall-time limit. Each scan is one Workflow instance keyed by its tracking ID, reusing a single Browser Run session across sequential 40-page batches and checkpointing every batch to R2 under
scan-jobs/{trackingId}/. A batch whose checkpoint already exists is skipped on retry, so a scan resumes rather than restarting. Failed steps retry natively.The queue now only dispatches: it creates the Workflow instance and acks after a successful create, so a redelivery cannot start a second instance and a dispatch that never succeeds lands in the dead-letter queue, where the scan is marked failed. Cancellation transitions the D1 row and clears the temporary R2 objects, and the Workflow stops at its next step boundary. A stale-scan reaper on the existing five-minute cron fails any queued or running scan whose row has not been touched for an hour, so a scan can no longer strand its origin.
Adds
/v2/scanner/adminfor internal operations: start a scan against a site (POST /scan), inspect the D1 row plus Workflow instance status (GET /scan/:trackingId), and cancel (DELETE /scan/:trackingId). These run the normalmanualscan lifecycle, including timeline events and the Designer result slot, and send no completion email. This replaces the scan routes previously exposed on the non-production/testendpoint.The result format, public API and Designer UI are unchanged.
Deployment requires two things. The new
SCAN_WORKFLOWbinding is created bywrangler deploy. TheSCANNER_INTERNAL_TOKENsecret must be set for each environment, sent as theX-Scanner-Admin-Secretheader; until it is,/v2/scanner/adminfails closed with a 503 and the rest of the scanner is unaffected.
Patch Changes
4a2d1af: chore(deps): clear the
pnpm auditbacklogpnpm auditwent from 17 findings (5 high, 10 moderate, 2 low) to 0 unignored.Direct dependency updates:
server: hono 4.12.34 → 4.13.7, covering three advisories: unbounded dot-notation nesting inparseBody(), query parameters read after the URL fragment, and the incompletetoSSG()fix for CVE-2026-39408- root,
app,server: vitest 4.1.0 → 4.1.11, for the@vitest/mockerpath traversal
Transitive pins added via
pnpm.overrides:@ai-sdk/provider-utils→ 4.0.51 (uncontrolled resource consumption, via@ai-sdk/openai)@vitest/mocker→ 4.1.11csv-parse→ 7.0.2 (prototype replacement viacolumns, via@finsweet/webflow-apps-utils)fflate→ 0.4.9 (infinite loop inunzipSyncon malformed input, viaposthog-js)qs→ 6.16.0 (array-limit bypass and attacker-controlledisBufferDoS, viawebflow-api)
Existing overrides refreshed, because the versions they pinned were themselves flagged since they were added:
js-yaml3.15.1 → 3.15.2 and 4.3.1 → 4.3.2sharp0.35.3 → 0.35.4 (libheif vulnerabilities, viawrangler→miniflare)
Two advisories are added to
pnpm.auditConfig.ignoreCvesbecause no fixed release exists upstream yet. Both are archive-extraction symlink traversals reachable only from build and browser-download tooling, not from any runtime request path:- CVE-2026-19693,
extract-zip<=2.0.1 via@cloudflare/puppeteer→@puppeteer/browsers - CVE-2026-76845,
adm-zip<=0.6.0 via@webflow/webflow-cli→@module-federation/dts-plugin
Both should be removed from the ignore list once upstream ships a fix.
2.5.1
Patch Changes
- Updated dependencies [f528b4f]
- consentpro-dictionary@0.1.4
- consentpro-utils@2.1.0
2.5.0
Minor Changes
55656ae: Add optional public hostname and path prefix so reverse-proxied sites publish a hostname.json for the visitor host and expose the site information the runtime uses to compose public URLs.
The Webflow domain is unchanged. Custom-domain sites publish
publicHostnameand, when mounted under a prefix,pathPrefix. The runtime composes these with locale subdirectories and page slugs. Sites without these settings are unaffected.
Patch Changes
- 55656ae: Keep CMS and locale page dedupe working on reverse-proxied scans by ignoring the mount prefix when grouping and ranking URLs.
- 4afc228: Remove the dictionary-matched-review confirmation step. Trackers matched against our verified database now publish immediately without requiring manual confirmation, reducing steps to live. The "Confirm matched trackers from our verified database" action item group is removed from the UI, and any pre-existing resolved/unresolved rows of this type stop being surfaced.
- Updated dependencies [55656ae]
- Updated dependencies [4afc228]
- consentpro-utils@2.1.0
- consentpro-types@1.2.0
- consentpro-dictionary@0.1.3
2.4.1
Patch Changes
03bd744: chore(deps): resolve open Dependabot PRs and clear the
pnpm auditbacklogDirect dependency updates:
app: axios 1.16.0 → 1.18.0, posthog-js 1.336.1 → 1.417.0consentpro-v1: nanoid 5.1.6 → 5.1.16, esbuild 0.27.3 → 0.28.1consentpro-v2: esbuild 0.27.3 → 0.28.1server: hono 4.12.21 → 4.12.34consentpro-debugger: vite 7.3.2 → 7.3.6
Transitive advisories are pinned to patched versions via
pnpm.overrides(tar, undici, brace-expansion, js-yaml, protobufjs, fast-uri, ip-address, postcss, nanoid, form-data, ws, adm-zip, shell-quote, sharp, dompurify, esbuild), takingpnpm auditfrom 89 findings (1 critical, 41 high, 35 moderate, 12 low) to 0.The posthog-js bump also removes the
@opentelemetry/*andprotobufjssubtrees, which were never reachable from the shipped extension bundle. Telemetry configuration is unchanged and the pinneddefaults: '2025-05-24'still applies, so capture behaviour is identical.Two advisories have no published fix and are recorded in
pnpm.auditConfig.ignoreCvesrather than resolved — CVE-2026-56876 (extract-zip, via@cloudflare/puppeteer) and CVE-2025-14505 (elliptic, via@webflow/webflow-cli). Neither is reachable from a shipped artifact.
2.4.0
Minor Changes
- a3670d2: Add
POST /v2/marketing/beta-testers, a public endpoint for the marketing site's beta tester sign-up form. Accepts anemailform value (JSON or form-encoded) and uses the Brevo SDK to create a contact, or add an existing contact to list ID 37, on Brevo.
Patch Changes
- 4d7fcb3: feat: add StackAdapt to known providers; add StackAdapt tracking pattern to tracker collapse patterns
- Updated dependencies [4d7fcb3]
- consentpro-dictionary@0.1.2
- consentpro-utils@2.0.3
2.3.1
Patch Changes
- e40ba4b: fix: clear scan error state in loadScanResultsForScan; ensure scan error is cleared in Manager.svelte
2.3.0
Minor Changes
- ab66bf0: Add a
/v2/checkoutmiddleman redirect endpoint so the Finsweet Accounts checkout, which lives on a different domain, can still receive the Google Ads click cookies (_gcl_aw/_gcl_au) for attribution. The app now routes the "upgrade plan" flow through this endpoint instead of linking to Finsweet Accounts directly.
Patch Changes
3ea0afe: Ensure a project record per site, and dual-write core config to D1.
server
- New
services/v2/projects:ensureProject,getProjectUuidBySiteId,linkSiteAuthorizationProject. Project creation is idempotent and race-safe, and revives a soft-deleted project on re-authorization. - The Webflow OAuth callback creates the project and stamps it onto the site authorization on first authorization. Failures are logged and never block authorization.
- Temporary R2 → D1 dual-write (
configurator/temporary-d1-mirror):saveCoreConfigand site migration mirror the core runtime config intoproject_configs,webflow_project_configs,banner_instances,config_providersandconfig_trackers. R2 stays the source of truth and the mirror soft-fails, so a D1 error can never fail a publish. Sites only begin mirroring once they have a project row, so existing sites stay unmirrored until they re-authorize. project_uuidis stamped on scans, scan schedules, action item resolutions, policy profiles and policy documents, without overwriting a value that is already set.- Schema:
project_uuidforeign keys move fromON DELETE set nulltoON DELETE cascade, andproject_configsgainslocales. - Migrations
0038(addsproject_configs.locales) and0039(the foreign key change).0039is hand-written rather than drizzle-generated: the generated table rebuild issuesDROP TABLE, which on D1 fires the pre-existingpolicy_documents→policy_profilescascade and empties the table, because D1 runs each migration inside a transaction wherePRAGMA foreign_keys=OFFis silently ignored. It usesALTER TABLE DROP COLUMN/ADD COLUMNinstead, so no table is ever dropped. Side effect:project_uuidbecomes the last column on the six affected tables.
consentpro-v2
- The consent cookie is now always written with
sameSite: 'lax', andsecureis derived fromlocation.protocolinstead of configuration.storage.sameSiteandstorage.secureare no longer read by the v2 runtime.
consentpro-types
ConsentV2TrackerDefinitiongains an optionalnameforcookietrackers and an optionalkeyforlocal-storage/session-storagetrackers.
- New
Updated dependencies [3ea0afe]
- consentpro-types@1.1.5
- consentpro-dictionary@0.1.1
- consentpro-utils@2.0.3
2.2.1
Patch Changes
81c0689: Harden Webflow Designer authentication, site isolation, and administrator permissions while reducing duplicate app boot work.
7fa86ff: chore: add rate limits to the consents endpoint
81c0689: Never render a blank email greeting, and share recipient resolution between the server and jobs workers via
consentpro-utils/email. An organization member with an email but no profile name previously resolved to an emptyuserName, so notification templates renderedHi ,; the greeting now falls back toHi there.0da8c08: legacy compat: make site id optional in /history route
7af655c: chore: remove
tldts-icannin favor of maintldtsa468690: - scan pages max 2000, added a ordering and prioritizing
- fix to prevent scanner triggering consents records actions, so that it uses the mode override param natively instead of calling the API during scanner
- allow redirects to same domain/subdomain only
3fb6710: UX improvements: regions, banners, and action items.
- "EU Countries & UK" uses Cloudflare’s EU list (+ UK): https://developers.cloudflare.com/ruleset-engine/rules-language/fields/reference/ip.src.is_in_european_union/
- Create Banner: legislation and country/state filters for recommended banner types
- Simplify Action items experience for the users
- Domain management bar; chat-with-expert entry points; remove PMF survey
81c0689: Remove site-level notification recipient lists. Scheduled scans again use a per-schedule email, and transactional emails (exports, proofs, scan updates) go to the signed-in session email.
27d6762: add site id param to scanner history endpoint
48c86f8: hotfix: send a license request when debugger is loaded
6bdd208: fix: remove proxy use plain fetch and attach scanner headers
6bdd208: allow legacy param when reading debugger with ?consentpro-debugger=true
Updated dependencies [a0173e0]
Updated dependencies [81c0689]
Updated dependencies [3fb6710]
Updated dependencies [81c0689]
Updated dependencies [9d4c732]
- consentpro-dictionary@0.1.0
- consentpro-utils@2.0.3
- consentpro-types@1.1.4
2.2.0
Minor Changes
- f64321d: Detect modern Wistia embeds and attach their scripts and iframes to the existing Wistia tracker, even when the player has not written storage yet.
2.1.1
Patch Changes
- 1008b0b: feat: add proxy access control logic in proxy-access module; implement shared proxy handler for v1 and v2; update proxy routes to use new handler; remove proxy-guard module; update tests for proxy access and handler
- caebb9b: Move core activation analytics off the Designer extension onto authenticated server routes so events use a reliable Auth0 sub as distinct_id.
- 2487ddd: feat: report image trackers and cookie attribution
- 4db7273: update scan schedule to always use the correct config url stored
- Updated dependencies [cb1d15a]
- Updated dependencies [2487ddd]
- consentpro-utils@2.0.2
- consentpro-types@1.1.3
- consentpro-dictionary@0.0.11
2.1.0
Minor Changes
- 83dc872: feat: public proxy security
- f4ab509: feat: debugger auth
- 4435f7e: feat: same-origin library imports
Patch Changes
494b74c: feat: add ClickUp provider to known providers; add SPLITIO collapse patterns tests for ClickUp trackers
73a3472: improve attribution of resources to storage
5407450: fix cookie declaration hydration
4fe563b: Ensure all requests to sites we are crawling or checking includes streamlined UA and custom header for Consent Pro
e46032c: fix: Polish policy status transitions
- Regenerating a policy now clears the persisted
last_status, so policies that previously showed the Not Found status correctly transition back to Ready to Publish / Published once the element is re-injected onto the canvas. - Clicking Save as Draft on an already-generated policy (e.g. one with status Ready to Publish) now reverts the document to Draft state by clearing
generated_atandlast_status. - Policies flagged as Not Found are now automatically re-verified against the canvas when the Policies view loads. If the user restored a deleted element outside the view (e.g. via Webflow's undo), the status resets to the resolved value (Ready to Publish / Published / Update Needed) without requiring manual action.
- Regenerating a policy now clears the persisted
fa75381: Enhance policy generator
Updated dependencies [494b74c]
Updated dependencies [73a3472]
Updated dependencies [5407450]
Updated dependencies [e46032c]
- consentpro-dictionary@0.0.10
- consentpro-types@1.1.2
- consentpro-utils@2.0.1
2.0.14
Patch Changes
- e5d2aad: fix: Whitelist numeric storage keys to stop Shopyflow product caches from being flagged as trackers
- Updated dependencies [e5d2aad]
- consentpro-dictionary@0.0.9
- consentpro-utils@2.0.1
2.0.13
Patch Changes
- 353af98: feat: Implement tracker collapse functionality for improved analytics
- Updated dependencies [353af98]
- consentpro-dictionary@0.0.8
- consentpro-utils@2.0.1
2.0.12
Patch Changes
- ded7f80: update namings in usages of
consent-pro-**toconsentpro-** - 73aa49f: feat: consent pro debugger
- Updated dependencies [ded7f80]
- Updated dependencies [73aa49f]
- consentpro-dictionary@0.0.7
- consentpro-utils@2.0.1
2.0.11
Patch Changes
- 74e897d: Fix scan completion email reporting incorrect tracker count
2.0.10
Patch Changes
- 2ad5e11: chore: update dependencies
- d9f8276: fix: filter out locales first before deduplicating pages
2.0.9
Patch Changes
- 9f6dfc2: chore: cleanup logs to remove unnecessary console messages during scan
2.0.8
Patch Changes
- 7d6d5f7: chore: Enhance provider merging logic to preserve user-edited metadata
2.0.7
Patch Changes
- ef22755: chore: preserve manually added trackers
- 9cf51bd: chore: update server tests to ensure they are all passing
- Updated dependencies [ef22755]
- Updated dependencies [9cf51bd]
- consentpro-utils@2.0.1
- consentpro-dictionary@0.0.6
2.0.6
Patch Changes
- 6b1e9c9: update scanner publish flow to filter out deleted trackers from published config
2.0.5
Patch Changes
- 1a79dde: whitelist _cfuvid tracker and add
languagetoConsentProV2InstanceSettings - 9f95405: fix: make GPC flexible to anyone with GPC enabled, not just specific regions
- Updated dependencies [1a79dde]
- consentpro-dictionary@0.0.5
- consentpro-types@1.1.1
- consentpro-utils@2.0.0
2.0.4
Patch Changes
- 1a79dde: whitelist _cfuvid tracker
- Updated dependencies [1a79dde]
- consentpro-dictionary@0.0.4
- consentpro-utils@2.0.0
2.0.3
Patch Changes
- e199683: Fix: publish finsweet.com config for reverse-proxied Finsweet sites
2.0.2
Patch Changes
- 3436761: reduce scanner page concurrency from 5 to 3 and clear homepage HTML from page results after extraction to reduce memory pressure during large site
- Updated dependencies [6509630]
- consentpro-types@1.1.0
- consentpro-dictionary@0.0.3
- consentpro-utils@2.0.0
2.0.1
Patch Changes
- 683eeb0: chore: Update dependencies to latest versions across all packages and fix pnpm audit issues
2.0.0
Major Changes
- e9bd587: NEW: Consent Pro V2 with Geolocation, Improved GTM handling and Instances Support
Minor Changes
- c008017: feat: send configuration_published events
Patch Changes
- 2b400f7: feat: add SCAN_SCHEDULE_NOTIFICATION email template ID
- 9ac2bf8: fix: skip webhooks when not v2
- 8ded22e: chore: fire runtime loaded events for v1 as well
- 6029a6c: Update display time for scan schedule to be based on user timezone
- 5396021: Improved scan schedule feature plus posthog exeption tracking for schedule failures
- 2b400f7: Update scan schedule UI experience, introduce an email recipient field
- 5b5fdd7: fix: sanitize published configs correctly
- c008017: chore: register PostHog events as Consent Pro for better segmentation
- f083ccd: improvement: no longer store provider & tracker metadata in each consent log
- c008017: chore: refactor PostHog events sending
- 6029a6c: chore: add support for scheduling scans on a specific date
- Updated dependencies [e9bd587]
- Updated dependencies [6029a6c]
- Updated dependencies [2b400f7]
- Updated dependencies [5b5fdd7]
- consentpro-types@1.0.0
- consentpro-utils@2.0.0
- consentpro-dictionary@0.0.2
- @consentpro/permissions@0.0.1
1.0.13
Patch Changes
- 05189c5: fix: update handling for domains list in a project
1.0.12
Patch Changes
- e2c5edf: feat: enhance config publishing with updated custom metadata and improve latest config retrieval logic
1.0.11
Patch Changes
- c89966b: chore: global banner updates and animation library
1.0.10
Patch Changes
- 8a9a493: add feature to support externally hosted banners and global banners with CSS imports
1.0.9
Patch Changes
- a37ec60: chore: update consent pro api to support legacy components api for cookie consent targets
1.0.8
Patch Changes
- 28a6a2d: Cleanup an update release runtime branch name
1.0.7
Patch Changes
- 4804467: feat: update consent pro for new migration
1.0.6
Patch Changes
- 077f9a4: cleanup console message
1.0.5
Patch Changes
- aa8257a: chore: update release sync branches ci with a release-runtime-v** naming strategy
1.0.4
Patch Changes
- b5be59c: chore: update release
1.0.3
Patch Changes
- 1b689fc: chore: update release pipeline for branch auto sync
1.0.2
Patch Changes
- c20f5c9: chore: improve legacy config management and handling
1.0.1
Patch Changes
- 3152bd4: chore: update webflow hooks, configurator handling and runtime scripts
1.0.0
Major Changes
- 5b7551a: initial setup for consent pro and migration of cc into consent pro
Patch Changes
- 65a0083: update consent pro and include whitelist feature
1.0.0
Major Changes
- a7345fa: Initialize Consent Pro
Patch Changes
- 7ac1289: add tests