Developer docs
Imports and migration
Bring existing proof into YouSaid without losing where it came from. Imports keep the original record, and they never pretend another platform's permission carries over.
What stays true for every import
- The raw source row is kept verbatim with its sha256, next to an immutable original version.
- Imported items start with consent state unknown_not_portable. Consent recorded elsewhere is kept as evidence only, and an imported consent record can never authorize a placement. An imported item becomes publishable only after the customer approves its exact wording in YouSaid; you send that request from the item.
- Each source has a built-in policy: whether display, caching, screenshots and paid republishing are allowed, and whether attribution and a link back are required. Workspace overrides can only make a policy stricter.
- An import is started by a person who acknowledges the source policy notice. Agents and service keys cannot start one.
Files: CSV, JSON, Senja and Testimonial.to
In the workspace, open the Proof Library and start an import. Choose a format (csv, json, senja or testimonial_to). Senja and Testimonial.to exports may be CSV or JSON; YouSaid maps their column names for you.
- Preview is a dry run. It shows the detected column mapping, row counts by status, media, source and imported consent claims, and the first 200 rows. Nothing is written.
- Adjust the mapping if needed, choose how to treat duplicates (skip, or import and flag), and start the job.
- The job imports in small slices and keeps one reconciliation record per source row: imported, skipped, failed or needs review, each with a reason and a suggested fix. A skipped duplicate can still be imported from the report; nothing is merged automatically.
Limits: 2,000 rows and 5 MB per job. Split larger files.
| Field | Notes |
|---|---|
| text, title | The testimonial. A row needs text or at least one media URL. |
| authorName, authorEmail, authorTitle, company, authorUrl, avatarUrl | Who said it. Shown publicly only as the customer later allows. |
| rating | Numeric rating, kept with the item. |
| sourceUrl, sourcePlatform, externalId, date, locale | Provenance. externalId and sourceUrl help find duplicates. |
| videoUrl, imageUrl, audioUrl, mediaChecksum | Media links are recorded, not downloaded; the preview counts them as missing media. A bulk-imported item cannot have a file attached later, so bring video, audio or images in as manual items with the file. A sha256 mediaChecksum finds duplicate media. |
| consentStatus | What the other platform said about approval. Recorded as a claim, never as portable consent. |
| tags, type, customerId, accountId, transcript | Optional organization and linkage fields. |
Single items: manual, URL and browser extension
- Manual: paste a testimonial you already hold, with its source details, and attach up to 10 original media files.
- URL-assisted: X, LinkedIn, G2, Capterra, Trustpilot, Google reviews, Product Hunt, App Store, Google Play, YouTube, Reddit, Yelp or any web page. Yelp is assisted only: its terms rule out scraping and storing its API excerpts, so screenshots are refused and the reviewer approves their words in YouSaid before anything is shown. You paste the text and the link; YouSaid does not fetch the page. You record a rights basis (for example the platform's display terms, or permission you obtained).
- Browser extension: select text on the page you are reading and capture it with its URL and capture time as private evidence. It shows the source's policy notices before anything is sent. Screenshots are offered only where the source allows them, and are always refused for X and LinkedIn. The extension uses a short-lived, revocable token (12 hours by default, at most 72) that can only create import drafts, upload their screenshots and read source notices.
Brand Monitor and auto-sync
Brand Monitor reads only official APIs or publisher feeds: RSS or Atom, Reddit, Hacker News, YouTube, G2 and Trustpilot. Capterra, X and LinkedIn are never polled or scraped. Mentions stay private until someone imports them as evidence or asks the author for permission. For linked sources that support it, auto-sync checks once a day whether the original was edited or removed and flags the proof when it was. Each connector keeps mention data only for its source's retention window.
Review sources import reviews of your own app and business through each store's official API or feed: the Apple App Store (Apple's public customer reviews feed for one country, or the App Store Connect API with your own key), Google Play (the Play Developer API with your own service account; Google lists only reviews from the last 7 days, so it runs daily) and Google Business Profile (the Business Profile API with your business's own OAuth refresh token, once Google has approved API access for your project). Credentials are stored encrypted for your workspace. Reviews arrive in the Brand Monitor inbox as private evidence with their source, link and rating; consent is never assumed, and auto-sync flags reviews that were edited or removed.
Moving from another tool
- Export everything from the other tool, including media files if it offers them.
- Run a preview for each file and keep the report. Every row must end up imported, skipped with a reason, or failed with a reason.
- For stories whose value is in the media, add them as manual items with the original file attached, and skip those rows in the file import.
- Send re-approval requests to the customers whose stories you plan to show. Until a customer approves in YouSaid, the item cannot appear in any placement.
- Rebuild walls and widgets as placements, preview them, then swap the embed code.