{
  "slug": "bw-lead-ai",
  "name": "BW Lead Attribution Intelligence",
  "version": "1.8.5",
  "download_url": "https://plugins.bowden.works/wp-content/uploads/plugin-updates/bw-lead-ai-1.8.5.zip",
  "download_hash": "sha256:395ac22c3db50f8671c86846d5c4090cca3f564eed9abac866bca443d1e92ad3",
  "download_size": 518731,
  "requires": "6.0",
  "tested": "",
  "requires_php": "7.4",
  "last_updated": "2026-08-12",
  "homepage": "https://plugins.bowden.works/bw-lead-ai/",
  "author": "Bowden Works",
  "description": "Capture traffic source, attribute it to every lead, and understand where your leads are coming from.",
  "changelog": "## [1.8.5] - 2026-08-12\n\n### Fixed\n- **Last-click credit no longer drifts onto a visit that happened after the\n  enquiry.** A journey used to stop the moment someone enquired, so \"the last\n  thing that brought them here\" and \"the last thing that brought them here\n  before they enquired\" were the same sentence. Now that a journey can carry on\n  recording afterwards, they are not: someone who enquired off a social post and\n  came back a fortnight later through a paid ad handed that ad the credit for an\n  enquiry it played no part in. **Paid channels are the ones that collect credit\n  this way**, because a returning visitor tends to come back through an ad — so\n  the effect is not random, it flatters exactly the channels this plugin exists\n  to keep honest. And the better the journey beacon works, the worse it got.\n\n  Every enquiry is now recorded with the channel, source, medium and campaign as\n  they stood **at that moment**, and that is what the reports credit. Anything\n  the visitor does afterwards is still recorded and still shown on their\n  journey — it just cannot take the credit for something that had already\n  happened. First-click is unaffected: the first visit never changes.\n\n  Existing journeys keep their current answer until you press **Reprocess**,\n  which works out when each stored enquiry happened and gives the credit back.\n  It is deliberately cautious: where the moment cannot be established safely,\n  the journey is left exactly as it is rather than guessed at.\n\n- **Background videos no longer count as watched.** A muted, looping video\n  behind a page heading plays itself, and each one was reporting a \"Watched\"\n  interaction and then a full set of 25/50/75/100% milestones on every pass of\n  the loop — so a visitor who watched nothing appeared engaged, on every page\n  that had one. A play now counts only when the visitor caused it: they must\n  have interacted with the page, and the player must not be one that starts\n  itself. A video that starts itself becomes countable the moment it is paused\n  and played again, because that second play is the visitor. Covers HTML5\n  video, YouTube and Vimeo.\n\n### Added\n- **A journey shows when the enquiry happened, and which form.** Previously\n  that a visitor had enquired at all was only implied by the journey having been\n  saved — a cross-domain journey simply ended on \"left for <destination>\", with\n  no moment of conversion anywhere on the page. There is now a row for it in\n  the timeline, in sequence with the pages around it, marked \"reported by the\n  destination\" when that is who told us.\n\n  This is what makes the interesting case readable: someone who leaves for the\n  form, does **not** send it, comes back later, sends it, and then keeps\n  browsing. That used to read as two departures and nothing else.\n\n  The enquiry is recorded on both paths — a form on this site and a form on a\n  destination — so the two finally agree. It is held separately from the\n  browsing history, which is what lets it survive: the update beacon replaces\n  the stored journey with whatever the browser is holding, and the browser on\n  this site never sees a form submitted on another domain."
}
