Binds the pair, then signs it
The payload is user plus product, and the signature covers both along with a context string, so a token minted for one surface cannot be replayed against another.
Reporting and agency
0
new database tables needed to make reports shareable
The token carries the (user, product) binding and is verified against a server secret before any read.
Sharing a report without a login is the kind of feature that goes wrong quietly. The obvious implementation puts a product id in a URL and fetches by it, and then someone changes a digit and reads a stranger's audit. We had one constraint that ruled that out from the start: every query in the report is user-scoped in SQL, so a handler with only a product id cannot fetch anything at all.
So the link carries the missing half. The token encodes the user and product together and is signed with a server secret; the public handler verifies the signature, then reads through the same user-scoped queries a logged-in session would use.
Where it lives: The share button on any report. Links live under /s/.
The payload is user plus product, and the signature covers both along with a context string, so a token minted for one surface cannot be replayed against another.
After verification the handler calls the same store methods with the bound user id. There is no second, looser read path to get wrong.
A signed token is self-describing, so there is no table of live links to keep consistent and nothing to clean up.
Shareable Opportunity Reports. One stable link per product, on every plan.
| Basic | Growth | Agency |
|---|---|---|
| 1 (one per product) | 3 (one per product) | 10 (one per client) |
Read the full plan comparison.
Not realistically. Guessing means producing a valid HMAC-SHA256 signature without the secret.
Not on its own. Rotating the server signing secret invalidates all links at once, which is the only revocation available today. If per-link expiry matters to you, it is worth asking about before you buy.
No. The token binds one product, and every query behind it is scoped to that pair.
Opportunity Report
The whole picture for one product on one page, shareable with a prospect or a client who has no login.
Reporting and agencyMulti-product workspace
One account, many products: separate question libraries, separate citation corpora, separate reports, one bill.
Reporting and agencyOutreach drafts
The sales side: drafted emails carrying a real report, held in a review queue, sent on a paced loop with unsubscribe handling.
Start with the free visibility check to see whether the engines name you today, then run the scan that shows which pages they used instead.