{
  "slug": "bw-lead-ai",
  "name": "BW Lead Attribution Intelligence",
  "version": "1.2.3",
  "download_url": "https://plugins.bowden.works/wp-content/uploads/plugin-updates/bw-lead-ai-1.2.3.zip",
  "download_hash": "sha256:87beac7fbd37060bffc9d4a17a86ba52a82d2bcaad0c73b11875466278ed96b1",
  "download_size": 247351,
  "requires": "6.0",
  "tested": "",
  "requires_php": "7.4",
  "last_updated": "2026-07-27",
  "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.2.3] - 2026-07-27\n\n### Fixed\n- **Summary values displayed as unreadable HTML in Gravity Forms entries.** A\n  submitted Summary showed up as one run-on block full of literal `<br />` text\n  instead of a formatted, line-broken summary. Notification emails using\n  `{all_fields}` had the same problem.\n\n  Cause: the field never implemented `get_value_entry_detail()`, so it inherited\n  `GF_Field`'s default, which does the escaping in the wrong order —\n\n  ```php\n  $value  = nl2br( (string) $value );   // \\n       ->  <br />\n  $return = esc_html( $value );         // <br />   ->  &lt;br /&gt;\n  ```\n\n  — inserting the tags and *then* escaping them. `GF_Field_Textarea` gets the order\n  right, and every other core field type is single-line, so nothing in Gravity Forms\n  itself trips over it. The field now implements the method and mirrors the textarea\n  behaviour: escape first, then break.\n\n  Affects only the two Summary data points; single-line points such as Channel and\n  Source / Medium rendered correctly all along, since `nl2br` on a string with no\n  newlines does nothing. This bug has been present since the field was introduced in\n  1.1.0 and is unrelated to the 1.2.2 markup change.\n\n  Plain-text notifications and CSV exports are unchanged — they receive the raw\n  value, where real newlines are what's wanted. Entry values are still fully escaped,\n  so there is no change to how untrusted content is handled."
}
