Siren Affiliates – Affiliate & Partner Program Manager for WooCommerce

Changelog

3.4.1

  • fix(frontend): affiliate dashboard clipped behind portal sidebar — scope Tailwind disclosure trimming to Lite (bounty 645)
  • fix(lite): bind TermProvider in the free-tier loader

3.4.0

  • New: Starter recipes — browse a catalog of ready-made program setups, filtered to what works with your store, and launch a fully-configured program in a few clicks.
  • Fixed: Easy Digital Downloads 3.x — assigning a collaborator to a coupon works again.
  • Fixed: Ninja Forms integration labels now load from the plugin’s own translations.

3.3.0

  • fix(wp): register engagements admin page so conversion → engagement link resolves
  • fix(reporting): aggregate by type, apply date range, support comparison metrics
  • fix(reporting): update balance & earnings on internally-issued obligations
  • test(distributions): cover MarkAllocationObligationAsPending; chore(wp): remove dead /payouts mapping
  • fix(notes): record status transitions from internal flows, not just REST
  • fix(reporting): apply aggregation/date-range/comparison fixes to queryStandings
  • chore(screenshots): commit publish-to-auth pipeline + fix dashboard
  • fix(woocommerce): introduce TermProvider to eliminate get_the_terms crash
  • Add Plus and Pro tier packaging scaffolding
  • Add CollaboratorGroup primitive (slice A of cascade work)
  • Add CollaboratorGroup and calculation-type recipe support
  • fix(wporg): remediate round-4 review findings and harden the submission gate
  • Siren WordPress REST Update Method Compatibility
  • Radix Checkbox controlled/uncontrolled dev warning on forms with hydrated state
  • Integration-owned transaction source registration
  • WooCommerce: Collaborator dropdown empty on new product creation
  • Eliminate silent attribution failures: catch Error at REST/event boundary + fix transactionDetails NULL contract
  • Replace SafeMySQL with maintained PDO backend (mysql-integration 1.2.1)
  • feat(ninja-forms): add Ninja Forms integration
  • Run engagement/metric calc migration on 3.x upgrades (#555)

3.2.6

  • Maintenance and stability release.

3.2.5

  • fix(lite): unship over-stripped runtime files (WSOD + missing menu)

3.2.4

  • fix(collaborators): repair WC/EDD/LLMS/NC dropdown and consolidate JS
  • fix(lite): defer collaborator-program junction install

3.2.3

  • fix(ci): build blocks before packaging in compile-test-zip workflow
  • fix(recipes): make export schema-compliant
  • Harden demo routing against soft 404s
  • chore(deps): bump phpnomad/db to 2.2.0
  • ci(release): make release step idempotent + auto-bump version to tag

3.2.2

  • Maintenance and stability release.

3.2.1

  • fix: auto-run installer on version bump + ship compiled portal block

3.2.0

  • RecipeImportJobExecutor replaces RecipeImportTaskHandler
  • RepairJobExecutor — generic executor that looks up any registered RepairAction by subtype
  • RunDebugRepair switches from sync-inline to async-dispatch (returns 202 + jobId, 409 when a matching repair is already in flight)
  • DebugTab RepairDialog dispatches async, swaps to a polling view with queued/running/complete states
  • Old RecipeImportJob model/datastore/table/task/service/installer all deleted
  • programs — typed incentiveArgs, autoApprove, expirationDays, activeConversionTypes, lineItemFilters
  • distributors — distributionArgs/poolResolverArgs per-distributor (fixes parallel-importer clobbering), concrete schedule shape, engagementTypes, transactionCompilers, lineItemFilters
  • collaborators — new stanza with nested aliases (typed, with issuedDate for migration link continuity) and bindings (collaborator→program, collaborator→distributor)
  • mappings — generic four-field cross-system bridge
  • tracking / commerce — site-wide settings stanzas
  • Stripped license/update-checker residue from the lite zip; readme documents the frontend source/build path
  • Removed live superglobal usage from WordPress request handlers
  • Added nonce/capability checks to extension save flows
  • Stopped rewriting active_plugins
  • Fixed weak JS globals; cleaned up plugin path/url resolution
  • Switched docs fetching to a WordPress HTTP-backed transport
  • Added missing lite templates used by live listeners
  • SetupCollaboratorPortal enqueued the Vite-built portal bundle without type=”module”. 37 shared chunks + main entry all threw Cannot use import statement outside a module; the SPA stalled at “Loading…” forever. Filter added on script_loader_tag that marks every portal handle as a module at tag-render time. RegisterCollaboratorPortalBlock already did this for the editor-preview path; this brings the frontend portal enqueue path in line.
  • bin/seed-screenshot-data.php was writing to a non-existent totalCount column (actual column is count), silently dropping all activity data. Also fixes activity-type enum to match STRATEGY_TO_ACTIVITY_TYPE (site_visit, content_view, product_sale, form_submission, coupon_use) and seeds per-day periods so the last-6-months activity chart has a real time series.
  • Inline :root { –background/–foreground/–primary/–accent: …; } overrides generated from block attrs were attached to siren-collaborator-portal-inline and enqueued before the Vite-built Tailwind bundles. The bundles carry their own :root defaults, so they printed last and won the cascade — the editor preview updated but the public portal rendered stock colors. Moved override emission to after the bundle loop, attached via wp_add_inline_style() to the last bundle handle so our rule is last in source order.
  • Portal Branding inspector panel’s logo field was a TextControl asking for a pasted URL. Replaced with MediaUpload + MediaUploadCheck — WordPress’s native media modal, URL-based storage preserved for backward compat, thumbnail preview + Replace / Remove controls.
  • Block editor still shows “Your site doesn’t include support for the siren/collaborator-portal block” because the wp-scripts build/blocks/ output isn’t wired into bin/build.php or .github/workflows/release.yml. Release workflow runs frontend:build:all but never wp-scripts build, and the build script doesn’t relocate ./build/ into lib/LiteApplication/build/ where the path resolver expects it. Every essentials install will hit this in the block editor until it’s fixed. Not blocking 3.2.0 — block works at runtime, only the editor is affected.
  • job_schedules table + cron dispatcher for recurring jobs (telemetry, nightly prunes) — framework designed for it, not built.
  • Retention/cleanup of old job rows.
  • Unified “recent jobs” history pane on the Utilities tab (backend endpoint exists; no UI yet).

3.1.2

  • fix(transactions): stop double-subtracting coupon discounts on WC and EDD orders

3.1.1

  • fix(lite): unblock beacon recipe handoff for non-admin Siren users
  • fix(recipes): align plugin with website handoff contract + e2e coverage

3.1.0

  • fix: Prevent crash when selecting obligation checkboxes
  • refactor(api): normalize JSON responses at the chokepoint
  • refactor(rest): attach global interceptors per controller
  • Activate Notes system with event listeners, REST API, and activity timeline
  • chore(uat): commit UAT environment tree to source control
  • fix(notes): decouple extended resolvers from OrgDatastore; 500s on Essentials Activity
  • fix(notes): add Note to WordPress permission model list
  • Restore Woo ItemLogged logging and bump phpnomad minima
  • feat(notes): add automatic notes for collaborator program changes
  • fix: permanent delete fails due to FK constraints on junction tables
  • chore: sync plugin version headers to 3.0.1
  • fix(programs): stop legacy listener from overwriting engagementTypes format
  • fix(fulfillments): restore cents-to-dollars conversion
  • feat(notes): add activity notes for status changes
  • fix(notes): attach missing source linkages to activity notes
  • ci: gate workflows on ready-for-review + release tag push
  • feat(fields): declarative shape system for REST JSON output contracts
  • chore(wp-org): prepare plugin for wp.org resubmission
  • chore(wp-org): fix Plugin Check failures, wire Plugin Check into build
  • fix(updater): derive plugin basename via plugin_basename() so Essentials receives updates
  • fix(saas): guard Request::hasParam against scalar intermediate segments

3.0.1

  • Fix fulfillment screen displaying amounts in cents instead of dollars (#36)
  • Fix CREATE TABLE running before ALTER in InstallReportingService upgrade (#37)
  • License key activation now correctly reflects active status in UI (#33)
  • Fix broken “Get Your License Key” link in WordPress admin (#31)
  • Add Zod response adapters at API boundary, remove ghost engagement type (#32)
  • Refactor collaborator action event listeners to own junction binding (#38)
  • Set up PHPStan level 8 with CI integration (#34)

3.0.0

  • Maintenance and stability release.

Plugin Website
Visit website

Version:
3.4.1
Last Updated
July 3, 2026
Requires
WordPress 6.4
Tested Up To
WordPress 7.0
Requires PHP
8.2

Share Post

Join our newsletter.

Get insights into what’s happening at ChangelogWP right in your inbox. We don’t believe in spam.