Skip to content

For newsrooms

Every police story has a block. SooLedger gives a news site the block’s record to put beside the story: a card with the last 90 days, the eight-week trend and how many businesses are reporting there, a link to the full page, and a one-line way for a reader’s business to add what happened to them. The same widgets carry the city funnel, the council tracker and a weekly column. Server-rendered HTML, no script, no cookies, cached ten minutes, framed only from the sites on the allowlist.

How to use them

  1. Take a snippet below, or build the address: https://soo.communityledger.ca/embed/block?street=Queen Street East&number=234 resolves a street and civic number through the city index (the address is not kept; only the hundred-block is shown), /embed/block/<blockId> takes the id from a block page, and a street alone lists its blocks.
  2. Parameters: window=30d|90d|365d, theme=light|dark, format=page|fragment (json on the weekly column), and utm_source=<your site>, which every link out of the widget carries with utm_medium=embed, so your traffic to the record shows up under your name.
  3. Framing is allowed only from the news sites on the allowlist (today: sootoday.com and villagemedia.ca sites) and from this site. To be added, email hello@communityledger.ca with the origin. The fragment form has no such limit: fetch it on your server and print it into the page.
  4. Attribution is part of the widget and stays: “Source: SooLedger by Community Ledger” with the link to the methodology, and the capture-rate caveat. Do not remove or cover them; you may restyle the rest.

Block card

One hundred-block: the window funnel, an eight-week sparkline, the coverage indicator (how many businesses and partners report there), and the two links: report an incident, see the full record.

Paste as an iframe (no script)
<iframe src="https://soo.communityledger.ca/embed/block/ssm%3Abay-st%3A200?utm_source=yoursite" title="Block card — SooLedger" width="100%" height="300" style="border:0;max-width:100%" loading="lazy" referrerpolicy="strict-origin-when-cross-origin"></iframe>
Or include the fragment server-side
GET https://soo.communityledger.ca/embed/block/ssm%3Abay-st%3A200?utm_source=yoursite&format=fragment
→ one <div class="sl-embed"> with its own styles; cache it for ten minutes

City funnel

Sault Ste. Marie over the window: incidents, arrests, charges and outcomes so far, a twelve-week strip and the change against the window before.

Paste as an iframe (no script)
<iframe src="https://soo.communityledger.ca/embed/city?window=90d&utm_source=yoursite" title="City funnel — SooLedger" width="100%" height="270" style="border:0;max-width:100%" loading="lazy" referrerpolicy="strict-origin-when-cross-origin"></iframe>
Or include the fragment server-side
GET https://soo.communityledger.ca/embed/city?window=90d&utm_source=yoursite&format=fragment
→ one <div class="sl-embed"> with its own styles; cache it for ten minutes

Council tracker

The latest three council items the disorder gate published, each with the agenda or minutes it was read from and whether a promised follow-up is overdue.

Paste as an iframe (no script)
<iframe src="https://soo.communityledger.ca/embed/council?utm_source=yoursite" title="Council tracker — SooLedger" width="100%" height="360" style="border:0;max-width:100%" loading="lazy" referrerpolicy="strict-origin-when-cross-origin"></iframe>
Or include the fragment server-side
GET https://soo.communityledger.ca/embed/council?utm_source=yoursite&format=fragment
→ one <div class="sl-embed"> with its own styles; cache it for ten minutes

This week on the record

The weekly column: a headline, three short paragraphs of numbers (totals against the week before, by area, by type) and a table of the busiest blocks with their coverage. Article-ready as a fragment; a JSON shape for a CMS with ?format=json.

Paste as an iframe (no script)
<iframe src="https://soo.communityledger.ca/embed/weekly?utm_source=yoursite" title="This week on the record — SooLedger" width="100%" height="520" style="border:0;max-width:100%" loading="lazy" referrerpolicy="strict-origin-when-cross-origin"></iframe>
Or include the fragment server-side
GET https://soo.communityledger.ca/embed/weekly?utm_source=yoursite&format=fragment
→ one <div class="sl-embed"> with its own styles; cache it for ten minutes

The weekly column as data

GET https://soo.communityledger.ca/embed/weekly?format=json&utm_source=yoursite answers with headline, paragraphs (three strings), totals, prior, zones, types, topBlocks (id, display, area, incidents, arrests, contributors bucket, url), councilItems, links, attribution, caveat and html (the same column as a headline and a body fragment). Every number is the public, k-suppressed one the site shows: contributors appear as 0 / 1 / 2 / 3+, never as who.

Monthly rollups are also available as CSV at /v1/cities/ssm/rollups.csv; the whole public API is documented at /v1/openapi.json. See data and licensing.

Privacy inside the frame

A widget sets no cookie, loads no script and no analytics, and sends nothing about the reader anywhere. The only thing recorded is a count of loads per referring site per day, so the operator can see where the record is read. The content is the same block-level public record as the rest of the site: no names, no addresses, no faces, no business names.