Not_Foreplay Capture — Privacy Policy
Not_Foreplay Capture is an internal, invite-only tool. It is useless without an existing Not_Foreplay workspace and a capture token issued from it, and it is distributed unlisted to one team.
Single purpose
Save ad creative that your workspace is authorized to capture into that workspace's Not_Foreplay account, one ad at a time, started by you.
What is stored on your device
One settings object in chrome.storage.local, under the key nf.settings.v1:
| Field | What it is |
|---|---|
baseUrl | the Not_Foreplay app you paired with |
captureToken | your capture credential, issued by that app |
workspaceId, brandId | where captures are filed |
authorizedOrigins | the sites your workspace has authorized |
Local storage, deliberately not Chrome's synced storage: a synced token would be replicated through your Google account to every machine you sign into, silently widening where a workspace credential exists. Unpairing deletes the token from the device.
What is read from the page
Only the page's DOM, and only after you click the extension on a site your workspace has
authorized. Specifically <meta property="og:…"> tags,
<script type="application/ld+json"> contents, and data-nf-*
attributes, plus the src, href and text of the ad element those
identify.
What is sent, and only when you confirm a capture
To the Not_Foreplay app you configured:
- the ad details you reviewed — advertiser, platform, headline, body, call to action, landing-page URL
capturedFromUrl— the address of the page you captured from- your workspace and brand identifiers
- your capture token, as an
Authorization: Bearerheader - the media file's name, byte size and declared type
To object storage (Cloudflare R2):
- the ad's media file itself, uploaded directly by your browser to a short-lived pre-signed URL. The file's bytes never pass through the Not_Foreplay app server.
Nothing is sent before you press the capture button. A cancelled or unconfirmed extraction transmits nothing.
About capturedFromUrl
This is one URL — the page you deliberately chose to capture — recorded as the ad's provenance so your workspace knows where a creative came from. It is not a browsing log, and no other URL you visit is recorded or transmitted. We state this explicitly rather than relying on a category argument, because a disclosure that survives on a technicality is not a disclosure.
Permissions, and why each exists
| Permission | Why |
|---|---|
activeTab | Read the ad from the page you are on, only after you click the extension. Grants nothing until that click, and nothing for other tabs. |
scripting | Inject the extraction script into that one tab. There is no automatic content script, so nothing runs on any page by itself. |
storage | Keep your pairing settings and capture token on this device. |
| Site access | Requested per origin, at the moment it is needed, never held for all sites. Two grants exist: the app URL you paired with, and the media host of an ad you are capturing. HTTPS only. |
The extension holds no permanent site permissions. Chrome's own prompt wording for a site grant — “read and change your data on …” — is the same string for any site access; this extension uses that access solely to download the media file you confirmed.
What this extension does not do
- No analytics and no telemetry of any kind — no usage reporting, no error reporting, no third-party SDK.
- No DOM snapshots. Page HTML is never captured or sent.
- No cookie access. No cookie API is used and
document.cookieis never read. Your browser attaches its own cookies when downloading the media file, exactly as it would for an image on the page, but the extension never reads, stores or transmits any cookie value. - No remote code. Nothing is fetched and executed. Its content security policy restricts scripts to the extension's own files.
- No browsing history, bookmarks, downloads, network interception, or screenshots.
- No access to page JavaScript. Extraction runs in Chrome's isolated world, which shares the page's DOM but not its script environment.
Surfaces that cannot be captured
Third-party ad libraries — Meta Ad Library, Google Ads Transparency Center, and LinkedIn's and TikTok's ad-library surfaces — cannot be captured with this extension. Their terms do not permit programmatic capture, and owning the advertised content does not override a platform's restriction on access. This is enforced on the Not_Foreplay server, not only in the extension.
Data sharing and retention
Captured ads are stored in your own Not_Foreplay workspace and are visible only to that workspace. Nothing is sold, and nothing is shared with third parties for advertising or analytics. Retention follows your workspace's own data, which your workspace administrator controls.
Privacy questions
Contact christianj@phoscreative.com.