Privacy Policy
Policy revised:
1. Introduction
TeamShotsPro is responsible for the personal information described in this policy. In this policy, “we,” “our,” and “us” refer to TeamShotsPro. This policy covers teamshotspro.com and its associated web app (the “Services”).
This policy explains what personal information the Services handle, why we handle it, which providers may receive it, how long it may remain, and how to contact us about it.
2. Information We Collect
A. Account & Team Data
Identity: Name, email address, and language preference. If you choose to set a password, it is stored in hashed form. Most accounts use passwordless authentication (one-time codes or magic links) and do not store a password.
Team Data: For teamshotspro.com users, we store team names, roles, and member email addresses managed by Team Admins.
B. Face & Image Data
Account-based headshots: A new selfie is uploaded and analyzed only after you select “Use this photo” on the review screen.
Input Data: We collect the photos (“Selfies”) you upload for the purpose of generating professional headshots.
Process Data: Our systems and third-party AI providers analyze facial and visual features in your uploads to perform safety checks and create the requested result. We do not train a custom face model for your account. Provider handling, including any retention or model-improvement setting, is governed by the provider and configuration used for the request.
Output Data: We store the resulting AI-generated images. All generated images are AI-created and are not real photographs.
Image Controls: You can delete individual selfies and generated images. Direct individual users can delete all their images in account settings. For an invited team member, the Team Admin controls bulk deletion and handles requests to remove all of that member's images.
Content Moderation: Uploaded photos may be automatically scanned to detect and reject prohibited content. A rejected image may already have been uploaded or temporarily retained before the check completes.
C. Outfit Capture Browser Extension
Explicit capture: Image capture happens only when you right-click an image and choose the extension’s outfit-capture command. The extension retrieves those image bytes and sends them over HTTPS to our Service so you can use the selected outfit as a clothing reference in the web app.
Source URL: The source image URL is held in trusted browser session storage for a ten-minute retry window for Portreya / TeamShotsPro, or fifteen minutes for personal Fashioneera captures. It is not sent to our backend, logged by our Service, or used for analytics. Successful handoff clears it; an expired entry is removed at the next extension check or when the browser session ends.
Local extension data: A limited upload credential, its expiry, and a random installation identifier remain in trusted local extension storage. Web pages and content scripts cannot read this credential. When you connect, the installation identifier is also sent to our server. We store it with your account, brand and extension identifiers, a hash of the credential, and expiry, revocation and last-use information to manage the connection. We use this data only to connect the extension and upload an explicitly selected outfit image, consistent with Chrome Web Store Limited Use requirements.
Extension installation handoff: Portreya and Fashioneera installation pages can send a requested destination, and an optional shop activation code, to the Portreya extension. The website stores this handoff locally for up to 24 hours; expired entries are removed when checked. Shop invitation links carry the code in the URL fragment, which the installation page removes immediately. The extension stores the selected mode and any pending confirmation in protected local browser storage. A different saved mode requires your confirmation. You can change mode or forget the shop in the extension.
Personal Fashioneera account captures: Connecting this mode authorizes outfit uploads only. The extension cannot read your saved selfies, manage payments or start a paid generation. The website approves a public connection challenge; the private proof and upload credential remain in trusted extension storage. Our server stores the credential hash, account/session binding and connection metadata. A connection expires within 30 days, or earlier when its parent session expires or is revoked. You can disconnect it in the extension or your account’s extension page.
Temporary Fashioneera outfit inbox: Selected outfit image bytes are temporarily stored in our private application database, accessible only to the connected account, for up to 15 minutes. Expired bytes are removed by the cleanup worker; a cleanup outage can delay physical removal but not extend access. Small quota and retry records remain until one day after capture expiry, and connection records until seven days after connection expiry once no captures reference them. Account deletion or a restore erasure replay scrubs image bytes and revokes access. Backups follow their normal retention lifecycle. Opening the image does not send it to an AI provider or start generation; when you explicitly start a try-on, the existing Fashioneera processing and photo-retention rules apply. The website temporarily keeps the selected outfit in this tab’s browser draft so you can review it and continue through sign-in or checkout.
Portreya / TeamShotsPro account outfit retention and deletion: A captured outfit is stored by our hosting and storage provider as a person-owned account Asset for as long as the account exists. During the web-app handoff, the selected image is sent to Google Cloud AI to identify clothing and colours before the generation step. If you then start a generation, the image is also processed for that generation. You can request deletion through account erasure or by contacting support under Sections 5, 7, and 9.
D. Financial Data
We use Stripe for payment processing. We do not store your credit card details. We only retain a transaction ID and customer reference number to manage your purchases.
E. Fashioneera virtual try-ons
Photos and processing: Fashioneera works without a Portreya account. When you capture a reference image or upload a person photo, we store the image and process it to prepare the requested preview. Google Gemini analyzes person photos and prepares and checks references; OpenRouter and the selected upstream image provider receive the photos and references needed to render your preview. Analysis may happen before you choose to create a preview. AI previews do not guarantee size, fit or appearance.
Personal free try-ons: When available, you can upload one person photo and an outfit image without an account. The same image-processing providers described above create the result. Photos are not posted publicly. This temporary visit expires one hour after it starts. Creating an account does not save the visit automatically: after seeing the result, you can choose to save the look and, separately, the source photo for future try-ons. Saved photos remain in your account until removed; you can keep several and choose a default. Monthly outfit emails are not enabled by saving a photo or creating an account.
Free-trial abuse prevention: A secure browser cookie identifies a trial browser for up to one year. We store a hash of that identifier and a keyed hash of the network address to apply trial limits; clearing the cookie does not remove network limits. A trial can also be bound to an account. An account identifier can remain in the trial record after account deletion to prevent reusing that same account’s introductory allowance. Cloudflare Turnstile processes browser and connection signals for the security check. Operational trial and cost records are separate from photo storage.
Access and browser storage: The extension keeps your shop activation code and shop settings in trusted local browser storage until you forget or replace them. Our database stores a hash of the activation code, shop details, and visit and processing records. Secret visit links grant access to that visit; phone links grant limited photo-upload access. Keep these links private. We also use a keyed hash of the network address for abuse limits, rather than storing the raw address in the demo database. Our network providers may separately process connection data.
Ending a visit and deletion: End visit removes access immediately and schedules stored photos for deletion. Photos and looks explicitly saved to an account stay there until removed from the account. Invited-shop visits also expire after one hour without a qualifying action; background polling does not extend this period. Photos are held in a private Backblaze B2 bucket in the EU Central region. Deletion removes access to the current object; hidden previous versions become eligible for removal after one day and are then removed by scheduled lifecycle processing. This is not immediate physical erasure of every version. Failed or uncertain storage operations can delay cleanup. Downloaded files remain on your device, and AI providers may retain data under their own terms and request configuration. Operational, security and cost records may remain after photos are deleted.
3. Infrastructure & Data Transfer
We use the providers below to operate the Services. Processing location can vary by product configuration, provider, model, network route, and selected upstream provider.
| Data Type | Provider | Location | Purpose |
|---|---|---|---|
| Hosting & Storage | Hetzner Online GmbH | Germany (EU) | Application hosting, database, and image storage. |
| Private image storage | Backblaze B2 | EU Central (Europe) | Fashioneera demo photos and previews. |
| AI Processing | Google Cloud (Vertex AI) | Configured European region or global endpoint, depending on model | Image analysis and generation. |
| AI Processing | Google Gemini API | Google infrastructure; location may vary | Image analysis and generation. |
| AI Processing | OpenRouter and selected upstream model providers | Location varies by selected provider | Image analysis and generation when that route is selected. |
| AI Processing | WaveSpeedAI | Provider infrastructure; location may vary | Image generation when that route is selected. |
| Network & Security | Cloudflare | Global network | DNS, routing, security, and delivery. |
| Authentication | Google OAuth (when selected) | Google infrastructure; location may vary | Account sign-in. |
| Payments | Stripe | USA/Global | Payment processing. |
| Emails | Resend | USA | Transactional and marketing emails. |
| Product Analytics | PostHog | EU/USA | Usage analytics. |
| Web Analytics | Google Analytics (GA4) | USA | Website traffic and conversion measurement. |
| Error Monitoring | Sentry | USA | Application error tracking and performance monitoring. |
Some providers process data outside your country. The transfer protections and contractual terms that apply depend on the provider, service configuration, and applicable law. Contact us before purchasing if your organization requires a particular processing region or contractual arrangement.
4. Cookies & Tracking
Browser analytics, session recordings and referral-tracking cookies are on by default unless you turn them off in Preferences. “Accept” enables both analytics and referral tracking; Preferences lets you choose them separately. Closing the banner keeps the default settings unless you have saved different preferences. We respect your saved choice on later visits to the same site.
You can change your choice or withdraw permission through Cookie settings. Your preferences are saved on this site for 180 days. Refusing optional tracking does not prevent browsing, sign-in or purchasing. A reader discount can remain available without referral-tracking permission; an affiliate voucher you explicitly enter can still identify the referring partner for that purchase.
We use the following cookies and tracking technologies:
Referral partners and offers: Unless you turn referral tracking off, a referral cookie remembers the partner who referred you for the applicable tracking window. A separate session cookie can keep a selected reader offer available while you browse; it does not itself grant referral-tracking permission. These preferences and cookies are specific to each site.
When a purchase establishes a twelve-month affiliate agreement, we retain a minimal account or company attribution record to credit eligible later purchases to the same partner and preserve the original end date. This server record is separate from the referral cookie: turning off cookies stops new cookie referrals but does not erase an accepted financial agreement. Retention follows the applicable financial record obligations.
Essential Cookies: Session and authentication cookies required for the Service to function (Auth.js).
Product Analytics: We use PostHog to understand how users interact with our Service and improve the user experience.
Web Analytics: We use Google Analytics (GA4) to measure website traffic and conversion performance.
Error Monitoring: We use Sentry to receive application error and performance reports.
Payment: Stripe may use cookies or similar technologies during secure payment processing.
5. Data Retention Policy
For account-based services, uploaded selfies, captured outfits, generated photos, and related account records may remain while your account exists. Fashioneera demo photos follow the visit and deletion rules in Section 2E. AI providers may also retain request or output data under their own service terms and the configuration used for a request. You may request deletion using the contact details in Section 9. We will confirm the scope and status of the request; some operational, security, transaction, backup, or legally required records may remain for longer.
6. Marketing Communications
When you create an account, complete checkout, or sign in for the first time, we may enroll you in tenant-specific marketing email preferences for the brand you are using. Marketing emails may include practical tips, examples, product updates, and occasional offers related to our services.
Opt-Out: You can object to and unsubscribe from direct marketing at any time by clicking the unsubscribe link included in every marketing email, changing your email preferences in your account profile, or contacting us using the details in Section 9. Once you object or unsubscribe, we will stop processing your personal data for direct marketing for that brand.
Service Emails: Onboarding emails help you get started and use your account or purchase. They are enabled automatically and have a separate opt-out in your account email preferences. Turning off marketing emails does not change your onboarding preference, and turning off onboarding does not change your marketing preference. Essential emails, such as one-time login codes, purchase receipts, team invitations, and account security messages, may continue as needed to provide the Service.
Legal Basis: We rely on legitimate interests for service communications and, where permitted, for marketing about our related products and services. Where local law requires consent for marketing, we will use consent as the legal basis.
7. Your Rights
Depending on where you live and the law that applies, you may have the following rights regarding your personal data:
- Access & Export: Request a copy of your photos and personal data we hold about you.
- Rectification: Update or correct inaccurate account information.
- Erasure (“Right to be Forgotten”): Request deletion of your account and all associated data.
- Restriction: Request that we limit how we process your data in certain circumstances.
- Data Portability: Receive your data in a structured, commonly used, machine-readable format.
- Objection: Object to processing of your personal data in certain circumstances.
- Direct Marketing Objection: Object to direct marketing at any time. This right is unconditional, and we will stop processing your personal data for direct marketing after you object.
- Withdraw Consent: Where processing is based on consent, withdraw it for future processing.
How to Exercise Your Rights: Contact us using the details in Section 9. We will respond within the period required by applicable law and may ask you to verify your identity before processing a request.
8. Security
We use technical and organizational safeguards intended to reduce unauthorized access, loss, or misuse, including:
- Encryption in Transit: All data transmitted to and from our servers is protected using SSL/TLS encryption.
- Access Controls: Application roles and service credentials limit access to systems and account data.
- Provider Controls: We use the security features made available by our hosting, storage, payment, and AI providers.
While we strive for maximum security, no internet transmission is completely invulnerable. In the event of a data breach affecting your personal data, we will notify you and the relevant authorities as required by law.
9. Contact
For privacy concerns about TeamShotsPro, please contact us at:
- Teams: support@teamshotspro.com
- Portreya and Fashioneera: support@portreya.com
A Data Processing Agreement (DPA) is available on request via our contact page or at support@teamshotspro.com.
See also: Terms of Service